(function(B,C){B[C]=B[C].replace(/\bno-js\b/,'js')
  var e=document.createElement("div");
  e.innerHTML="<svg></svg>";
  if ( e.firstChild && "namespaceURI" in e.firstChild && e.firstChild.namespaceURI == 'http://www.w3.org/2000/svg' ){
	B[C]=B[C].replace(/no-svg/,'svg');
  }
}(document.documentElement,'className'));

//  Common Utilities
function $(element) {
	if (arguments.length > 1) {
		for (var i = 0, elements = [], length = arguments.length; i < length; i++)
			elements.push($(arguments[i]));
		return elements;
	}
	if ( typeof element == "string" )
		return document.getElementById(element);
	return element;
}
function testHasAtribute( name, tag ) {
	if ( ! tag )		tag = 'div';
	var div = document.createElement(tag);
	if ( div[name] ) return true;
	return false;
}
var Util = {		// Common Utilities for Manulapating Display, Classes, and Events
 visible: function(element) {
	return $(element).style.display != 'none';
  },
 show: function(element) {
	element = $(element);
	element.style.display = '';
	return true;
 },
 hide: function(element) {
	element = $(element);
	element.style.display = 'none';
	return false;
 },
 toggle: function(element) {
 	if (!(element = $(element))) return false;
    if ( Util.visible(element))
		Util.hide(element);
	else
		Util.show(element);
 },
}
if ( testHasAtribute('classList') ) { //   modern Browser
 Util.hasClass = function(element, className) {
 	if (!(element = $(element))) return false;
	return element.classList.contains( className );
 }
 Util.addClass = function(element, className) {
	if (!(element = $(element))) return;
	element.classList.add( className );
 }
 Util.removeClass = function(element, className) {
	if (!(element = $(element))) return;
	element.classList.remove( className );
 }
 Util.toggleClass = function(element, className) {
	if (!(element = $(element))) return;
	element.classList.toggle( className );
 }
} else {		// old Browser
 Util.hasClass = function(element, className) {
	if (!(element = $(element))) return false;	// invalid
	var elementClassName = element.className;
	return (elementClassName.length > 0 && (elementClassName == className ||
		new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
 }
 Util.addClass = function(element, className) {
	if (!(element = $(element))) return;
	if (!Util.hasClass(element, className))
		element.className += (element.className ? ' ' : '') + className;
 }
 Util.removeClass = function(element, className) {
	if (!(element = $(element))) return;
	element.className = element.className.replace(
		new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ');
	element.className = element.className.replace(/^\s+/, '').replace(/\s+$/, '');
 }
 Util.toggleClass = function(element, className) {
	if (!(element = $(element))) return;
	if ( Util.hasClass(element, className) )
		Util.removeClass(element, className);
	else
		Util.addClass(element, className);
 }
}
	
/*
function getElementsByClass(element, class) {
    var classElements = [];
    var i;
    if (! element = $(element) ) {
    	element = document
    }
    if (node.getElementsByClassName) {
    	var tempCollection = element.getElementsByClassName(theClass);
        for (i = 0; i < tempCollection.length ; i++) {
    		classElements.push(tempCollection[i])
    	}
    }
    else {
    	var els = element.getElementsByTagName("*");
    	var elsLen = els.length;
    	var pattern = new RegExp("(^|\\s)"+theClass+"(\\s|$)");
    	for (i = 0; i < elsLen; i++) {
    		if ( pattern.test(els[i].className) ) {
    			classElements.push(els[i]);
    		}
    	}
    }
    return classElements;
};
*/
// W3C DOM 2 Events model
if (document.addEventListener) {
 Util.addEventListener = function(element, type, listener) {
	if (element && element.nodeName || element === window) {
		element.addEventListener(type, listener, false);
	} else if (element && element.length) {
		for (var i = 0; i < element.length; i++) {
			Util.addEventListener(element[i], type, listener);
		}
	}
 };
// Util.removeEventListner is not included - if Needed copy from simply Javascript book
 Util.preventDefault = function(event){
	event.preventDefault();
 };
 Util.stopPropagation = function(event){
	event.stopPropagation();
 };
}
// Internet Explorer Events model
else if (document.attachEvent){
 Util.addEventListener = function(element, type, listener) {
	if (element && element.nodeName || element === window) {
			// listener2 calls listener as a method of target - passing the event
		var listener2 = function(){
			var event = window.event;
			listener.call(target, event);
		};
		element.attachEvent("on" + type, listener2);
	} else if (element && element.length) {
		for (var i = 0; i < element.length; i++) {
			Util.addEventListener(element[i], type, listener);
		}
	}
 };
// Util.removeEventListner is not included - if Needed copy from simply Javascript book - Long mess
 Util.preventDefault = function(event){
	event.returnValue = false;
 };
 Util.stopPropagation = function(event){
	event.cancelBubble = true;
 };
}

var oldDisp = null;	  								 // Display popup information
function setDisp( nId ){
	if ( oldDisp && oldDisp.style ) {
		oldDisp.style.display = '';
		oldDisp=null;
	}
	if ( nId ) {
		nId.onmouseout = clearDisp;
		oldDisp = nId.firstChild;
		while ( oldDisp.nodeType == '3' )	oldDisp = oldDisp.nextSibling;	// skip text nodes
		oldDisp = oldDisp.nextSibling;				// second item is controlled
		while ( oldDisp.nodeType == '3' )	oldDisp = oldDisp.nextSibling;	// skip text nodes
		oldDisp.style.display = 'block';
	}
}
function clearDisp(){
	if ( oldDisp && oldDisp.style ) {
		oldDisp.style.display = '';
		oldDisp=null;
	}
}

function toggleDisp( ctl ){
	if (!document.all && !document.getElementById ) return;
	if ( typeof ctl == "string" ) {
		ctl = document.all ? document.all[ctl] : document.getElementById(ctl);
	}
	if (ctl.style.display == 'none'){
		ctl.style.display = '';
	}else{
		ctl.style.display = 'none';
	}
} 


var toggleMenuList = "content";
function toggleMenu( ctl, state ){
	if ( !document.all && !document.getElementById ) return;	   // Browser too Dumb
	if ( typeof ctl == "string" ) 
		ctl = document.all ? document.all[ctl] : document.getElementById(ctl);
	if ( !state )
		state = ctl.firstChild.substringData(0,4);
	if ( typeof toggleMenuList == "string" ) 
		toggleMenuList = document.all ? document.all[toggleMenuList] : document.getElementById(toggleMenuList);
	if ( toggleMenuList )
		toggleMenuList.className = state+'Menu';

	state = (state == "Hide") ? "Show" : "Hide";	// next display
	ctl.firstChild.replaceData(0,4, state );
}


function blinkMe( ctl, cnt ) {
	if ( !document.all && !document.getElementById ) return;
	if ( typeof ctl == "string" ) {
		target = document.all ? document.all[ctl] : document.getElementById(ctl);
		count = cnt;
	}
	if (target.style.visibility == 'hidden'){
		target.style.visibility = '';
		if (count == 1 )		return;
		setTimeout("blinkMe()", 1000 );
		if ( count > 1 )		count--;
	}else{
		target.style.visibility = 'hidden';
		setTimeout("blinkMe()", 500 );
	}
} 


var marqueeCtl;
var marqueBaseColor="#fff";
var marqueHighColor="#000";

function marqueeSetUp( type ) {
	if (!document.all && !document.getElementById ) return;	   // Browser too Dumb
	marqueeCtl = document.all ? document.all['marquee'] : document.getElementById('marquee');
	var msg = marqueeCtl.innerHTML;
	var oldText = marqueeCtl.removeChild( marqueeCtl.firstChild );
	marqueeCtl.type = type;
	var ctl = document.createElement( "img" );
	ctl.src = "/images/marqueeStop.jpg";
	ctl.altSrc = "/images/marqueePlay.jpg";
	ctl.align="left";
	ctl.height = "20";
	ctl.style.margin = "0px 10px";
	ctl.title= "Stop/Play the animation"
	ctl.alt = "animation control";
	ctl.onclick = function(){var tmp=this.src; this.src=this.altSrc; this.altSrc=tmp;
			if (tmp.indexOf("Stop")>-1) this.target.stop(); else this.target.start();};
	marqueeCtl.appendChild( ctl );
	if ( type == 0 ) {
		var marq = document.createElement( "marquee" );
		marq.appendChild( oldText );
		marq.setAttribute("height", 15);
		marq.setAttribute("scrollamount", 2);
		ctl.target = marq;
		marqueeCtl.appendChild( marq );
		return;
	}

	ctl.target = marqueeCtl;
	marqueeCtl.stop=function(){clearTimeout(marqueeCtl.timeout);};
	marqueeCtl.start=neon;
	for ( var ix=0; ix<msg.length; ix++ ) {
		var span = document.createElement( "span" );
		span.appendChild( document.createTextNode( msg.charAt(ix)));
		marqueeCtl.appendChild( span );
	}
	neon();
}
var neonPos=0;
function neon(){
	if ( neonPos==0 ){	//Change all letters to base color
		for ( var ix=0; ix<marqueeCtl.childNodes.length; ix++) {
			marqueeCtl.childNodes[ ix ].style.color=marqueBaseColor;
		}
	}
//cycle through and change individual letters to neon color
	marqueeCtl.childNodes[ neonPos ].style.color = marqueHighColor;

	if ( neonPos < marqueeCtl.childNodes.length-1 ) {
		neonPos++;
		marqueeCtl.timeout = setTimeout("neon()",200);
	} else {
		neonPos=0;
		marqueeCtl.timeout = setTimeout("neon()",5000);
	}
}

function highlightAccessKeys() {
    if (!document.getElementsByTagName) return;    //don't do anything in old browsers
    var tagNames = new Array('A', 'BUTTON');
    for (var j = 0; j < tagNames.length; j++) {
        var elements = document.getElementsByTagName(tagNames[j]);
        for (var i = 0; i < elements.length; i++) {
            if (elements[i].accessKey) {
                highlightAccessKey(elements[i], elements[i].accessKey);
            }
        }
    }
}
// Highlights the specified character in the specified element
function highlightAccessKey(e, accessKey) {
    if (e.hasChildNodes()) {
        var childNode, txt;
        
        //find the first text node that contains the access character
        for (var i = 0; i < e.childNodes.length; i++) {
            txt = e.childNodes[i].nodeValue;
            if (e.childNodes[i].nodeType == 3 &&
                txt.toLowerCase().indexOf(accessKey.toLowerCase()) != -1) {
            
                childNode = e.childNodes[i];
                break;
            }
        }
        
        if (!childNode) {
            //access character was not found
            return;
        }

        var pos = txt.toLowerCase().indexOf(accessKey.toLowerCase());
        var span = document.createElement('SPAN');
        var spanText = document.createTextNode(txt.substr(pos, 1));
        span.className = 'accesskey';
        span.appendChild(spanText);

        //the text before the access key
        var text1 = document.createTextNode(txt.substr(0, pos));
        //the text after the access key
        var text2 = document.createTextNode(txt.substr(pos+1));
        
        if (text1.length > 0) e.insertBefore(text1, childNode);
        e.insertBefore(span, childNode);
        if (text2.length > 0) e.insertBefore(text2, childNode);

        e.removeChild(childNode);
    }
}

function fixContentHeight(){
	if ( !document.all && !document.getElementById ) return;	   // Browser too Dumb	
	var item = document.all ? document.all['mainMenu'] : document.getElementById('mainMenu');
	var hgt = item.offsetHeight;
	item = document.all ? document.all['content'] : document.getElementById('content');
	if ( hgt > item.offsetHeight ) {
		item.style.height = hgt+'px';
	}
}

////////////////////////////////////////////////////////////////////////////////
//   Web Page Comment Functions
////////////////////////////////////////////////////////////////////////////////
function genFeedbackForm( ctl ){	// Generate feedback form following this control
	if ( ctl.cForm ) {
		toggleDisp( ctl.cForm, ctl.cForm.uName );
		return false;
	}
	cForm = document.createElement( 'form' );
	cForm.id = "feedbackForm";	cForm.name = "feedbackForm";
	tStr = "<p>Many pages on our site have a comment button &amp; form like this one.\n";
	tStr+= "If you like or don't like this page or would add/change something about it just let us know.\n";
	tStr+= "Our Website will be updated based on your input!<br /><br />\n";
	tStr+= "<input type=\"text\" class=\"theurl\" readonly=\"readonly\" name=\"url\" title=\"target page name\" />\n";
	tStr+= "<label for=\"webCmtName\">Your Name: <small>(optional)</small>";
	tStr+= "<input type=\"text\" id=\"webCmtName\" name=\"uName\" /></label>\n";
	tStr+= "<label for=\"webCmtEmail\">Email Address: <small>(optional)</small>";
	tStr+= "<input type=\"text\" id=\"webCmtEmail\" name=\"uEmail\" /></label>\n";
	tStr+= "<label for=\"webCmtComment\">Your Comment / Correction:";
	tStr+= "<textarea id=\"webCmtComment\" name=\"comment\" cols=\"40\" rows=\"4\"></textarea></label>\n";
	tStr+= "<input type=\"submit\" value=\"Send my Comment\" name=\"submit\" onclick=\"submitFeedbackForm(this.form); return false;\" />\n";
	tStr+= "</p><p id=\"window_closer\">\n";
	tStr+= "<a href=\"#\" onclick=\"toggleDisp('feedbackForm'); return false;\">Close Window</a></p>\n";
	cForm.innerHTML = tStr;
	cForm.url.value = document.location.pathname;
	ctl.cForm = ctl.parentNode.appendChild( cForm );
	ctl.cForm.uName.focus();
	return false;
}

function submitFeedbackForm( frm ){
	if (frm.comment.value == ''){
		alert("Please be sure to fill in the Comment field.");
		return( false );
    }
	submit_form('/webComt.php',
                '&url=' + frm.url.value +
                '&comment=' + frm.comment.value +
                '&uName=' + frm.uName.value +
                '&uEmail=' + frm.uEmail.value +
                '&resX=' + screen.width + '&resY=' + screen.height +
                '&agent=' + navigator.userAgent);

    frm.comment.value = '';
    frm.uName.value = '';
    frm.uEmail.value = '';
    toggleDisp(frm);
	return false;
} 

function submit_form(theUrl, theValues){
    if (window.XMLHttpRequest) {
        var xmlReq = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        var xmlReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlReq.open("POST", theUrl, true);
    xmlReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    xmlReq.send(theValues);
} 

var M = {  		// Mail and Telephone Hiding and Handling functions
 to: function( user, site, key ) {
	document.write( '<a class="email" href=\"mailto:' + user + '@' + site + '\">' );
	if (key)	document.write( key + '</a>' );
	else		document.write( user + '@' + site + '</a>' );
 },
 com: function( user, site, key ) { M.to( user, site+'.com', key ) },
 net: function( user, site, key ) { M.to( user, site+'.net', key ) },
 org: function( user, site, key ) { M.to( user, site+'.org', key ) },
 edu: function( user, site, key ) { M.to( user, site+'.edu', key ) },
 aol: function( user, key )		{ M.to( user, 'aol.com', key ) },
 bbyra: function( user, key )	{ M.to( user, 'bbyra.org', key ) },
 comcast: function( user, key )	{ M.to( user, 'comcast.net', key ) },
 verizon: function( user, key )	{ M.to( user, 'verizon.net', key ) },

 tel: function( area, exch, num, key ) {
	document.write( '<a class="tel" href=\"tel:+1-' + area + exch + num + '\">' );
	if (key) 	document.write( key + '</a>' );
	else		document.write( area + '-' + exch + '-' + num + '</a>' );
 },

 address: function( street, town, zip, state, box ) {
	if (street)	document.write( '<span class="street-address">' + street + '</span>, ' );
	if (box)	document.write( '<br>PO Box <span class="post-office-box">' + box + '</span>, ' );
	document.write( '<span class="locality">' + town + '</span>, ' );
	if (state)	document.write( '<span class="region">' + state + '</span> ' );
	else		document.write( '<span class="region">NJ</span> ' ); 
	document.write( '<span class="postal-code">' + zip + '</span>' );
 }
};


