/* Acme Profiling Technology (APT™) ©2001-2004 Acme Express, Inc. All rights reserved. */
/*************************************
 * General button constants
 *************************************/

// Webdings
var conBtnFirst				= '9';
var conBtnPrevPage			= '7';
var conBtnPrev				= '3';
var conBtnNext				= '4';
var conBtnNextPage			= '8';
var conBtnLast				= ':';
var conBtnUp				= '5';
var conBtnDown				= '6';
var conBtnArrowCircle		= '`';				// (grave accent)
var conBtnDelete			= 'r';
var conBtnDisk				= 0xCD;				// (capital I with acute accent)
var conBtnMagnifier			= 'L';
var conBtnTools				= '@';
var conBtnWindow			= '1';
var conBtnWindowStack		= '2';
var conBtnCalendar			= 0xA6;				// (split vertical bar)

// Wingdings
var conBtnCircleArrowDown	= 0xFE;				// (thorn)
var conBtnCircleArrowLeft	= 0xDB;				// (capital "U" with circumflex)
var conBtnCircleArrowRight	= 0xDC;				// (capital "U" with diaresis)
var conBtnCircleArrowUp		= 0xDD;				// (capital "Y" with acute accent)
var conBtnDocument			= '2';
var conBtnDocumentStack		= '4';
var conBtnFolderClosed		= '0';
var conBtnFolderOpen		= '1';
var conBtnOpenBook			= '&';
var conBtnPencil			= '!';
var conBtnSpectacles		= '$';
var conBtnUndo				= 0xC5;				// (capital "A" with ring)

// images
var conBtnImgAddItem		= '/scripts/images/additem.gif';
var conBtnImgAddWizard		= '/scripts/images/ctxwiz_opn.gif';
var conBtnImgAddWizardGray	= '/scripts/images/ctxwiz_opn-gray.gif';
var conBtnImgCalendar		= '/scripts/images/tool-newappt.gif';
var conBtnImgCopy			= '/scripts/images/tool-copy.gif';
var conBtnimgCopyGray		= '/scripts/images/tool-copy-gray.gif';
var conBtnImgDelete			= '/scripts/images/tool-delete.gif';
var conBtnImgDeleteGray		= '/scripts/images/tool-delete-gray.gif';
var conBtnImgDown			= '/scripts/images/downArrow.gif';
var conBtnImgDownSmall		= '/scripts/images/tool-downarrow.gif';
var conBtnImgEdit			= '/scripts/images/comedit.gif';
var conBtnImgEditGray		= '/scripts/images/comedit-gray.gif';
var conBtnImgFilter			= '/scripts/images/mfilter.gif';
var conBtnImgFirst			= '/scripts/images/first.gif';
var conBtnImgFirstGray		= '/scripts/images/first-gray.gif';
var conBtnImgFolderClosed	= '/scripts/images/msodir.gif';
var conBtnImgFolderOpen		= '/scripts/images/icon-doc-cab.gif';
var conBtnImgLast			= '/scripts/images/last.gif';
var conBtnImgLastGray 		= '/scripts/images/last-gray.gif';
var conBtnImgMinus			= '/scripts/images/minusonly.gif';
var conBtnImgMove			= '/scripts/images/tool-move.gif';
var conBtnimgMoveGray		= '/scripts/images/tool-move-gray.gif';
var conBtnImgNew			= '/scripts/images/icon-doc.gif';
var conBtnImgNewFolder		= '/scripts/images/tool-newfolder.gif';
var conBtnImgNewGray		= '/scripts/images/icon-doc-gray.gif';
var conBtnImgNext			= '/scripts/images/next.gif';
var conBtnimgNextGray		= '/scripts/images/next-gray.gif';
var conBtnImgNextPage		= '/scripts/images/view-nextpage.gif';
var conBtnImgOptions		= '/scripts/images/tool-options.gif';
var conBtnImgPlus			= '/scripts/images/plusonly.gif';
var conBtnImgPrev			= '/scripts/images/previous.gif';
var conBtnImgPrevGray	    = '/scripts/images/previous-gray.gif';
var conBtnImgPrevious		= '/scripts/images/previous-gray.gif';
var conBtnImgPreviousGray	= '/scripts/images/previous-gray.gif';
var conBtnImgProperties		= '/scripts/images/dbcindex.gif';
var conBtnImgRecur			= '/scripts/images/tool-recur.gif';
var conBtnImgSave			= '/scripts/images/tool-save.gif';
var conBtnImgSaveHot		= '/scripts/images/tool-save-hot.gif';
var conBtnImgSaveGray		= '/scripts/images/tool-save-gray.gif';
var conBtnImgSpinnerDown	= '/scripts/images/view-sortdown.gif';
var conBtnImgSpinnerUp		= '/scripts/images/view-sortup.gif';
var conBtnImgUndo			= '/scripts/images/undo.gif';
var conBtnImgUndoGray		= '/scripts/images/undo_.gif';
var conBtnImgUpOne			= '/scripts/images/upone.gif';

/********************************************
 * Open the choose object dialog
 ********************************************/
function chooseObject()
{
	var strURL;
	strURL			= "/scripts/APT/Components/dlgObject.asp"
	var strFeatures = "";
	var	vHeight		= 240;
	var	vWidth		= 360;
	strFeatures	   += 'dialogHeight:' + vHeight + 'px;';
	strFeatures    += 'dialogWidth:' + vWidth + 'px;';
	strFeatures	   += 'center:yes;'
	strFeatures	   += 'help:no;';
	strFeatures	   += 'resizable:no;';
	strFeatures	   += 'scrolling:no;';
	strFeatures	   += 'status:no;'

	return showModalDialog(strURL, '', strFeatures);
}


/********************************************
 * Open the Query Parameter dialog Box
 ********************************************/
function openQueryParameters(InputFilter)
{
	var strURL		= '/scripts/APT/components/dlgQueryParameter.asp';
	var strFeatures = "";
	var	vHeight		= 240;
	var	vWidth		= 360;
	strFeatures	   += 'dialogHeight:' + vHeight + 'px;';
	strFeatures    += 'dialogWidth:' + vWidth + 'px;';
	strFeatures	   += 'center:yes;'
	strFeatures	   += 'help:no;';
	strFeatures	   += 'resizable:no;';
	strFeatures	   += 'scrolling:no;';
	strFeatures	   += 'status:no;'
	return showModalDialog(strURL, InputFilter, strFeatures);
}

/***************************************************************************************
 * 	getBtnPreference	This function puts the user preference button on the page,
 *						along with its open function.
 *						The button is only displayed for IE, since the function
 *						uses a dialog box to display the preferences.
 *
 *	Requirements:		/scripts/APT/includes/header.asp
 *						Request("Object")
 *
 *
 *	Input				bTableCell	True: enclose the button in a table cell
 *									with a spacing cell to its right.
 *	Optional:			InitialTab
 ***************************************************************************************/
function getBtnPreference(ID, bTableCell, InitialTab, strOnChangeEventHandler)
{
	var strPage					= 'dlgPreference.asp';
	if (typeof(conPreferencePage) != 'undefined')
		strPage					= conPreferencePage;

	var strOutput				= '';
	var strTitle				= '';
	var evtHandler				= strOnChangeEventHandler;
	if (typeof(evtHandler) == 'undefined')
		evtHandler				= '';
	if (evtHandler.length > 0)
	{
		if (evtHandler.lastIndexOf('()') == -1)
			evtHandler		   += '()';
	}

	// must server-side IE request
	if (is_ie && (typeof(Request) != 'undefined'))
	{
		var strTabs				= getTabs('input')

		var strObject			= Request('Object') + '';
		if (strObject == 'undefined')
			strObject 			= 'member organization';

		var strScreenID			= getScreenID()

		var strInitialTab		= getString(InitialTab);
		if (strInitialTab.length ==0)
			strInitialTab		= 'Detail View';

		strTitle				= 'User Preference (ALT+P)';

 		strOutput			   += strTabs + getButton(ID, 'ButtonBarRegular', 'openPreference()', '', strTitle, '', true, bTableCell, conBtnImgOptions, '', false);

 		strOutput			   += strTabs +	"<script language='JavaScript' defer>\n";
		strOutput			   += strTabs +	"	function openPreference(InitialTab)\n";
		strOutput			   += strTabs +	"	{\n";
		strOutput			   += strTabs +	"		if (InitialTab == null) InitialTab = '" + strInitialTab + "';\n";
		strOutput			   += strTabs +	"		var	strKey		= false;\n"
		strOutput			   += strTabs +	"		if (window.event)\n"
		strOutput			   += strTabs +	"			strKey = window.event.shiftKey;\n"
		strOutput			   += strTabs +	"		var strURL		= '" + Application("APT_ComponentPath") + "/" + strPage + "?object=" + strObject + "&screenName=" + strScreenID + "';\n";
		strOutput			   += strTabs +	"		strURL		   += '&tab=' + InitialTab;\n";
		strOutput			   += strTabs +	"		strURL		   += '&key=' + strKey;\n";
		strOutput			   += strTabs +	"		var strFeatures = getDialogFeatures(568, 338);\n";
		strOutput			   += strTabs +	"		var bChanges	= showModalDialog(strURL, '', strFeatures);\n";
		if (evtHandler.length > 0)
		{
			strOutput		   += strTabs +	"		if (getBoolean(bChanges))\n";
			strOutput		   += strTabs +	"			window.setTimeout('" + evtHandler + "', 250, 'JavaScript');\n";
		}
		strOutput			   += strTabs +	"		return;\n";
		strOutput			   += strTabs +	"	}\n";
		strOutput			   += strTabs +	"</script>\n";
	}
	return strOutput;
}

/************************************************************************************
 * Get property bag.	This function gets the requested property bag.
 ************************************************************************************/
function getPropertyBag(UserID, ScreenID, ObjectID, PreferenceType, Keyword)
{
	if (!is_ie)
		return '';
	var objRS		= RSExecute('/scripts/APT/components/rsPreference.asp', 'getPropertyBag', UserID, ScreenID, ObjectID, PreferenceType, Keyword);
	return objRS.return_value;
}
function getPropertyBagExtended(UserID, ScreenID, ObjectID, PreferenceType, Keyword)
{
	if (!is_ie)
		return '';
	var objRS		= RSExecute('/scripts/APT/components/rsPreference.asp', 'getPropertyBagExtended', UserID, ScreenID, ObjectID, PreferenceType, Keyword);
	return objRS.return_value;
}
/************************************************************************************
 * Put property bag.	This function saves the requested property bag. Since it
 *						implements remote scripting, there is a limit on the the data
 *						length which may safely be passed (MS says the limit is 2,083
 *						less the length of the URL, but my tests have shown a much
 *						smaller length --dfd--). Therefore, the property bag is
 *						broken into segments to be sent back to the server.
 ************************************************************************************/
function putPropertyBag(UserID, ScreenID, ObjectID, PreferenceType, Keyword, PropertyBag, strStatus)
{
	if (!is_ie)
		return '';
	var	conSegment		= 256;
	var	bClear 			= true;
	var	strPropertyBag	= jTrim(PropertyBag + '');
	var strSegment		= '';

	while (strPropertyBag.length > 0 || bClear)
	{
		if (strPropertyBag.length > conSegment)
		{
			strSegment		= strPropertyBag.substr(0, conSegment);
			strPropertyBag	= strPropertyBag.substr(conSegment);
		}
		else
		{
			strSegment		= strPropertyBag;
			strPropertyBag	= '';
		}
		var objRS		= RSExecute('/scripts/APT/components/rsPreference.asp', 'putPropertyBag', UserID, ScreenID, ObjectID, PreferenceType, Keyword, bClear, strSegment);
		bClear			= false;
	}
	return objRS.return_value;
}

var btnNbr	= 0;
/****************************************************************************
 * 	getButton		This function gets the HTML rendering for a button
 *					To create a spinner button, load the "up" image in
 *					the image, the "down" image in the disabled image,
 *					"true" in the spinner flag.
 *
 *	modified		05/16/2002 DF Denes
 *					added key processing for buttons -- tab, enter, space
 ****************************************************************************/
function getButton(ID, Class, Click, Value, Title, AcceleratorKey, bDisplay, bTD, Image, DisabledImage, bSpinner, ClickDown)
{
	var nCount					= 1;
	if (bSpinner)
		nCount					= 2;

	var strOutput				= '';
	var strValue				= getString(Value);
	var strImage				= getString(Image);
	var strTitle				= getString(Title);
	var strDisabledImage		= getString(DisabledImage);
	var strID					= getString(ID);
	if (strID.length == 0)
	{
		btnNbr++;
		strID					= 'btn' + btnNbr;
	}
	var bDisabledImage			= (strDisabledImage.length > 0);
	var strClick				= Click;


	if (strValue.length == 0 && strImage.length == 0)
		strValue				= strID;


	if (bTD)	strOutput	   += '<td align="center" valign="middle">\n';

	for (var i=0; i < nCount; i++)
	{
		if (bSpinner)
		{
			if (i==0)
			{
				strID				= getString(ID) + 'Up';
				strOutput		   += '<table cellspacing=0 cellpadding=0 border=0>\n';
			}
			else
			{
				strID				= getString(ID) + 'Down';
				strImage			= strDisabledImage;
				strClick			= ClickDown;
			}
			strOutput			   += '<tr><td>\n';
		}

		strOutput				   += '	<table id="' + strID + '" name="' + strID + '"';			//> (shut up NoteTab Pro)
		strOutput				   += '	align="center" valign="middle"';
		strOutput				   += '	class="' + getString(Class) + '"';
		strOutput				   += '	cellspacing="0"';
		strOutput				   += '	cellpadding="0"';
		strOutput				   += '	border="0"';
		strOutput				   += ' onClick="' + strClick + '"';
		strOutput				   += '	onMouseOver="buttonBar_MouseOver(this);"';
		strOutput				   += ' onMouseOut="buttonBar_MouseOut(this);"'
		strOutput				   += ' onMouseDown="buttonBar_MouseDown(this);"';
		strOutput				   += ' onMouseUp="buttonBar_MouseUp(this);"';
		strOutput				   += ' onDragStart="javascript: return false;"';
		strOutput				   += ' onSelectStart="javascript: return false;"';
		strOutput				   += ' onKeyDown="javascript: if (window.event.keyCode == 13 || window.event.keyCode == 32) buttonBar_MouseDown(this);"';
		strOutput				   += ' onKeyUp="javascript: if (window.event.keyCode == 13 || window.event.keyCode == 32) buttonBar_MouseOut(this);"';
		strOutput				   += ' onKeyPress="javascript: if (window.event.keyCode == 13 || window.event.keyCode == 32) this.click();"';
		strOutput				   += ' title="' + strTitle + '"';
		strOutput				   += '	tabIndex="0"';

		if (bDisplay)	strOutput  += ' style="display:block;">\n';
		else			strOutput  += ' style="display:none;">\n';

		strOutput				   += '		<tr valign=middle style="width:100%; height:100%;">\n';
		strOutput				   += '			<td align=center valign=middle style="width:100%; height:100%;">';
		if (strValue.length > 0)
			strOutput			   += strValue;
		else
		{
			strOutput			   += '<img id="img_' + strID + '" align=center valign=middle src="' + strImage + '" border="0" style="display:block;">';
			if (bDisabledImage && !bSpinner)
				strOutput		   += '<img id="imgDisabled_' + strID + '" align=center valign=middle src="' + strDisabledImage + '" border="0" style="display:none;">';
		}
		strOutput				   += '</td>\n';
		strOutput				   += '		</tr>\n';

		strOutput				   += '	</table>\n';

		if (bSpinner)
		{
			strOutput			   += '</td></tr>\n';
			if (i==1)	strOutput  += '</table>\n';
		}
	}

	if (bTD)	strOutput	   += '</td>\n';

	return strOutput;
}
