//**************************************************************************
//		Copyright  Sybase, Inc. 2004-2006
//						 All Rights reserved.
//
//	Sybase, Inc. ("Sybase") claims copyright in this
//	program and documentation as an unpublished work, versions of
//	which were first licensed on the date indicated in the foregoing
//	notice.  Claim of copyright does not imply waiver of Sybase's
//	other rights.
//
//	 It is provided subject to the terms of the Sybase License Agreement
//	 for use as is, without alteration or modification.  
//	 Sybase shall have no obligation to provide support or error correction 
//	 services with respect to any altered or modified versions of this code.  
//
//       ***********************************************************
//       **     DO NOT MODIFY OR ALTER THIS CODE IN ANY WAY       **
//       ***********************************************************
//
//       ***************************************************************
//       ** IMPLEMENTATION DETAILS SUBJECT TO CHANGE WITHOUT NOTICE.  **
//       **            DO NOT RELY ON IMPLEMENTATION!!!!		      **
//       ***************************************************************
//**************************************************************************

var g_oldPBRadioBorderStyle;
var g_oldPBRadioBorderWidth;
var g_oldPBRadioBorderColor;

var PB_pictureButtonDown = false;
var PB_pictureButtonOver = false;

function RegisterControl(nType, strID, strWinID, strAccelerator, nTabIndex, bHasRMB)
{
    var oNewControl = new PBControl();
    oNewControl.nType = nType;
	oNewControl.strAccelerator = strAccelerator.toUpperCase();
    oNewControl.nTabIndex = nTabIndex;
    oNewControl.bHasRMB = bHasRMB;
	
	var oFocusObj = document.getElementById(strID);	
	if (oFocusObj != null && oFocusObj.accessKey != "")
	{
		oFocusObj.accessKey = "";
	}
    var oWin = goWindowManager.Get(strWinID);
	oWin.Controls.Put(strID, oNewControl);
}

function ToNumber(strNumber)
{
	var nNumber = 0;
	for (var i = 0; i < strNumber.length; i++)
		nNumber += (strNumber.charAt(i) - '0') * Math.pow(10, strNumber.length - i - 1);
	return nNumber;
}

function PBResize(destName, srcName, addWidth, addHeight)
{
	var srcObj = document.getElementById(srcName);
	var destObj = document.getElementById(destName);

	if (srcObj && destObj)
	{
		destObj.style.pixelWidth = srcObj.offsetWidth + addWidth;
		destObj.style.pixelHeight = srcObj.offsetHeight + addHeight;
	}
}

function PB_EncodeJavaScriptString(s)
{
	s = s.replace("\\", "\\\\");
	s = s.replace("\n", "\\n");
	s = s.replace("\r", "\\r");
	s = s.replace("\f", "\\f");
	s = s.replace("\t", "\\t");
	s = s.replace("\b", "\\b");
	s = s.replace("\v", "\\v");
	s = s.replace("\'", "\\\'");
	s = s.replace("\"", "\\\"");

	return s;
}

function PB_ShowMask()
{
	if (document.getElementById(PB_MASK__DIV) != null)
	{
		return;
	}

	var oMask = document.getElementsByTagName("body")[0].appendChild(document.createElement("div"));
	oMask.id = PB_MASK__DIV;
	oMask.style.border = "none";
	oMask.style.width = document.body.clientWidth + "px"
	var height = document.documentElement.scrollHeight - 4;
	if (height < 0) 
	{
	    height = 0;
	}
	oMask.style.height = height + "px";

	var oIFrame = oMask.appendChild(document.createElement("iframe"));
	oIFrame.id = PB_MASK__IFRAME;
	oIFrame.frameborder = "0";
	oIFrame.border = "0";
	oIFrame.allowTransparency = true;
	oIFrame.src = "wait.htm";
	oIFrame.style.border = "0px";
	oIFrame.style.visibility = "inherit";
	oIFrame.style.width = "100%";
	oIFrame.style.height = "100%";
	oIFrame.style.zIndex = -1;
	//oIFrame.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";
}

function PB_HideMask()
{
	var oIFrame = document.getElementById(PB_MASK__IFRAME);
	if (oIFrame)
	{
		oIFrame.src = "javascript:false";
		document.getElementsByTagName("body")[0].removeChild(document.getElementById(PB_MASK__DIV));
	}
}

function PB_ShowExecuteFail(isClose)
{
	var oIFrame = document.getElementById(PB_MASK__IFRAME);
	if (oIFrame)
	{
    var url = "execute_error.htm";
    if (isClose)
    {
      url += "?isClose";
    }
		oIFrame.src = url;
	}
}

function PB_PictureButtonDown(tableTag)
{
	PB_pictureButtonDown = true;
	tableTag.style.borderColor = "darkgray";
	tableTag.style.borderStyle = "window-inset";
	tableTag.style.borderWidth = "2px";
}

function PB_PictureButtonUp(tableTag, flatStyle)
{
	PB_pictureButtonDown = false;
	if (PB_pictureButtonOver)
	{
		tableTag.style.borderColor = "#fcca69";
		tableTag.style.borderWidth = "1px";
		tableTag.style.borderStyle = "outset";
	}
	else
	{
		if (flatStyle)
		{
			tableTag.style.borderStyle = "none";
			tableTag.parentElement.style.borderColor = "black";
		}
		else
		{
			tableTag.style.borderColor = "white";
			tableTag.style.borderWidth = "1px";
			tableTag.style.borderStyle = "outset";
		}
	}
}

function PB_PictureButtonOver(tableTag, flatStyle)
{
	PB_pictureButtonOver = true;
	if (PB_pictureButtonDown)
	{
		tableTag.style.borderColor = "darkgray";
	}
	else
	{
		tableTag.style.borderColor = "#fcca69";
	}

	if (flatStyle)
	{
		tableTag.parentElement.style.borderColor = "darkblue";
		tableTag.style.borderStyle = "outset";
		tableTag.style.borderWidth = "1px";
		tableTag.style.borderLeftColor = "white";
	}
}

function PB_PictureButtonOut(tableTag, flatStyle)
{
	PB_pictureButtonOver = false;

	if (flatStyle)
	{
		tableTag.style.borderStyle = "none";
		tableTag.parentElement.style.borderColor = "black";
	}
	else
	{
		tableTag.style.borderColor = "white";
		tableTag.style.borderStyle = "outset";
		tableTag.style.borderWidth = "1px";
	}
}

function PB_PictureButtonClick(inputTagTagName, tableTagClientName)
{
	goWindowManager.OnFocusOwn(tableTagClientName);
	var inputTag = document.getElementById(inputTagTagName);
	if (inputTag)
	{
		inputTag.focus();
		inputTag.click();
	}
}

function PB_PictureButtonOnFocus(inputTagTagName)
{
	var inputTag = document.getElementById(inputTagTagName);
	if (inputTag)
	{
		g_oldPBBorderStyle = inputTag.style.borderStyle;
		g_oldPBBorderWidth = inputTag.style.borderWidth;
		g_oldPBBorderColor = inputTag.style.borderColor;

		inputTag.style.borderStyle = "dotted";
		inputTag.style.borderWidth = "1px";
		inputTag.style.borderColor = "#A9A9A9";
	}
}

function PB_PictureButtonOnBlur(inputTagTagName)
{
	var inputTag = document.getElementById(inputTagTagName);
	if (inputTag)
	{
		inputTag.style.borderStyle = g_oldPBBorderStyle;
		inputTag.style.borderWidth = g_oldPBBorderWidth;
		inputTag.style.borderColor = g_oldPBBorderColor;
	}
}

function PB_OpenUrl(url)
{
	window.open(url);
}

function PB_ShowCloseWindowUrl(lvlStr)
{
	document.write("<a href='" + lvlStr + "/'>Home Page</a>");

	if (window.opener)
	{
		document.write("&nbsp;&nbsp;<a href='javascript:window.close()'>Close</a>");
	}
}

function PBHasDisabledRadioButtonInGroup(groupName)
{
	var bHasDisabled = true;
	var rbList = document.getElementsByName(groupName);
	if (rbList)
	{
		if (rbList.length)
		{
			for (var i = 0; i < rbList.length; i++)
			{
				if (rbList[i].disabled) break;
			}
			if (i == rbList.length)
			{
				bHasDisabled = false;
			}
		}
	}
	return bHasDisabled;
}

function PBResetOtherRadioButtons(groupName, radioThis)
{
	var rbList = document.getElementsByName(groupName);
	if (rbList)
	{
		if (rbList.length)
		{
			for (var i = 0; i < rbList.length; i++)
			{
				if (rbList[i] != radioThis)
				{
					rbList[i].checked = false;
				}
			}
		}
		else
		{
			if (rbList != radioThis)
			{
				rbList.checked = false;
			}
		}
	}
}

function PBRadioButtonSetFocus(widgetID)
{
	var radioTag = document.getElementById(widgetID);
	radioTag.focus();
	goWindowManager.OnFocusOwn(widgetID);
}

function PBRadioButtonOnFocus(widgetID)
{
	goWindowManager.OnFocusOwn(widgetID);

	var lblTag = document.getElementById(widgetID+"_lbl");
	if (lblTag)
	{
		g_oldPBRadioBorderStyle = lblTag.style.borderStyle;
		g_oldPBRadioBorderWidth = lblTag.style.borderWidth;
		g_oldPBRadioBorderColor = lblTag.style.borderColor;

		lblTag.style.borderStyle = "dotted";
		lblTag.style.borderWidth = "1px";
		lblTag.style.borderColor = "#A9A9A9";
		
		var divTag = document.getElementById(widgetID+"_div");
		if (divTag)
		{
			if (divTag.pbgrpname != "")
			{
				var radioTag = document.getElementById(widgetID);
				var group = document.getElementById(divTag.pbgrpname);
				if (group && radioTag.checked)
				{
					group.pbradiobtn = widgetID;
				}
			}
		}
	}
}

function PBRadioButtonOnBlur(widgetID)
{
	var lblTag = document.getElementById(widgetID+"_lbl");
	if (lblTag)
	{
		lblTag.style.borderStyle = g_oldPBRadioBorderStyle;
		lblTag.style.borderWidth = g_oldPBRadioBorderWidth;
		lblTag.style.borderColor = g_oldPBRadioBorderColor;
	}
}

function PBRadioButtonFireClick(widgetID)
{
	var radioTag = document.getElementById(widgetID);
	if (radioTag)
	{
		radioTag.click();
	}
}

function RadToolbar_SetPBStyle(tlbID, backColor, textColor, bGradient, isContemporary)
{
	var tlbElement = document.getElementById(tlbID);
	if (tlbElement == null) return;
	RadControl_SetIcon(tlbElement);
	var tbls = tlbElement.getElementsByTagName("TABLE");;
	for (var i=0;i<tbls.length;i++) 
	{
		tbls[i].style.borderWidth = "1px";
		tbls[i].style.borderStyle = "outset";
		tbls[i].style.backgroundColor = backColor;
	}
	if (isContemporary)
	{
		var tds = tlbElement.getElementsByTagName("TD");;
		for (var i=0;i<tds.length;i++) 
		{
			if (tds[i].className.indexOf("pbcontemporary_radtoolbar_left") != -1)
			{
				var oImg = document.createElement("IMG");
				oImg.src = "./images/RadToolbarLeft_c.bmp";
				oImg.style.filter = "Chroma(Color = #c0c0c0)";
				oImg.style.backgroundRepeat = "no-repeat";
				tds[i].appendChild(oImg);
			}
			tds[i].style.color = textColor;
			if (bGradient)
				tds[i].style.filter = "progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#ffffff,endColorStr="+backColor+")";
			else
				tds[i].style.backgroundColor = backColor;
		}
	}
}

function RadMenuClass(isContemporary, fontFamily, fontSize, fontWeight, fontItalic, fontUnderline, backColor, foreColor, highlightColor, bitmapBackColor, gradient)
{
	this.isContemporary = isContemporary;
	this.fontFamily = fontFamily;
	this.fontSize = fontSize;
	this.fontWeight = fontWeight;
	this.fontItalic = fontItalic;
	this.fontUnderline = fontUnderline;
	this.backColor = backColor;
	this.foreColor = foreColor;
	this.highlightColor = highlightColor;
	this.bitmapBackColor = bitmapBackColor;
	this.gradient = gradient;
}

function RadMenu_SetPBStyle(menuID)
{
	var menuElement = document.getElementById(menuID);
	var radMenu = RadMenuMap.Get(menuID);
	if (radMenu.isContemporary)
		RadMenu_SetPBStyleContemporary(menuElement,radMenu);
	RadMenu_SetSelected(menuElement,radMenu);
}

function RadMenu_SetSelected(menuElement,radMenu)
{
	var links = menuElement.getElementsByTagName("a");
	for (var i=0;i<links.length;i++) 
	{
		if (links[i].className.indexOf("selected")!=-1)
		{
			var imgs = links[i].getElementsByTagName("img");
			if (imgs.length>0)
				imgs[0].style.border = "solid 1px #316AC5";
			else
			{
				var oImg = document.createElement("IMG");
				oImg.src = "./images/checkbox_1_2.jpg";
				oImg.style.position = "absolute";
				oImg.style.left = "6px";
				oImg.style.top = "4px";
				oImg.style.border = "none";
				oImg.style.backgroundRepeat = "no-repeat";
				links[i].insertBefore(oImg);
			}
		}
	}
}

function RadMenu_ItemNode(itemElement)
{
	this.item = itemElement;
	this.link = null;
	this.img = null;
	this.text = null;
	this.isSelected = false;
	this.isSeparator = false;
}
function RadMenu_InitItemNode(node)
{
	if (node.item.className.indexOf("separator")!=-1)
	{
		node.isSeparator=true;
		return;
	}
	var itemChildren=node.item.childNodes;
	for (var i=0;i<itemChildren.length;i++)
	{
		if (itemChildren[i].nodeName=="A")
		{
			node.link=itemChildren[i];
			if (node.link.className.indexOf("selected")!=-1)
				node.isSelected=true;
			var nodes=itemChildren[i].childNodes;
			for (var n=0;n<nodes.length;n++)
			{
				if (nodes[n].nodeName=="IMG")
					node.img=nodes[n];
				if (nodes[n].nodeName=="SPAN")
					node.text=nodes[n];
			}
		}
	}
}
function RadMenu_SetPBStyleContemporary(menuElement,radMenu)
{
	RadControl_SetIcon(menuElement);
	var divs = menuElement.getElementsByTagName("div");
	if (divs!=null)
	{
		for (var i=0;i<divs.length;i++) 
			if (divs[i].className.indexOf("PBContemporary")!=-1)
				divs[i].style.backgroundColor = radMenu.backColor;
	}
	var itemHeight = parseInt(radMenu.fontSize)*96/72;
	if (itemHeight<16) itemHeight=16;
	var menus = menuElement.getElementsByTagName("ul");
	for (var i=0;i<menus.length;i++) 
	{
		var menu=menus[i];
		if (menu.className.indexOf("group")!=-1)
			menu.style.backgroundColor = radMenu.backColor;
		var items=menu.childNodes;
		for (var j=0;j<items.length;j++)
		{
			var item=items[j];
			var node=new RadMenu_ItemNode(item);
			RadMenu_InitItemNode(node);
			text=node.text;
			if (text!=null)
			{
				text.style.color = radMenu.foreColor;
				text.style.fontFamily = radMenu.fontFamily;
				text.style.fontSize = radMenu.fontSize;
				text.style.fontWeight = radMenu.fontWeight;
				if (radMenu.fontItalic)
					text.style.fontStyle = "italic";
				if (radMenu.fontUnderline)
					text.style.textDecoration = "underline";
				text.style.lineHeight = itemHeight+"px";
				if (menu.className.indexOf("rootGroup")!=-1)
				{
					text.style.fontSize="8pt";
					text.style.lineHeight="8pt";
				}
			}
			
			if (menu.className.indexOf("vertical")!=-1)
			{
				var oSpan = document.createElement("SPAN");
				oSpan.className = "bitmapBack";
				oSpan.style.position = "absolute";
				oSpan.style.left = "0px";
				oSpan.style.top = "1px";
				if (node.isSeparator)
					oSpan.style.top = "-1px";
				oSpan.style.width = "26px";
				var height = itemHeight;
				//if (node.img!=null&&itemHeight<16)
				if (itemHeight<16)
					height = 16;
				if (node.isSelected)
					height = height+2;
				if (item.className.indexOf("last")!=-1)
					oSpan.style.height = (height+4)+"px";
				else
					oSpan.style.height = (height+6)+"px";
				oSpan.style.lineHeight = oSpan.style.height;
				if (radMenu.gradient)
					oSpan.style.filter = "progid:DXImageTransform.Microsoft.Gradient(gradientType=1,startColorStr=#ffffff,endColorStr="+radMenu.bitmapBackColor+")";
				else
					oSpan.style.backgroundColor = radMenu.bitmapBackColor;
				oSpan.style.zIndex = "-100";
				item.appendChild(oSpan);
			}
		}
	}
}

function RadMenu_OnClientContextShowing(sender, eventArgs)
{
	return false;
}

function RadMenu_OnMouseOut(sender, eventArgs)
{
	element = document.getElementById(eventArgs.Item.ID);
	element.style.background = "transparent"; 
	element.style.filter = "alpha(opacity=100)";
}

function RadMenu_OnMouseOver(sender, eventArgs)
{
	menu = document.getElementById(sender.ID);
	var radMenu = RadMenuMap.Get(menu.parentNode.id);
	element = document.getElementById(eventArgs.Item.ID);
	element.style.background = radMenu.highlightColor; 
	element.style.filter = "alpha(opacity=60)";
}

function RadControl_SetIcon(objElement)
{
	var imgs = objElement.getElementsByTagName("IMG");;
	for (var i=0;i<imgs.length;i++) 
	{
		imgs[i].style.width="16px";
		imgs[i].style.height="16px";
		if(imgs[i].src.indexOf(".bmp") != -1)
			imgs[i].style.filter = "Chroma(Color = #c0c0c0)";
	}
}

function RadMenu_ShowPopup(clientID)
{
	var menu = window[clientID];
	if (menu.IsContext)
	{
		var menuElement = document.getElementById(clientID);
		var x = parseInt(menuElement.style.left);
		var y = parseInt(menuElement.style.top);
		menu.ShowAt(x, y);
	}
}

function PB_RadStyleReset(calendarID)
{
	PB_RadSetTodayBorder(calendarID);
	
	var oCalendar = document.getElementById(calendarID);
	var oCalendarTop = document.getElementById(calendarID + "_Top");

	var cursor = oCalendar.style.cursor;
	if (cursor == "")
	{
		cursor = "default";
	}
		
	var aTags = oCalendarTop.getElementsByTagName("a");
	if (aTags)
	{
		var boldCalendar = oCalendar.style.fontWeight == "bold" || oCalendar.style.fontWeight == "700";
		
		for (var i = 0; i < aTags.length; i++)
		{
			var bold = aTags[i].parentElement.style.fontWeight;
			var underline = aTags[i].parentElement.style.textDecoration;
		
			var color = aTags[i].parentElement.style.color;
			var backgroundColor = aTags[i].parentElement.style.backgroundColor;

			if (boldCalendar)
			{
				aTags[i].style.fontWeight = "bold";
			}
			else if (bold)
			{
				aTags[i].style.fontWeight = bold;
			}
			
			if (underline)
			{
				aTags[i].style.textDecoration = underline;
			}

			aTags[i].style.cursor = cursor;
			
			if (color)
			{
				aTags[i].style.color = color;
			}
			
			if (backgroundColor)
			{
				aTags[i].style.backgroundColor = backgroundColor;
			}
		}
	}

	var aTags = oCalendarTop.getElementsByTagName("td");
	if (aTags)
	{
		for (var i = 0; i < aTags.length; i++)
		{
			aTags[i].style.cursor = cursor;
		}
	}
}

function PB_RadSetTodayBorder(calendarID, oCell, mouseOver)
{
	var oToday = document.getElementById(calendarID+'_today');
	if (oToday)
	{
		var tD = new Date(oToday.value);

		var setCss = false;
		if (typeof(oCell) == "undefined")
		{
			var radCalendar = window[calendarID];
			oCell = radCalendar.FindRenderDay([tD.getFullYear(), tD.getMonth() + 1, tD.getDate()]);
			setCss = (oCell != null);
		}
		else
		{
			var newD = new Date(oCell.Date[0], oCell.Date[1] - 1, oCell.Date[2]);
			setCss = (newD.toDateString() == tD.toDateString());

			var backgroundColor = oCell.DomElement.currentStyle.backgroundColor;
			if (backgroundColor)
			{
				var aTags = oCell.DomElement.getElementsByTagName("a");
				if (aTags)
				{
					if (mouseOver)
					{
						oCell.OldCellBackColor = aTags[0].style.backgroundColor;
						aTags[0].style.backgroundColor = backgroundColor;
					}
					else
					{
						aTags[0].style.backgroundColor = oCell.OldCellBackColor;
						oCell.OldCellBackColor = "";
					}
				}
			}
		}

		if (setCss)
		{
			var oTodayCycle = document.getElementById(calendarID+'_tc');
			if (oTodayCycle.value == 'true')
			{
				oCell.DomElement.style.cssText += ';border:solid red 1px';
			}
		}
	}
}

