var current_base_path = null;
function base_path() {
	if (!current_base_path) {
		var elements = document.getElementsByTagName('script');

		for (var i=0; i<elements.length; i++) {
			if (elements[i].src && (elements[i].src.indexOf("button.js") != -1)) {
				var src = elements[i].src;

				current_base_path = src.substring(0, src.lastIndexOf('/'));
				break;
			}
		}
	}

	return current_base_path;
}

	// Globale variabelen om bij te houden of er al op een knop gedrukt is en waarvan de functies, 'isClicked'
	// en 'setClicked' gebruikmaken.
	var isbuttonalreadyonceclicked = false;

	function isClicked() {
		return isbuttonalreadyonceclicked;
	}
	function setClicked(state) {
		isbuttonalreadyonceclicked = state;
	}
	
	function btn_enable(button) {
		// button zoeken
		function ewalkNodes(nodes,button) {
			for (var c=0; c<nodes.length; c++) {
				try {
					if (nodes[c].className && nodes[c].className.search(/btn/)>0) {
						// controleren of disabled erin voorkomt
						if (nodes[c].className.search(/disabled/)==0) {
							nodes[c].className=nodes[c].className.substring(8);
						}
					} // if
					if (nodes[c].hasChildNodes()) {
						ewalkNodes(nodes[c].childNodes,button);
					} // if
				} catch (e) { /* className heeft geen properties */ }
			} // for
		}

		var nodes = button.childNodes;
		ewalkNodes(nodes,button);
	}

	//bool disable (optioneel), Nicole 2005-11-18
	function btn_disable(button, disable) {
		// button zoeken
		if(String(disable) == "undefined") {
			disable = true;
		}
		
		function dwalkNodes(nodes,button) {
			for (var c=0; c<nodes.length; c++) {
				try {
					if (nodes[c].className.search(/btn/)==0) {
						nodes[c].className="disabled"+nodes[c].className;
						if(disable) {
							nodes[c].onclick=""; // edit by teun 20050217
						}
					} // if
					if (nodes[c].hasChildNodes()) {
						dwalkNodes(nodes[c].childNodes,button);
					} // if
				} catch (e) { /* className heeft geen properties  */}
			} // for
		}

		var nodes = button.childNodes;
		dwalkNodes(nodes,button); 
	}

	// function: zet een button op het scherm
	// parameters:
	// left    	 : plaatje links van de knop
	// text    	 : tekst van de knop
	// right   	 : plaatje rechts van de knop
	// enabled 	 : als true, knop is actief, anders uitgegrijsd en inactief
	// onClick 	 : event die afgaat op het moment dat op de knop wordt geklikt
	// clickOnce : Op de knop kan slechts één maal worden geklikt!
	// opmerking : Wanneer een eenmaal aangeklikte knop opnieuw klikbaar dient te worden, is de functie setClicked beschikbaar.
	function button(left,text,right,enabled,onClick,clickOnce) {
		var classLeft = enabled ? "btnLeft" : "disabledbtnLeft";
		var classRight = enabled ? "btnRight" : "disabledbtnRight";
		var classMid = enabled ? "btnText" : "disabledbtnText";
		var styleLeft = "";
		var styleRight = "";

		if (left!="") {
			styleLeft = ' style="background-image: url(\''+base_path("button.js")+'/../images/button/'+(enabled?"":"disabled")+'left'+left.toLowerCase()+'.gif\'); width: 25px;"';
		}

		if (right!="") {
			styleRight = ' style="background-image: url(\''+base_path("button.js")+'/../images/button/'+(enabled?"":"disabled")+'right'+right.toLowerCase()+'.gif\'); width: 25px;"';
		}

		var btnName = text.replace(/\"/g,"'").replace(/\ /g,"_");
		text = text.replace(/ /g,'&nbsp;');

		if (clickOnce) {
			onClick = " if (!isClicked()) { setClicked(true); "+onClick+" } ";
		}

		var returnStr ='<table id=\"'+btnName+'\" name=\"'+btnName+'\" class="btnTable" ><tr>';
		returnStr+='<td onclick="'+onClick+'" class="'+classLeft+'"'+styleLeft+'></td>';
		if (text!="")
			returnStr+='<td onclick="'+onClick+'" class="'+classMid+'">'+text+'</td>';
		returnStr+='<td onclick="'+onClick+'" class="'+classRight+'"'+styleRight+'></td>';
		returnStr+='</tr></table>\n';
		return returnStr;
	}
	function ultraSmallButton(left,text,right,enabled,onClick,clickOnce, btnName) {
		var classLeft = enabled ? "btnUltraSmallLeft" : "disabledbtnUltraSmallLeft";
		var classRight = enabled ? "btnUltraSmallRight" : "disabledbtnUltraSmallRight";
		var classMid = enabled ? "btnUltraSmallText" : "disabledbtnUltraSmallText";
		var styleLeft = "";
		var styleRight = "";
		
		if (left!="") {
			styleLeft = ' style="background-image: url(\''+base_path("button.js")+'/../images/button/'+(enabled?"":"disabled")+'ultrasmallleft'+left.toLowerCase()+'.gif\'); width: 25px;"';
		}

		if (right!="") {
			styleRight = ' style="background-image: url(\''+base_path("button.js")+'/../images/button/'+(enabled?"":"disabled")+'ultrasmallright'+right.toLowerCase()+'.gif\'); width: 25px;"';
		}

    if (!btnName) {
		  btnName = text.replace(/\"/g,"'").replace(/\ /g,"_");
		}
		text = text.replace(/ /g,'&nbsp;');

		if (clickOnce) {
			onClick = " if (!isClicked()) { setClicked(true); "+onClick+" } ";
		}

		var returnStr ='<table id=\"'+btnName+'\" name=\"'+btnName+'\" class="btnTable" ><tr>';
		returnStr+='<td onclick="'+onClick+'" class="'+classLeft+'"'+styleLeft+'></td>';
		if (text!="")
			returnStr+='<td onclick="'+onClick+'" class="'+classMid+'">'+text+'</td>';
		returnStr+='<td onclick="'+onClick+'" class="'+classRight+'"'+styleRight+'></td>';
		returnStr+='</tr></table>\n';
		return returnStr;
	}

	function smallButton(img,enabled,onClick) {
		var classString="btnSmall";
		if (img!="") {
			classString+=img;
		}
		if (enabled==false){ classString="disabled"+classString; }
		var returnStr='<table style=\"width: 27px;\" id=\"button\" name=\"button\" class="btnTable" onclick="'+onClick+'"><tr>';
		returnStr+='<td class="'+classString+'"></td>';
		returnStr+='</tr></table>';
		return returnStr;
	}
