var TlbGlobalIndex = 0;

var TlbFirst = 0;
var TlbLast = -1;

var TlbImage = 0;
var TlbTextbox = 1;
var TlbCombo = 2;
var TlbDropdown = 3;
var TlbButton = 4;
var TlbLabel = 5;
var TlbSeparator = 255;


var TlbCLSID = "{0730FCC8-CC75-46A7-ADCE-F74BE1BCCB90}";

var TlbPrevItem = null;

var TlbLockItem = false;

var TlbAuto = -1;

function Toolbar(nLeft, nTop) {
	if (typeof(nLeft) != "number") nLeft = 0;
	if (typeof(nTop) != "number") nTop = 0;
	
	var strHTML;
	
	this.id = "TOOLBAR_" + TlbGlobalIndex ++;
	this.add = __TlbAdd;
	
	this.left = nLeft;
	this.top = nTop;
	
	this.moveTo = __TlbMoveTo;
	
	this.setEnabled = __TlbSetEnabled;
	this.setChecked = __TlbSetChecked;
	this.getEnabled = __TlbGetEnabled;
	this.getChecked = __TlbGetChecked;
	
	this.getWidth = __TlbGetWidth;
	this.getHeight = __TlbGetHeight;
	
	this.onItemClick = null;
	
	strHTML = "<DIV language=javascript onselectstart=\"event.cancelBubble = true;event.returnValue = false;return false;\" ondragstart=\"event.cancelBubble = true;\" onmouseover=\"event.cancelBubble = true;\" onmouseout=\"event.cancelBubble = true;__TlbOutToolbar();\" id=" +
		this.id + " nowrap style=\"PADDING-LEFT: 1px; LEFT: " + nLeft + "px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px; POSITION: absolute; TOP: " + nTop + "px; HEIGHT: 26px; \">";
	strHTML += "<TABLE border=0 cellspacing=0 cellpadding=0 height=24><TR><TD nowrap>";
	strHTML += "<TABLE width=7 border=0 cellspacing=0 cellpadding=0><TR>";
	strHTML += "<TD nowrap width=1 height=1></TD>";
	strHTML += "<TD nowrap width=6 height=1 bgcolor=#DBD8D1></TD>";
	strHTML += "</TR><TR><TD NOWRAP width=7 height=22 colspan=2 align=center bgcolor=#DBD8D1>";
	strHTML += "<TABLE width=3 border=0 cellspacing=0 cellpadding=0 height=16>";
	strHTML += "<TR><TD bgcolor=#a0a0a0></TD></TR><TR><TD></TD></TR><TR>";
	strHTML += "<TD bgcolor=#a0a0a0></TD></TR><TR><TD></TD></TR><TR>";
	strHTML += "<TD bgcolor=#a0a0a0></TD></TR><TR><TD></TD></TR><TR>";
	strHTML += "<TD bgcolor=#a0a0a0></TD></TR><TR><TD></TD></TR><TR>";
	strHTML += "<TD bgcolor=#a0a0a0></TD></TR><TR><TD></TD></TR><TR>";
	strHTML += "<TD bgcolor=#a0a0a0></TD></TR><TR><TD></TD></TR><TR>";
	strHTML += "<TD bgcolor=#a0a0a0></TD></TR><TR><TD></TD></TR><TR>";
	strHTML += "<TD bgcolor=#a0a0a0></TD></TR><TR><TD></TD></TR></TABLE></TD></TR><TR>";
	strHTML += "<TD nowrap width=1 height=1></TD>"
	strHTML += "<TD nowrap width=6 height=1 bgcolor=#DBD8D1></TD></TR></TABLE></TD>";
	strHTML += "<TD nowrap style=\"PADDING-TOP: 1px;PADDING-BOTTOM: 1px\" bgcolor=#DBD8D1><TABLE id=" + 
		this.id + "_Container border=0 cellspacing=0 cellpadding=0 height=22><TR></TR></TABLE>"
	strHTML += "</TD><TD nowrap><TABLE width=2 border=0 cellspacing=0 cellpadding=0>";
	strHTML += "<TR><TD nowrap width=1 height=1 bgcolor=#DBD8D1></TD>";
	strHTML += "<TD nowrap width=1 height=1></TD></TR><TR>";
	strHTML += "<TD nowrap width=2 height=22 colspan=2 align=center bgcolor=#DBD8D1></TD>";
	strHTML += "<TR><TD nowrap width=1 height=1 bgcolor=#DBD8D1></TD>";
	strHTML += "<TD nowrap width=1 height=1></TD>";
	strHTML += "</TR></TABLE></TD></TR></TABLE></DIV>";
	
	document.write(strHTML);
	
	document.all[this.id].m_objToolbar = this;
}

function __TlbAdd(nIndex, nType, strIcon, strText, nWidth, bEnabled, bChecked) {
	if (typeof(strText) != "string") strText = "";
	if (typeof(nWidth) != "number") nWidth = TlbAuto;
	if (typeof(bEnabled) != "boolean") bEnabled = true;
	if (typeof(bChecked) != "boolean") bChecked = false;
	
	var oContainer = document.all[this.id + "_Container"].rows(0);
	var objItem;
	if (nIndex == TlbLast || nIndex > oContainer.cells.length)
		objItem = oContainer.insertCell();
	else
		objItem = oContainer.insertCell(nIndex);
	
	objItem.CLSID = TlbCLSID;
	
	objItem.height = 20;
	objItem.style.fontSize = "8pt";
	
	if (nWidth == TlbAuto) 
		nWidth = 20;

	switch (nType) {
		case TlbImage:
			objItem.width = nWidth;
			objItem.align = "center";
			objItem.nType = TlbImage;
			objItem.bEnabled = bEnabled;
			objItem.bChecked = bChecked;
			objItem.title = strText;
			objItem.innerHTML = "<SPAN style=\"POSITION: relative;CURSOR: default;WIDTH:18px;HEIGHT:18px\"><IMG style=\"POSITION: relative;LEFT: 0px; TOP: 1px\" SRC=\"" + 
					strIcon + "\" width=16 height=16></SPAN>"
			if (bEnabled) {
				if (bChecked) {
					objItem.style.border = "1px solid #0A246A";
					objItem.style.backgroundColor = "#D4D5D8";
				}
				else {
					objItem.style.border = "1px solid #DBD8D1";
				}
			}
			else {
				objItem.children(0).children(0).style.filter = "gray alpha(opacity=20)";
				if (bChecked) {
					objItem.style.border = "1px solid #8D8D8D";
				}
				else {
					objItem.style.border = "1px solid #DBD8D1";
				}
			}

			objItem.onmousedown = __TlbMouseDown;
			objItem.onmouseup = __TlbMouseOver;
			objItem.onclick = __TlbItemClick;
			break;
		case TlbTextbox:
			objItem.width = nWidth;
			objItem.nType = TlbTextbox;
			objItem.style.border = "1px solid #DBD8D1";
			objItem.style.backgroundColor = "#FFFFFF";
			objItem.bEnabled = bEnabled;
			objItem.bChecked = false;
			objItem.title = strText;
			objItem.innerHTML = "<INPUT " + (bEnabled ? "" : "disabled") + " language=javascript onselectstart=\"event.cancelBubble = true;\" oncontextmenu=\"event.cancelBubble = true;\" onblur=\"TlbLockItem = false;__TlbOutToolbar();\" onfocus=\"__TlbMouseOver();TlbLockItem = true;this.select();\" style=\"font-size: 8pt;font-family: Tahoma,Arial;height: 16px;background-color: transparent;width: " + nWidth + "px;border: none\" value=\"" + strIcon + "\"/>";
			break;
		case TlbLabel:
			objItem.width = nWidth;
			objItem.nType = TlbLabel;
			objItem.title = strText;
			objItem.innerHTML = "<DIV nowrap style=\"PADDING-TOP: 3px;FONT-SIZE: 14px Verdana, Arial, Sans-Serif;OVERFLOW: hidden;WIDTH: " + nWidth + "\">" + strIcon + "</DIV>";
			objItem.onclick = __TlbItemClick;
			break;
		default:
			objItem.width = 7;
			objItem.align = "center";
			objItem.nType = TlbSeparator;
			objItem.bEnabled = true;
			objItem.bChecked = false;
			objItem.innerHTML = "<SPAN style=\"MARGIN-LEFT: 3px;MARGIN-RIGHT: 3px;WIDTH: 1px;HEIGHT: 22px;BACKGROUND-COLOR: #A6A6A6\"></SPAN>";
			break;
	}

	objItem.onmouseover = __TlbMouseOver;
	objItem.onmouseout = __TlbMouseOut;
	objItem.oncontextmenu = __TlbContextmenu;
	
	return objItem;
}

function __TlbMouseOver() {
	event.cancelBubble = true;
	if (TlbLockItem == true) return;
	__TlbOutToolbar();

	var objItem = event.srcElement;
	if (objItem == null) return;
	while (! (typeof(objItem.tagName) == "string" && objItem.tagName.toUpperCase() == "TD" &&
			 objItem.CLSID == TlbCLSID)) {
		objItem = objItem.parentElement;
		if (objItem == null) return;
	}
	
	if (objItem.bEnabled == false) return;
	if (objItem.nType == TlbSeparator) return;
	if (TlbPrevItem == objItem) return;
	
	switch (objItem.nType) {
		case TlbImage:
			if (objItem.bChecked == true) {
				objItem.style.border = "1px solid #0A246A";
				objItem.style.backgroundColor = "#8592B5";
			}
			else {
				objItem.style.border = "1px solid #0A246A";
				objItem.style.backgroundColor = "#B6BDD2";
				objItem.children(0).style.filter = "FILTER: dropShadow(color=gray,offX=2,offY=2,positive=true)";
				objItem.children(0).children(0).style.left = -1;
				objItem.children(0).children(0).style.top = 0;
			}
			break;
		case TlbTextbox:
			objItem.style.border = "1px solid #0A246A";
	}
	TlbPrevItem = objItem;
}

function __TlbOutToolbar() {
	var objItem = TlbPrevItem;
	if (objItem == null) return;
	if (TlbLockItem == true) return;
	if (objItem.bEnabled == false) return;

	switch (objItem.nType) {
		case TlbImage:
			if (objItem.bChecked == true) {
				objItem.style.border = "1px solid #0A246A";
				objItem.style.backgroundColor = "#D4D5D8";
			}
			else {
				objItem.style.border = "1px solid #DBD8D1";
				objItem.style.backgroundColor = "";
				objItem.children(0).style.filter = "";
				objItem.children(0).children(0).style.left = 0;
				objItem.children(0).children(0).style.top = 1;
			}
			break;
		case TlbTextbox:
			objItem.style.border = "1px solid #DBD8D1";
			document.selection.empty();
	}
	
	TlbPrevItem = null;
}

function __TlbMouseOut() {
	event.cancelBubble = true;
	event.returnValue = false;
	return;
}

function __TlbMouseDown() {
	var objItem = event.srcElement;
	if (objItem == null) return;
	while (! (typeof(objItem.tagName) == "string" && objItem.tagName.toUpperCase() == "TD" &&
			 objItem.CLSID == TlbCLSID)) {
		objItem = objItem.parentElement;
		if (objItem == null) return;
	}
	
	if (objItem.bEnabled == false) return;
	if (event.button == 2) {
		switch (objItem.nType) {
			case TlbImage:
				if (objItem.bChecked == false) {
					objItem.style.border = "1px solid #DBD8D1";
					objItem.style.backgroundColor = "";
					objItem.children(0).style.filter = "";
					objItem.children(0).children(0).style.left = 0;
					objItem.children(0).children(0).style.top = 1;
				}
		}
		return;
	}
	switch (objItem.nType) {
		case TlbImage:
			if (objItem.bChecked == false) {
				objItem.style.border = "1px solid #0A246A";
				objItem.style.backgroundColor = "#8592B5";
				objItem.children(0).style.filter = "";
				objItem.children(0).children(0).style.left = 0;
				objItem.children(0).children(0).style.top = 1;
			}
	}
}

function __TlbItemClick() {
	event.cancelBubble = true;

	var objItem = event.srcElement;
	if (objItem == null) return;
	while (! (typeof(objItem.tagName) == "string" && objItem.tagName.toUpperCase() == "TD" &&
			 objItem.CLSID == TlbCLSID)) {
		objItem = objItem.parentElement;
		if (objItem == null) return;
	}
	
	if (objItem.bEnabled == false) return;
	var nIndex = objItem.cellIndex;
	var objElement = objItem;
	for (var i = 0; i < 8; i ++) {
		if (objElement == null) return;
		objElement = objElement.parentElement;
	}

	if (typeof(objElement) == "object") {
		var objToolbar = objElement.m_objToolbar;
		if (objToolbar.onItemClick == null) return;
		
		if (objItem.bChecked == false) {
			objItem.style.border = "1px solid #0A246A";
			objItem.style.backgroundColor = "#D4D5D8";
			objItem.children(0).style.filter = "";
			objItem.children(0).children(0).style.left = 0;
			objItem.children(0).children(0).style.top = 1;
		}
		objToolbar.onItemClick(nIndex);
		__TlbOutToolbar();
	}
}

function __TlbUpdateItem(objItem) {
	if (objItem.nType == TlbImage) {
		if (objItem.bEnabled) {
			objItem.children(0).children(0).style.filter = "";
			if (objItem.bChecked) {
				objItem.style.border = "1px solid #0A246A";
				objItem.style.backgroundColor = "#D4D5D8";
			}
			else {
				objItem.style.border = "1px solid #DBD8D1";
				objItem.style.backgroundColor = "";
			}
		}
		else {
			objItem.children(0).children(0).style.filter = "gray alpha(opacity=20)";
			if (objItem.bChecked) {
				objItem.style.border = "1px solid #8D8D8D";
				objItem.style.backgroundColor = "";
			}
			else {
				objItem.style.border = "1px solid #DBD8D1";
				objItem.style.backgroundColor = "";
			}
		}
	}
	else if (objItem.nType == TlbTextbox) {
		objItem.children(0).disabled = (objItem.bEnabled != true);
	}
}

function __TlbSetEnabled(nIndex, bEnabled) {
	var oContainer = document.all[this.id + "_Container"].rows(0);
	if (nIndex < 0 || nIndex > oContainer.cells.length - 1) return;
	var objItem = oContainer.cells(nIndex);
	
	if (objItem.nType == TlbSeparator) return;

	objItem.bEnabled = bEnabled;
	__TlbUpdateItem(objItem);
}

function __TlbSetChecked(nIndex, bChecked) {
	var oContainer = document.all[this.id + "_Container"].rows(0);
	if (nIndex < 0 || nIndex > oContainer.cells.length - 1) return;
	var objItem = oContainer.cells(nIndex);
	
	if (objItem.separator == false) return;
	
	objItem.bChecked = bChecked;
	__TlbUpdateItem(objItem);
}

function __TlbGetEnabled(nIndex) {
	var oContainer = document.all[this.id + "_Container"].rows(0);
	if (nIndex < 0 || nIndex > oContainer.cells.length - 1) return false;
	var objItem = oContainer.cells(nIndex);
	
	if (objItem.separator == true) return true;
	return objItem.bEnabled;
}

function __TlbGetChecked(nIndex) {
	var oContainer = document.all[this.id + "_Container"].rows(0);
	if (nIndex < 0 || nIndex > oContainer.cells.length - 1) return false;
	var objItem = oContainer.cells(nIndex);
	
	if (objItem.separator == true) return true;
	return objItem.bChecked;
}

function __TlbContextmenu() {
	event.returnValue = false;
	
	var objItem = event.srcElement;
	if (objItem == null) return;
	while (! (typeof(objItem.tagName) == "string" && objItem.tagName.toUpperCase() == "TD" &&
			 objItem.CLSID == TlbCLSID)) {
		objItem = objItem.parentElement;
		if (objItem == null) return;
	}

	if (objItem.bEnabled == false) return;
	if (objItem.nType == TlbSeparator) return;
	switch (objItem.nType) {
		case TlbImage:
			if (objItem.bChecked == true) {
				objItem.style.border = "1px solid #0A246A";
				objItem.style.backgroundColor = "#D4D5D8";
			}
			else {
				objItem.style.border = "1px solid #DBD8D1";
				objItem.style.backgroundColor = "";
				objItem.children(0).style.filter = "";
				objItem.children(0).children(0).style.left = 0;
				objItem.children(0).children(0).style.top = 1;
			}
	}
	
	TlbPrevItem = null;
}

function __TlbMoveTo(x, y) {
	if (typeof(x) != "number") x = this.left;
	if (typeof(y) != "number") y = this.top;
	this.left = x;
	this.top = y;
	document.all[this.id].style.left = this.left;
	document.all[this.id].style.top = this.top;
}

function __TlbGetWidth() {
	return document.all[this.id].offsetWidth;
}

function __TlbGetHeight() {
	return document.all[this.id].offsetHeight;
}

document.onmouseover = __TlbOutToolbar;


