// EPA's core functions
// 04 April 2008
// In the object literal, to prevent name clashes

var epaCore = {

	printAsIs_Date_URL : function() {
		if(!document.getElementById('footer')) return;
		var footer = document.getElementById('footer');
		
		var printText = document.createElement('p'); printText.id = 'printAsIs';
		var print_function = document.createElement('a'); print_function.href = '#';
		print_function.title = 'Print this page as-is.';
		print_function.onclick = function(){ epaCore.print_preview(); return false; };
		print_function.appendChild(document.createTextNode('Print As-Is') );
		printText.appendChild(print_function);
		footer.appendChild(printText);
	
		var urlText = document.createElement('p'); urlText.id = 'url';
		urlText.appendChild(document.createTextNode(window.location.href));
		footer.insertBefore(urlText,printText);
	
		var x = new Date(document.lastModified); var Modif = new Date(x.toGMTString());
		var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
		var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
		var datetowrite = 'Last updated on ' + days[Modif.getDay()] + ', ' + months[Modif.getMonth()] + ' ' + Modif.getDate() + epaCore.nths(Modif.getDate()) + ', ' + epaCore.takeYear(Modif) + '.';
		var dateText = document.createElement('p'); dateText.id = 'date';
		dateText.appendChild(document.createTextNode(datetowrite));
		footer.insertBefore(dateText, urlText);
	},
	
	print_preview : function() {
		var links = document.getElementsByTagName('link');
		for (var i = 0; i < links.length; i++) {
			var linkHREF = links[i].getAttribute('href');
			if (linkHREF == 'http://www.epa.gov/epafiles/s/print.css') {
				links[i].removeAttribute('href'); links[i].href = 'http://www.epa.gov/epafiles/s/epa.css';
			}
		}
		epaCore.add_preview_message();
	},

	add_preview_message : function() {
		var footer = document.getElementById('footer');
		var printPara = document.createElement('p');
		printPara.innerHTML = '<b>This document will now print as it appears on screen when you use the File &raquo; Print command.</b><br>Use View &raquo; Refresh to return to original state.';
		footer.appendChild(printPara);
	},

	newIcon : function() {	
		if(!document.getElementById('content')) return;
		if(!document.getElementsByTagName('ins')) return;
		var newItem = document.getElementById('content').getElementsByTagName('ins');
		for ( var i = 0; i < newItem.length; i++) {
			if (!newItem[i].getAttribute('datetime')) continue;
			var a = newItem[i].getAttribute('datetime');
			var b = new Array(); b = a.split('-');
			var postedDate = (Date.UTC(b[0],b[1],b[2],0,0,0))/86400000;
			var x = new Date(); var today = new Date(x.toGMTString());
			var now = (Date.UTC(epaCore.takeYear(today),today.getMonth(),today.getDate(),0,0,0))/86400000;
			var timeLeft = postedDate - (now + 1);
			if (timeLeft < 31  &&  timeLeft > 0) {
				var icon = document.createElement('img');
				icon.alt = 'New!'; icon.src = 'http://www.epa.gov/epafiles/images/new-en.gif';
				icon.width = '34'; icon.height = '16';
				newItem[i].appendChild(icon);
			}
		}
	},
	
	takeYear : function(theDate) { var x = theDate.getYear(); var y = x % 100; y += (y < 38) ? 2000 : 1900; return y; },
	nths : function(day) {
		if (day == 1 || day == 21 || day == 31) return 'st'; if (day == 2 || day == 22) return 'nd';
		if (day == 3 || day == 23) return 'rd'; return 'th';
	},
	
	notice : function() {
		var script = document.createElement('script');
		script.type = 'text/javascript'; script.src = 'http://www.epa.gov/epahome/notice.js';
		document.getElementsByTagName('head')[0].appendChild(script);
	},
	
	addClass : function(element,name) {
		if (!element.className) { element.className = name; }
		else { element.className+= ' '; element.className+= name; }
	},
	
	stripeTables : function() {
		if (!document.getElementsByTagName('table')) return;
		var tables = document.getElementsByTagName('table');
		for (var i = 0; i<tables.length; i++) {
			if (tables[i].className.match('zebra')) {
				var myTR = tables[i].getElementsByTagName('tr');
				for (var j=1; j<myTR.length; j=j+2) {
					epaCore.addClass(myTR[j],'rowTint');
				}
			}
		}
	},
	
	trim : function(c) { if (c) c = c.replace(/^\s*|\s*$/,''); return c; },
	hasClass : function(obj, c) { if (!obj || !c) return false; c = epaCore.trim(c); var oldC = epaCore.trim(obj.className); if (c && oldC && oldC.match('\\b'+c+'\\b')) return true; else return false;},
	walk : function(parent, list, contained) { if (!parent || !list || !contained) return false; var num = 0; for (var j in contained) { num = Math.max(num, contained[j]);} for (var i=0; i < parent.childNodes.length; i++) { if (parent.childNodes[i].nodeType != 1) continue; var child = parent.childNodes[i]; if (epaCore.hasClass(child, 'ignore')) continue; else if ( (child.getAttribute('href') || child.getAttribute('cite')) && !child.getAttribute('src') ) { var thisLink = (child.getAttribute('href') ? child.href : child.cite); if (thisLink.match(window.location+'#\w*') || thisLink.match('^javascript:') || thisLink.match('^mailto:') || thisLink == child.innerHTML) continue; var note = document.createElement('sup'); epaCore.addClass(note,'printOnly'); var note_txt; if (contained[thisLink]) { note_txt = document.createTextNode(contained[thisLink]);} else { var li = document.createElement('li'); var li_txt = document.createTextNode(thisLink); li.appendChild(li_txt); list.appendChild(li); num++; contained[thisLink] = num; note_txt = document.createTextNode(num);} note.appendChild(note_txt); parent.insertBefore(note, child.nextSibling); } else { epaCore.walk(child, list, contained);}}},
	footnoteLinks : function(containerID,targetID) { if (!document.getElementById(containerID) || !document.getElementById(targetID)) return false; var container = document.getElementById(containerID); var target = document.getElementById(targetID); var h2 = document.createElement('h2'); epaCore.addClass(h2, 'printOnly'); var h2_txt = document.createTextNode('URLs Provided for your Reference'); h2.appendChild(h2_txt); var ol = document.createElement('ol'); epaCore.addClass(ol, 'printOnly'); var myArr = new Array(); epaCore.walk(container, ol, myArr); if (ol.getElementsByTagName('li').length) { target.appendChild(h2); target.appendChild(ol);} epaCore.addClass(document.getElementsByTagName('html')[0], 'noted'); return true;},
	
	showHideSwap : function(id1,id2) {
		var id1c = document.getElementById(id1); var id2c = document.getElementById(id2);
		if (id1c.className == 'hide' && id2c.className == 'post') {
			id1c.className = 'show'; id2c.className = 'postFrame';
		} else {
			id1c.className = 'hide'; id2c.className = 'post';
		}
	},
	
	articleShare : function(site) {
		var popUpUrl = encodeURIComponent(window.location.href);
		var title = encodeURIComponent(document.title);
		var description = '';
		switch (site) {
			case "slashdot": epaCore.postPopUp('http://slashdot.org/slashdot-it.pl?op=basic&url='+popUpUrl, 'slashdot', 'toolbar=0,status=0,height=600,width=600,scrollbars=yes,resizable=yes');
			break;
			case "facebook": epaCore.postPopUp('http://www.facebook.com/sharer.php?u='+popUpUrl + '&t=' + title, 'facebook', 'toolbar=0,status=0,height=436,width=646,scrollbars=yes,resizable=yes');
			break;
			case "digg": epaCore.postPopUp('http://digg.com/remote-submit?phase=2&url='+popUpUrl + '&title=' + title, 'digg', 'toolbar=0,status=0,height=450,width=650,scrollbars=yes,resizable=yes');
			break;	
			case "delicious": epaCore.postPopUp('http://del.icio.us/post?v=4&noui&jump=close&url='+popUpUrl + '&title=' + title, 'delicious', 'toolbar=0,status=0,height=400,width=700,scrollbars=yes,resizable=no');
			break;			
			case "reddit": epaCore.postPopUp('http://reddit.com/submit?url='+popUpUrl+'&title=' + title, 'reddit', 'toolbar=0,status=0,height=400,width=700,scrollbars=yes,resizable=no');
			break; 
			case "stumble": epaCore.postPopUp('http://www.stumbleupon.com/submit?url='+popUpUrl+'&title=' + title, 'stumble', 'toolbar=0,status=0,height=400,width=700,scrollbars=yes,resizable=no');
			break; 
			case "whatisthis": window.location='http://www.epa.gov/epahome/bookmarks.html';
			break; 
		}
	},
	
	postPopUp :function(url, name, params) { var win = window.open(url, name, params); },
	
	addPostItem : function(parentElement, style, post_link, text) {
		var postItem = document.createElement("li"); postItem.className = style;
		var itemLink = document.createElement("a");
		itemLink.setAttribute("href", post_link); itemLink.innerHTML = text;
		
		postItem.appendChild(itemLink); parentElement.appendChild(postItem);
	},
	
	writePost : function() {
		if(!document.getElementById('footer')) return;
		if (document.getElementById('aara')) return;
		var footer = document.getElementById("footer");
		var parentElement = document.createElement("ul");
		parentElement.id = "bookmarkList";
		
		//create post li
		var postElement = document.createElement("li");
		postElement.className = "post"; postElement.setAttribute("id", "post");
		// create post link
		var postLink = document.createElement("a"); postLink.setAttribute("href", "#");
		postLink.onclick = function () { epaCore.showHideSwap('postList', 'post'); return false; };
		postLink.innerHTML = "Bookmark";
		postElement.appendChild(postLink);
		
		// create unordered list for post items
		var postList = document.createElement("ul");
		postList.setAttribute("id","postList");	postList.className = "hide";
		
		//add post links
		epaCore.addPosts(postList);
		
		postElement.appendChild(postList);
		parentElement.appendChild(postElement);
		footer.appendChild(parentElement);
	},
	
	addPosts : function(shareList) {	
		var sList;
		if(typeof(shareList)=='string') { sList = document.getElementById(shareList); }
		else if(typeof(shareList)=='object') { sList = shareList; }
		else return false;
	
		epaCore.addPostItem(sList, "delicious", "javascript:epaCore.articleShare('delicious');", "Del.icio.us");
		epaCore.addPostItem(sList, "digg", "javascript:epaCore.articleShare('digg');", "Digg");
		epaCore.addPostItem(sList, "facebook", "javascript:epaCore.articleShare('facebook');", "Facebook");
		epaCore.addPostItem(sList, "reddit", "javascript:epaCore.articleShare('reddit');", "reddit");
		epaCore.addPostItem(sList, "slashdot", "javascript:epaCore.articleShare('slashdot');", "Slashdot");
		epaCore.addPostItem(sList, "stumble", "javascript:epaCore.articleShare('stumble');", "StumbleUpon");
		epaCore.addPostItem(sList, "whatisthis", "javascript:epaCore.articleShare('whatisthis');", "What is this?");
	}
	

}; // end epaCore

function addEvent( obj, type, fn ) {
	if (document.getElementById && document.createTextNode) {
		if (obj.addEventListener)
			obj.addEventListener( type, fn, false );
		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] );
		}
	}
}
	addEvent(window, 'load', epaCore.printAsIs_Date_URL); addEvent(window, 'load', epaCore.newIcon);
	addEvent(window, 'load', epaCore.notice); addEvent(window, 'load', epaCore.stripeTables);
	addEvent(window, 'load', epaCore.writePost);
	addEvent(window, 'load', function() {epaCore.footnoteLinks('printURLs','content');});