// SiteWide JavaScript Document
<!--
window.onload = function(){};
function registerOnload(newFunction){
	var curWinOnload = window.onload;

	if(typeof window.onload != 'function'){
		window.onload = newFunction;
	}
	else{
		window.onload = function(){
			curWinOnload();
			newFunction();
		};
	}
}

//registerOnload(_mainnavitem);
//registerOnload(_subnavitem);
registerOnload(_setNodeTypes);
function _setNodeTypes(){
    var NodeTypes = ['ELEMENT', 'ATTRIBUTE', 'TEXT', 'CDATA_SECTION',
                     'ENTITY_REFERENCE', 'ENTITY', 'PROCESSING_INSTRUCTION',
                     'COMMENT', 'DOCUMENT', 'DOCUMENT_TYPE',
                     'DOCUMENT_FRAGMENT', 'NOTATION'];
    for(var i=0;i<NodeTypes.length;i++){
      window[NodeTypes[i] + '_NODE'] = (i + 1);
    }
}
function _mainnavitem(){
	try {
		var obj = document.getElementById('mainnavigation');
		var elements = obj.getElementsByTagName('a');
		for (var i=0,len=elements.length;i<len;i++) {
			var thisPage = getURL(uri,0);
			var valueMenu = getURL(uri,0,elements[i].href);
			if(valueMenu == thisPage && thisPage != "") {
				elements[i].className = 'active ' + elements[i].className;
			}
		}
	} catch(e) {
		//do nothing	
	}
}

function _subnavitem(){
	try {
		var obj = document.getElementById('subnavigation');
		var elements = obj.getElementsByTagName('a');
		for (var i=0,len=elements.length;i<len;i++) {
			var thisPage = getURL(uri,1,null);
			var valueDir = elements[i].href.substring(0, elements[i].href.lastIndexOf('\/'));
			var valueFile = elements[i].href.substring(valueDir.length+1, elements[i].href.length+1);
			if(valueFile == thisPage) {
				elements[i].className = 'active ' + elements[i].className;
			}
		}	
	} catch(e) {
		//do nothing	
	}
}

function getURL(uri,myreturn,other) {
	if(other != null)
		uri.dir = other.substring(0, location.href.lastIndexOf('\/'));
	else 
		uri.dir = location.href.substring(0, location.href.lastIndexOf('\/'));
	uri.dom = uri.dir; if (uri.dom.substr(0,7) == 'http:\/\/') uri.dom = uri.dom.substr(7);
	uri.path = ''; var pos = uri.dom.indexOf('\/'); if (pos > -1) {uri.path = uri.dom.substr(pos+1); uri.dom = uri.dom.substr(0,pos);}
	uri.page = location.href.substring(uri.dir.length+1, location.href.length+1);
	pos = uri.page.indexOf('?');if (pos > -1) {uri.page = uri.page.substring(0, pos);}
	pos = uri.page.indexOf('#');if (pos > -1) {uri.page = uri.page.substring(0, pos);}
	uri.ext = ''; pos = uri.page.indexOf('.');if (pos > -1) {uri.ext =uri.page.substring(pos+1); uri.page = uri.page.substr(0,pos);}
	uri.file = uri.page;
	if (uri.ext != '') uri.file += '.' + uri.ext;
	if (uri.file == '') uri.page = 'index';
	uri.args = location.search.substr(1).split("?");
	if(myreturn == 1) 
		return uri.page+'.'+uri.ext;
	else
		return uri.path;
}

var uri = new Object();



/*#######################################*/
/*				FONT SIZER				 */
/*#######################################*/
/*registerOnload(_fontSizer.init()); load font sizer */
registerOnload(_fontSizerLoad);
function _fontSizerLoad(){
	_fontSizer.init(null);	
}

origSize = new Array();

var _fontSizer = {
	debug: false,		// Allow alert of tracking values
	enabeled: true,		// Enable the fontsize tool to function single point to disable
	lsElements: new Array("P","H1","H2","H3","TH","UL","LI","A"),	// Array of elements to resize fonts B.0.0.2 enhancement
	lsExlude: 'fsExlude',// Set an exlude font resize class B.0.0.2 enhancement
	maxChange: 3, 		// Max number of increase/decreases in font size
	changeCnt: 1, 		// Track change counts
	defaultSize: '12',	// NA - default font size
	maxSize: '20',		// NA - max font size
	minSize: '8',		// NA - minimum font size
	curSize: null,		// loop container for current size and manipulation
	origSizeCnt: 0,		// Track the item change count for reset value mapping
	echo: '',			// debug value outputs
	activeFunc: null,	// Store the active function that was called
	init: function(call){
			try {
				this.echo='';
				this.activeFunc = call;
				if(this.activeFunc == null) { // Setup Listeners onload
					try {
						Event.add($('fntSizeInc'),'mouseup',function() { _fontSizer.init('add'); });
						Event.add($('fntSizeDec'),'mouseup',function() { _fontSizer.init('dec'); });
						Event.add($('fntSizeReset'),'mouseup',function() { _fontSizer.subSetFunc('get'); });
						if(document.all) {
							$('fntSizeInc').style.cursor = "hand";
							$('fntSizeDec').style.cursor = "hand";
							$('fntSizeReset').style.cursor = "hand";
						} else {
							$('fntSizeInc').style.cursor = "pointer";
							$('fntSizeDec').style.cursor = "pointer";
							$('fntSizeReset').style.cursor = "pointer";
						}
					} catch(e) { 
						//do nothing since the fontSizer interface is not present
					}
					//return; //End
				}
				
				if(this.activeFunc=='add') {
					if(this.changeCnt+1>this.maxChange)
						this.enabeled = false;
					else {
						this.changeCnt++; this.enabeled = true;
					}
				} else if (this.activeFunc=='dec') {
					if(this.changeCnt-1 < 1)
						this.enabeled = false;
					else {
						this.changeCnt--; this.enabeled = true;
					}
				}
				if(this.enabeled) {
					//alert(this.changeCnt);
					this.fontSizerIMG("fontSizer",this.changeCnt);
					//bodyObjs = $('mainContent').childNodes;  // SET THE OUTER MOST ELEMENT OF TEXT TO RESIZE
					bodyObjs = $('mainContent');  // SET THE OUTER MOST ELEMENT OF TEXT TO RESIZE
					
					for(var e=0;e<this.lsElements.length;e++){
						myElementCol = bodyObjs.getElementsByTagName(this.lsElements[e]);
						this.echo += "\n\rTagName: "+this.lsElements[e] + " count: "+myElementCol.length;
						// THE ORIGINAL
						for(var i=0;i<myElementCol.length;i++){
							objColClass = myElementCol[i].className;
							this.echo += "\n\robjColClass: "+objColClass;
							if(myElementCol[i].nodeType == 1 && myElementCol[i].className!=this.lsExlude && myElementCol[i].className!="disclaim" )  // IE 
								this.traverseTree(myElementCol[i])
							// END nodeType
						} // END for loop

					}

					if(this.debug) alert(this.echo);
					
				}
			} catch(e) {
				//do nothing	
			}
		},
	set: function(obj) {
			this.curSize = getStyle(obj.parentNode,'font-size');
			if( this.curSize != 'undefined' && obj.nodeName=="#text" && obj.parentNode.nodeName != "DIV" && obj.parentNode.nodeName != "UL") {
				origSize.push(this.curSize);
				this.echo += "\n\rSET DEFAULT = " + this.curSize;
			}
		},
	get: function(obj) {
			this.curSize = origSize[this.origSizeCnt];
			if( this.curSize != 'undefined' && obj.nodeName=="#text" && obj.parentNode.nodeName != "DIV" && obj.parentNode.nodeName != "UL") {
				//if(obj.parentNode.nodeName == "P" || obj.parentNode.nodeName == "H1"|| obj.parentNode.nodeName == "H2"|| obj.parentNode.nodeName == "H3"){
					var newSize = parseInt((this.curSize.substring(0,this.curSize.length-2))) + 2;
					obj.parentNode.style.fontSize = newSize + this.curSize.substring(this.curSize.length-2,this.curSize.length);
					this.echo += "\n\rRESET TO DEFAULT:: "+this.curSize+" >> Parent = "+obj.parentNode.nodeName+" >> This = "+obj.nodeName;//+" :: nodeValue "+obj.nodeValue;
					this.origSizeCnt++;
				//}
			}
	},
	add: function(obj) {
			//if(this.changeCnt < 3 ) {
				this.curSize = getStyle(obj.parentNode,'font-size');
				if( this.curSize != 'undefined' && obj.nodeName=="#text" && obj.parentNode.nodeName != "DIV" && obj.parentNode.nodeName != "UL") {
					//if(obj.parentNode.nodeName == "P" || obj.parentNode.nodeName == "H1"|| obj.parentNode.nodeName == "H2"|| obj.parentNode.nodeName == "H3"){
						var newSize = parseInt((this.curSize.substring(0,this.curSize.length-2))) + 2;
						obj.parentNode.style.fontSize = newSize + this.curSize.substring(this.curSize.length-2,this.curSize.length);
						obj.parentNode.style.lineHeight = "normal";
						this.echo += "\n\rADD:: "+this.curSize+" >> Parent = "+obj.parentNode.nodeName+" >> This = "+obj.nodeName;//+" :: nodeValue "+obj.nodeValue;
	
						this.origSizeCnt++;
					//}
				} 
			//}
		},
	dec: function(obj) {
			//if(this.changeCnt > 1) {
						
				this.curSize = getStyle(obj.parentNode,'font-size');
				if( this.curSize != 'undefined' && obj.nodeName=="#text" && obj.parentNode.nodeName != "DIV" && obj.parentNode.nodeName != "UL" ) {
					//if(obj.parentNode.nodeName == "P" || obj.parentNode.nodeName == "H1"|| obj.parentNode.nodeName == "H2"|| obj.parentNode.nodeName == "H3"){
						var newSize = parseInt((this.curSize.substring(0,this.curSize.length-2))) - 2;
						obj.parentNode.style.fontSize = newSize + this.curSize.substring(this.curSize.length-2,this.curSize.length);
						this.echo += "\n\rDEC:: "+this.curSize+" >> Parent = "+obj.parentNode.nodeName+" >> This = "+obj.nodeName;//+" :: nodeValue "+obj.nodeValue;
						this.origSizeCnt++;
					//}
				}
				
			//}
		},
	traverseTree: function(tree){
			//thisObj = $(tree);
			var cnt = null;
			if(tree.hasChildNodes() && tree.nodeName != "P") { // Don't process paragraph sub elements
				var nodes = tree.childNodes.length;
				//alert(nodes);
				for(var i=0; i<tree.childNodes.length; i++) {
					if(tree.childNodes[i].nodeName != "A"){
						this.traverseTree(tree.childNodes[i]);
						cnt++;
					}
					this.echo += " :: "+cnt+" :: ";
				} 
			} else if (tree.nodeName == "P") { // Only pass the outer paragraph tag once to limit is change occurance to one
				if(this.activeFunc == 'add') 
					this.add(tree.childNodes[0]);
				else if (this.activeFunc == 'dec')
					this.dec(tree.childNodes[0]);
				else if (this.activeFunc == 'get')
					this.get(tree.childNodes[0]);
				else 
					this.set(tree.childNodes[0]);
			} else if (tree.className == "fsExlude") {
				// Skip the element
			} else {
				if(this.activeFunc == 'add') 
					this.add(tree);
				else if (this.activeFunc == 'dec')
					this.dec(tree);
				else if (this.activeFunc == 'get')
					this.get(tree);
				else 
					this.set(tree);
			}
		},
		subSetFunc: function(val) {
			this.origSizeCnt = 0;
			this.echo += "\n\rOrigSize Length = "+ origSize.length;
			for(i=0;i<origSize.length;i++) {
				this.echo += "\n\rOrigSize["+ i + "] = "+origSize[i];
			}
			this.enabeled = true;
			this.changeCnt = 1;
			this.init(val);
		},
		fontSizerIMG: function(img_name,img_src) {
			var img = "/_images/fontsize_module_control_size"+img_src+".gif";
			document[img_name].src=img;
		}
}

function $(element) {
	var elements = new Array();
	for (var i=0;i<arguments.length;i++) {
		var element = arguments[i];
		if (typeof element == 'string') element = document.getElementById(element);
		if (arguments.length == 1) return element;
		elements.push(element);
	}
	return elements;
}

function getStyle(el,styleProp)
{
	var x = el;
	if (x.currentStyle)
		var y = x.currentStyle['fontSize'];
	else if (window.getComputedStyle)
		try { var y = document.defaultView.getComputedStyle(x,null).getPropertyValue('font-size'); }
		catch(e) {
			//donothing
		}
	return y;
}

var Event = {
	add: function(obj,type,fn) {
		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]);
		} else
		obj.addEventListener(type,fn,false);
	},
	remove: function(obj,type,fn) {
		if (obj.detachEvent) {
			obj.detachEvent('on'+type,obj[type+fn]);
			obj[type+fn] = null;
		} else
		obj.removeEventListener(type,fn,false);
	}
}

 function setBookmark() {

	var bookmarkurl = location.href;
	var text = document.title;

	// if (document.all) {	
	text = text.replace(/:/ ,"");
	text = text.replace(/\*/ ,"");
	text = text.replace(/\?/ ,"");
	text = text.replace(/\\/ ,"");
	text = text.replace(/"/ ,"");
	text = text.replace(/</ ,"");
	text = text.replace(/>/ ,"");
	text = text.replace(/|/ ,"");

	if (window.sidebar) { // Mozilla Firefox Bookmark
		window.sidebar.addPanel(text, bookmarkurl,"");
	} else if( window.external ) { // IE Favorite
		window.external.AddFavorite( bookmarkurl, text); 
	} else if(window.opera && window.print) { // Opera Hotlist
		return true; 
	} 
 }

function openPopup(href, pWidth, pHeight){
	width = (pWidth) ? pWidth : 550;
	height = (pHeight) ? pHeight : 700;
	var popup = window.open(href, "popup", "width="+width+",height="+height+",scrollbars=yes,resizable=yes,menubar=yes,location=no,status=no");
	if(popup.focus)
		popup.focus();
	return false;
}
function selectLink(selObj, taregtself) {
	 a = Math.random();
	 a = 100*a;
	 a = Math.round(a);
	 if(taregtself) {
	 	location.href=selObj.options[selObj.selectedIndex].value
	 } else {
		 popUp = window.open(selObj.options[selObj.selectedIndex].value,'NewWindow'+a,'toolbar=yes,location=yes,directories=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes');	 
	}
	 selObj.selectedIndex=0;
}



function PrintFriendly()
{ 
  var window_setting="toolbar=no,location=no,menubar=no,scrollbars=1,width=750,height=700,resizable=no"; 
  var htmlContent = document.getElementById("body").innerHTML; 
  
  var printPreWin=window.open("","",window_setting); 
   printPreWin.document.open(); 
   printPreWin.document.write('<html><head><title>'+document.title+' (PF)</title>'); 
   printPreWin.document.write('<link href="/_styles/printFriendly.css" rel="stylesheet" type="text/css" media="all" /></head>');
   printPreWin.document.write('<body onLoad="self.print()">');          
   printPreWin.document.write('<div id="PFV"><a href="" onclick="window.print(); return false;" id="print">Print</a> <a href="javascript: window.close()" id="close">[ X ] Close</a></div>'); 
   printPreWin.document.write(htmlContent);          
   printPreWin.document.write('</body></html>'); 
   printPreWin.document.close(); 
   printPreWin.focus(); 
}
//-->
