function ctlIsIE4()
{
	return ((navigator.appName == "Microsoft Internet Explorer") && 
          (parseInt(navigator.appVersion) >= 4) && (navigator.userAgent.indexOf("Opera") == -1))? true : false;
}

function ctlIsNS4()
{
	return ((navigator.appName == "Netscape") && document.layers)? true : false;
}

function ctlIsNS6()
{
	return ((navigator.appName == "Netscape") && document.getElementById)? true : false;
}

function ctlIsOpera()
{
	return (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
}

function ctlSwapImage(ID, Image)
{
	if (ctlIsIE4())
		objImage = document.all(ID);
	else if (ctlIsNS6())
		objImage = document.getElementById(ID);
	else if (ctlIsOpera())
		objImage = document.getElementById(ID);
	else
		return;

	objImage.src = Image;
}

function ctlObject(ID)
{
	return document.getElementById(ID);
}

function ctlSmartButtonIconHover(ID, AImage, AImageSelected, AValueField)
{
	ctlSwapImage(ID + "_ico", AImage);
}

function ctlSmartButtonIconHoverOut(ID, AImage, AImageSelected, AValueField)
{
	if ( ! ctlSmartButtonSelected(ID, AValueField) )
		ctlSwapImage(ID + "_ico", AImage);
	else
		ctlSwapImage(ID + "_ico", AImageSelected);
}

function ctlSmartButtonExpandIcon(ID, AExpandIcon, AContractIcon, AValueField)
{
	if ( ! ctlSmartButtonSelected(ID, AValueField) )
		ctlSwapImage(ID + "_exp", AExpandIcon);
	else
		ctlSwapImage(ID + "_exp", AContractIcon);
}

function ctlSmartButtonSetClicked(ID)
{
	frm = document.forms[0];
	
	if (frm)
	{
		fld = frm.elements["SmartButtonClicked"];
		
		if (fld)
		{
			fld.value = ID;
		}
	}
}

function ctlSmartButtonSetCommand(ACommandName, ACommandArgument)
{
	frm = document.forms[0];
	
	if (frm)
	{
		fld = frm.elements["SmartButtonCommandName"];
		
		if (fld)
			fld.value = ACommandName;
		
		fld = frm.elements["SmartButtonCommandArgument"];
		
		if (fld)
			fld.value = ACommandArgument;
	}
}

//function tabViewTabClear1()
//{
//	for (index = 0; index < tabViewTabs.length; index++)
//	{
//		objItem = tabViewTabs[index];
//		ctlSmartButtonPanel(objItem.ID, objItem.Panel, 'tabView_value');
//	}
//}

function ctlSmartButtonPanel(ID, APanel, AValueField)
{
	obj = ctlObject(APanel);
	
	if (obj)
	{
		if ( ! ctlSmartButtonSelected(ID, AValueField) )
		{
			obj.style.display = "none";
		}
		else
		{
			obj.style.display = "block";
		}
	}		
}

function ctlSmartButtonHover(ID, AType, AClass, AClassHover, AClassSelected, AClassSelectedHover, AValueField)
{
	if (AType == "in")
	{
		if ( ! ctlSmartButtonSelected(ID, AValueField) )
			ctlSwapLayerClass(ID, AClassHover);
		else
			ctlSwapLayerClass(ID, AClassSelectedHover);
	}
	else
	{
		if ( ! ctlSmartButtonSelected(ID, AValueField) )
			ctlSwapLayerClass(ID, AClass);
		else
			ctlSwapLayerClass(ID, AClassSelected);
	}
}

function ctlSmartButtonHoverIcon(ID, AType, AIcon, AIconHover, AIconSelected, AIconSelectedHover, AValueField)
{
	if (AType == "in")
	{
		if ( ! ctlSmartButtonSelected(ID, AValueField) )
			ctlSwapImage(ID + "_ico", AIconHover);
		else
			ctlSwapImage(ID + "_ico", AIconSelectedHover);
	}
	else
	{
		if ( ! ctlSmartButtonSelected(ID, AValueField) )
			ctlSwapImage(ID + "_ico", AIcon);
		else
			ctlSwapImage(ID + "_ico", AIconSelected);
	}
}

function ctlSmartButtonHoverOut(ID, AClass, AClassSelected, AValueField)
{
	if ( ! ctlSmartButtonSelected(ID, AValueField) )
		ctlSwapLayerClass(ID, AClass);
	else
		ctlSwapLayerClass(ID, AClassSelected);
}

function ctlSmartButtonSubmit(ID, AValueField)
{
	frm = document.forms[0];
	
	ctlSmartButtonSetClicked(ID);
	ctlSmartButtonSetHiddenField(ID, AValueField, ID);
		
	if (frm)
		frm.submit();
}

function ctlSmartButtonSelected(ID, AField)
{
	blnResult = false;
	
	if (ID == ctlSmartButtonGetHiddenField(ID, AField))
		blnResult = true;
		
	return blnResult;
}

// function to deselect
function ctlSmartButtonClick(ID, AClass, AClassSelected, AValueField, ASelectable, ADeselectable)
{
	if ( ! ctlSmartButtonSelected(ID, AValueField) )
	{
		ctlSmartButtonSetClicked(ID);
		ctlSwapLayerClass(ID, AClassSelected);
		
		// exit if not selectable
		if (!ASelectable)
			return;
		
		// select button by setting hidden field value
		ctlSmartButtonSetHiddenField(ID, AValueField, ID);
	}
	else
	{
		// deselect button by clearing hidden field value
		ctlSwapLayerClass(ID, AClass);

		// exit if not deselectable
		if (!ADeselectable)
			return;

		ctlSmartButtonSetHiddenField(ID, AValueField, "");
	}
}

function ctlSmartButtonGetHiddenField(ID, AField)
{
	frm = document.forms[0];
	strResult = "";
	
	if (frm)
	{
		fld = frm.elements[AField];
		
		if (fld)
		{
			strResult = fld.value;
		}
	}
	
	return strResult;
}

function ctlSmartButtonSetHiddenField(ID, AField, AValue)
{
	frm = document.forms[0];
	
	if (frm)
	{
		fld = frm.elements[AField];
		
		if (fld)
		{
			fld.value = AValue;
		}
	}

	if (AValue.length == 0)
	{
		// Delete the cookie key to keep our cookie size
		// down, otherwise, we run out of room.
		if (DelCookieKey)
		{
			DelCookieKey("iolo.Controls", AField);
		}
	}
	else
	{		
		// Append the hidden field value to the iolo.Controls
		// control state cookie.
		if (SetCookieKey)
		{
			SetCookieKey("iolo.Controls", AField, AValue);
		}
	}
}


function ctlSwapLayerClass(ID, Class)
{
	if (ctlIsIE4() == 1)
		objLayer = document.all(ID);
	else if (ctlIsNS4() == 1)
		objLayer = document.layers[ID];
	else if (ctlIsNS6() == 1)
		objLayer = document.getElementById(ID);
	else if (ctlIsOpera() == 1)
		objLayer = document.getElementById(ID);
	else
		return;
		
	objLayer.className = Class;
}


function __SmartButton()
{
	this.ID = "";
	this.Class = "";
	this.ClassHover = "";
	this.ClassSelected = "";
	this.ClassSelectedHover = "";
	this.ClassDisabled = "";
	this.Disabled = false;
	this.Panel = "";
}

function ctlSmartTabGet(AId, ATabArray)
{
	objResult = null;

	for (index = 0; index < ATabArray.length; index++)
	{
		if (ATabArray[index].ID == AId)
		{
			objResult = ATabArray[index];
			break;
		}
	}
	
	return objResult;
}

function ctlSmartTabClick(AId, AHiddenField, ATabArray)
{
	ctlSmartTabClear(AId, AHiddenField, ATabArray);
	ctlSmartTabReset(AId, AHiddenField, ATabArray);
}


function ctlSmartTabClear(AId, AHiddenField, ATabArray)
{
	objButton = ctlSmartTabGet(ctlSmartButtonGetHiddenField(AId, AHiddenField), ATabArray);


	if (objButton.Submit)
	{
		event.cancelBubble = true;
	  return;
	}
	
	for (index = 0; index < ATabArray.length; index++)
	{
		objItem = ATabArray[index];
		
		if (!objItem.Disabled)
		{
			ctlSmartButtonPanel(objItem.ID, objItem.Panel, AHiddenField);
		}
	}
}


function ctlSmartTabReset(AId, AHiddenField, ATabArray)
{
	objButton = ctlSmartTabGet(ctlSmartButtonGetHiddenField(AId, AHiddenField), ATabArray);
	
	if (objButton.Submit == true)
	{
		event.cancelBubble = true;
		return;
	}
	
	for (index = 0; index < ATabArray.length; index++)
	{
		objItem = ATabArray[index];
		
		if (!objItem.Disabled)
		{
			ctlSmartButtonHover(objItem.ID, "out", objItem.Class, objItem.ClassHover, objItem.ClassSelected, objItem.ClassSelectedHover, AHiddenField);
		}
	}
}
