function IncludeJavaScript(jsFile) {
	document.write('<script type="text/javascript" src="' + jsFile + '"></script>');
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if(oldonload) {
		oldonload();
	  }
      func();
    }
  }
}

// Prevent multiple clicks of a Submit button
function checkSubmit(alertMessage,showAlertPopUp)
{
	if (submitcount==0)
	{
		submitcount++;
		return true;
	}
	else
	{
		if (showAlertPopUp)
		{
			alert(alertMessage);
		}
		return false;
	}
}

function strsearch( haystack, needle){
    var i = (haystack+'').indexOf( needle, 0 ); 
    return i===-1 ? false : true;
}

function getElementsByClassName(classname, node) {
	if(!node) node = document.getElementsByTagName("body")[0];
	var a = [];
	var re = new RegExp('\\b' + classname + '\\b');
	var els = node.getElementsByTagName("*");
	for(var i=0,j=els.length; i<j; i++)
		if(re.test(els[i].className))a.push(els[i]);
	return a;
}

// Credit Card Validation Javascript
// copyright 12th May 2003, by Stephen Chapman, Felgall Pty Ltd
function validateCreditCard(s) {
	// remove non-numerics
	var v = "0123456789";
	var w = "";
	for (var i=0; i < s.length; i++) {
		var x = s.charAt(i);
		if (v.indexOf(x,0) != -1)
			w += x;
	}
	// validate number
	var j = w.length / 2;
	if (j < 6.5 || j > 8 || j == 7) return false;
	var k = Math.floor(j);
	var m = Math.ceil(j) - k;
	var c = 0;
	for (var i=0; i<k; i++) {
		var a = w.charAt(i*2+m) * 2;
		c += a > 9 ? Math.floor(a/10 + a%10) : a;
	}
	for (var i=0; i<k+m; i++) c += w.charAt(i*2+1-m) * 1;
	return (c%10 == 0);
}

/************************************************
	Javascript to style odd/even-row Zebra tables
*************************************************/
function stripe() {
	var tables = document.getElementsByTagName("table");
	for (var t = 0; t < tables.length; t++) {
		if (tables[t].className.search(/striped/gi) >= 0) {
			var tbodies = tables[t].getElementsByTagName("tbody");
			for (var h = 0; h < tbodies.length; h++) {
				var trs = tbodies[h].getElementsByTagName("tr");
		        for (var i = 0; i < trs.length; i++) {
					var tr = trs[i];
		            tr.onmouseover=function() {
		                this.className += " ruled"; return false
		            }
		            tr.onmouseout=function() {
		                this.className = this.className.replace("ruled", ""); return false
		            }
		            if(!(i % 2)) {
		                tr.className += " even";
		            }
					else {
		                tr.className += " odd";
					}
				}
		    }
		}
	}
}


/************************************************
	javascript for Bubble Tooltips by Alessandro Fulciniti
	http://pro.html.it - http://web-graphics.com 
*************************************************/

function enableTooltips(id){
	var links,i,h;
	if(!document.getElementById || !document.getElementsByTagName) return;
//	AddCss();
	h=document.createElement("span");
	h.id="btc";
	h.setAttribute("id","btc");
	h.style.position="absolute";
	document.getElementsByTagName("body")[0].appendChild(h);
	if(id==null) links=document.getElementsByTagName("a");
	else links=document.getElementById(id).getElementsByTagName("a");
	for(i=0;i<links.length;i++){
		Prepare(links[i]);
	}
}

function Prepare(el){
	var tooltip,t,b,s,l;
	t=el.getAttribute("title");
	if(t==null || t.length==0) t="link:";
	el.removeAttribute("title");
	tooltip=CreateEl("span","tooltip");
	s=CreateEl("span","top");
	s.appendChild(document.createTextNode(t));
	tooltip.appendChild(s);
	b=CreateEl("b","bottom");
	l=el.getAttribute("href");
	if(l.length>30) l=l.substr(0,27)+"...";
	b.appendChild(document.createTextNode(l));
	tooltip.appendChild(b);
	setOpacity(tooltip);
	el.tooltip=tooltip;
	el.onmouseover=showTooltip;
	el.onmouseout=hideTooltip;
	el.onmousemove=Locate;
}

function showTooltip(e){
	document.getElementById("btc").appendChild(this.tooltip);
	Locate(e);
}

function hideTooltip(e){
	var d=document.getElementById("btc");
	if(d.childNodes.length>0) d.removeChild(d.firstChild);
}

function setOpacity(el){
	el.style.filter="alpha(opacity:95)";
	el.style.KHTMLOpacity="0.95";
	el.style.MozOpacity="0.95";
	el.style.opacity="0.95";
}

function CreateEl(t,c){
	var x=document.createElement(t);
	x.className=c;
	x.style.display="block";
	return(x);
}

function AddCss(){
	var l=CreateEl("link");
	l.setAttribute("type","text/css");
	l.setAttribute("rel","stylesheet");
	l.setAttribute("href","bt.css");
	l.setAttribute("media","screen");
	document.getElementsByTagName("head")[0].appendChild(l);
}

function Locate(e){
	var posx=0,posy=0;
	if(e==null) e=window.event;
	if(e.pageX || e.pageY){
		posx=e.pageX; posy=e.pageY;
		}
	else if(e.clientX || e.clientY){
		if(document.documentElement.scrollTop){
			posx=e.clientX+document.documentElement.scrollLeft;
			posy=e.clientY+document.documentElement.scrollTop;
			}
		else{
			posx=e.clientX+document.body.scrollLeft;
			posy=e.clientY+document.body.scrollTop;
			}
		}
	document.getElementById("btc").style.top=(posy+10)+"px";
	document.getElementById("btc").style.left=(posx-20)+"px";
}


/************************************************
	Functions for handling expand/collapse of lists.
*************************************************/
var root_dir = "/";
var image_expanded = new Image();
image_expanded.src = root_dir + "images/expanded.gif";
var image_collapsed = new Image();
image_collapsed.src = root_dir + "images/collapsed.gif";

function toggle(node,force) {
	if(strsearch(node.className,"toggle_trigger") === false) return;
	for(var n = node.parentNode.nextSibling; n; n=n.nextSibling)  // this should be the trigger_title
		if(strsearch(n.className,"toggle_body") === true) {
			var this_force = force;
			if(!force) this_force = (n.style.display == "block" ? "none" : "block");
			n.style.display = this_force;
			if(this_force == "block") node.src = image_expanded.src;
			else node.src = image_collapsed.src;
			break;
	}
}

function expand_all() {
	var toggleNodeList = getElementsByClassName("toggle_title");
	for (var i = 0; i < toggleNodeList.length; i++) {
		toggleNodeList[i].innerHTML = '&nbsp;' + toggleNodeList[i].innerHTML;
		var trigger_img = document.createElement('img');
		trigger_img.className = 'toggle_trigger';
		trigger_img.style.display = 'inline';
		trigger_img.src = image_collapsed.src;
		trigger_img.onclick = function(){toggle(this);};
		toggleNodeList[i].insertBefore(trigger_img,toggleNodeList[i].childNodes[0]);
		toggle(trigger_img,"block");
	}
}

function collapse_all() {
	var toggleNodeList = getElementsByClassName("toggle_title");
	for (var i = 0; i < toggleNodeList.length; i++) {
		toggleNodeList[i].innerHTML = '&nbsp;' + toggleNodeList[i].innerHTML;
		var trigger_img = document.createElement('img');
		trigger_img.className = 'toggle_trigger';
		trigger_img.style.display = 'inline';
		trigger_img.src = image_expanded.src;
		trigger_img.onclick = function(){toggle(this);};
		toggleNodeList[i].insertBefore(trigger_img,toggleNodeList[i].childNodes[0]);
		toggle(trigger_img,"none");
	}
}
