function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') window.onload = func;
	else {
		window.onload = function() {
			if (oldonload) oldonload();
			func();
		}
	}
}

function createElement(element) {
	element = element.toLowerCase();
	if (typeof document.createElementNS != 'undefined')
		return document.createElementNS('http://www.w3.org/1999/xhtml', element);
	if (typeof document.createElement != 'undefined')
		return document.createElement(element);
	return false;
}

function runRegExp(html,arr){
	var num = arr.length;
	for(var i=0;i<num;i++){
		html=html.replace(new RegExp(arr[i][0],"gmi"),arr[i][1]);
	}
	return html;
}

function stopDefaultEvent(e) {
	if (window.event) {
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
	if (e && e.preventDefault && e.stopPropagation) {
		e.preventDefault();
		e.stopPropagation();
	}
}



var objBookmarker = {
	// methods
	init : function(){
		// support
		if(!window.sidebar && !window.external) return;
		if(!document.getElementById || !document.getElementsByTagName || !document.createTextNode) return;

		// find container element
    	var foot=document.getElementById("foot");
    	if(!foot) return;

    	var ul=foot.getElementsByTagName("ul")[0];
    	if(!ul) return;

		// add link
    	var liBookmark=createElement("li");
    	var aBookmark=createElement("a");
    	aBookmark.appendChild(document.createTextNode("Bookmark this page"));
    	aBookmark.setAttribute("href","javascript:;");
		aBookmark.onclick = function(e){
			objBookmarker.doBookmark();

			// prevent default
			if(typeof e == "undefined") e = window.event;
			stopDefaultEvent(e);
		}
		if(aBookmark.captureEvents) aBookmark.captureEvents(Event.CLICK);
    	liBookmark.appendChild(aBookmark);
    	ul.appendChild(liBookmark);
	},

	doBookmark : function(){
		var title=document.getElementsByTagName("title")[0].text;
		if(window.sidebar) window.sidebar.addPanel(title,location.href,"");
		else if(window.external) window.external.AddFavorite(location.href,title);
		else alert("Please bookmark this site manually using your browser.");
	}
};

var objPrintPage = {
	// methods
	init : function(){
		// support
		if (!window.print) return;
		if(!document.getElementById || !document.getElementsByTagName) return;

		// find print link container
    	var elPrintContainer=document.getElementById("print-link");
    	if(!elPrintContainer) return;

		var aPrint=elPrintContainer.getElementsByTagName("a")[0];
    	if(!aPrint) return;
		aPrint.onclick = function(e){
			window.print();

			// prevent default
			if(typeof e == "undefined") e = window.event;
			stopDefaultEvent(e);
		}
	}
};

var objFixIeTooltip = {
	// methods
	init : function(){
		// support
		if(!document.getElementById || !document.getElementsByTagName) return;
		var isIE = navigator.userAgent.indexOf("MSIE");
		if (isIE < 1) return;

		// find header image
    	var elContainer=document.getElementById("header");
    	if(!elContainer) return;

		var elImg=elContainer.getElementsByTagName("img")[0];
    	if(!elImg) return;

		if (elImg.getAttribute('title') == '') elImg.setAttribute('title','');
	}
};

addLoadEvent(objFixIeTooltip.init);
addLoadEvent(objBookmarker.init);
addLoadEvent(objPrintPage.init);
