

PTCommonOpener.OPENER_SPACENAME = 'Opener';
PTCommonOpener.OPENER_MODE_CREATE 		= 0;
PTCommonOpener.OPENER_MODE_EDIT 		= 1;
PTCommonOpener.OPENER_MODE_VIEW 		= 2;
PTCommonOpener.OPENER_MODE_VIEW_META_DATA 	= 3;
PTCommonOpener.OPENER_MODE_SEARCH_BROWSE 	= 4;
PTCommonOpener.OPENER_MODE_SEARCH_EDIT 		= 5;
	

PTCommonOpener.QS_UUID 			= 'uuID';
PTCommonOpener.QS_OPEN 			= 'open';
PTCommonOpener.QS_CLASSID 		= 'clsID';
PTCommonOpener.QS_OBJECTID 		= 'objID';
PTCommonOpener.QS_MODE 			= 'mode';
PTCommonOpener.QS_USERID 		= 'userID';
PTCommonOpener.QS_FOLDERID 		= 'folderID';
PTCommonOpener.QS_PROV_ENG_NAME		= 'provEngName';
PTCommonOpener.QS_OPEN_UICLASSTYPEDESC_CLASSNAME = "space";
PTCommonOpener.QS_ACTIVITY_SPACE_NAME = "asName";
PTCommonOpener.QS_SPACENAME		= 'space';
PTCommonOpener.QS_PARENTSPACENAME	= 'parentname';
PTCommonOpener.QS_PARENTSPACEID		= 'parentid';
PTCommonOpener.QS_CACHED		= 'cached';
PTCommonOpener.QS_XUI_DATASOURCE_ID = 'dataSourceID';
PTCommonOpener.QS_XUI_WEBSERVICE_ID = 'webServiceID';
PTCommonOpener.JS_METHOD_GET_APPLICATION_BASE_URL	= 'OpenerAS_GetApplicationBaseURL';
PTCommonOpener.JS_METHOD_GET_CURRENT_USER_ID 		= 'OpenerAS_GetCurrentUserID';	
PTCommonOpener.JS_METHOD_GET_PARENTSPACE_NAME 		= 'OpenerAS_GetParentSpaceName';	
PTCommonOpener.JS_METHOD_GET_PARENTSPACE_ID 		= 'OpenerAS_GetParentSpaceID';	

if ( getJSUtilVersionObject() && eval(getJSUtilVersionObject()) )
{
	PTCommonOpener.JSUTIL_VERSIONOBJ = eval(getJSUtilVersionObject());		
} else {
	alert("Cannot find valid JSUtil version object. Define a getJSUtilVersionObject function to return the name of the strongly versioned JSUtil object.")		
}

function PTCommonOpener()
{
	return this;
}

PTCommonOpener.getOpenerURLCreate = function(_nClassID, _nFolderID, _strParentSpaceName, _strParentSpaceID, 
	_strApplicationBaseURL, _nUserID)
{
	var strQSArgs = "";
	strQSArgs = strQSArgs + PTCommonOpener.getFirstQSArg(PTCommonOpener.QS_OPEN, _nClassID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_FOLDERID, _nFolderID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACENAME, _strParentSpaceName);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACEID, _strParentSpaceID);
	
	return PTCommonOpener.getOpenerURL(strQSArgs, PTCommonOpener.OPENER_MODE_CREATE, _strApplicationBaseURL, _nUserID);
}
PTCommonOpener.getOpenerURLCreateExt = function(_nClassID, _nFolderID, _strProvEnglishName, _nDataSourceID, 
	_nWebServiceID, _strParentSpaceName, _strParentSpaceID, _strApplicationBaseURL, _nUserID)
{
	var strQSArgs = "";
	strQSArgs = strQSArgs + PTCommonOpener.getFirstQSArg(PTCommonOpener.QS_OPEN, _nClassID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_FOLDERID, _nFolderID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PROV_ENG_NAME, _strProvEnglishName);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_XUI_DATASOURCE_ID, _nDataSourceID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_XUI_WEBSERVICE_ID, _nWebServiceID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACENAME, _strParentSpaceName);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACEID, _strParentSpaceID);
	
	return PTCommonOpener.getOpenerURL(strQSArgs, PTCommonOpener.OPENER_MODE_CREATE, _strApplicationBaseURL, _nUserID);
}

PTCommonOpener.getOpenerURLOpenAS = function(_strASName, _strOptQSArgs, _nOpenerMode, 
	_strParentSpaceName, _strParentSpaceID, _strApplicationBaseURL, _nUserID)
{
	var strQSArgs = "";
	strQSArgs = strQSArgs + PTCommonOpener.getFirstQSArg(PTCommonOpener.QS_OPEN, PTCommonOpener.QS_OPEN_UICLASSTYPEDESC_CLASSNAME);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_ACTIVITY_SPACE_NAME, _strASName);

	if ((null != _strOptQSArgs) && ('null' != _strOptQSArgs))
	{
		strQSArgs = strQSArgs + _strOptQSArgs;
	}

	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACENAME, _strParentSpaceName);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACEID, _strParentSpaceID);
	
	return PTCommonOpener.getOpenerURL(strQSArgs, _nOpenerMode, _strApplicationBaseURL, _nUserID);
}
PTCommonOpener.getOpenerURLOpenUUID = function(_strUUID, _strOptQSArgs, _strParentSpaceName, 
	_strParentSpaceID, _strApplicationBaseURL, _nUserID)
{
	var strQSArgs = "";
	strQSArgs = strQSArgs + PTCommonOpener.getFirstQSArg(PTCommonOpener.QS_UUID, _strUUID);

	if ((null != _strOptQSArgs) && ('null' != _strOptQSArgs))
	{
		strQSArgs = strQSArgs + _strOptQSArgs;
	}

	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACENAME, _strParentSpaceName);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACEID, _strParentSpaceID);
	
	return PTCommonOpener.getOpenerURL(strQSArgs, _nOpenerMode, _strApplicationBaseURL, _nUserID);
}

PTCommonOpener.getOpenerURLOpenObjID = function(_nClassID, _nObjectID, _strOptQSArgs, _nOpenerMode, _strParentSpaceName, 
	_strParentSpaceID, _strApplicationBaseURL, _nUserID)
{
	var strQSArgs = "";
	strQSArgs = strQSArgs + PTCommonOpener.getFirstQSArg(PTCommonOpener.QS_OPEN, _nClassID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_OBJECTID, _nObjectID);
	
	if ((null != _strOptQSArgs) && ('null' != _strOptQSArgs))
	{
		strQSArgs = strQSArgs + _strOptQSArgs;
	}
	
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACENAME, _strParentSpaceName);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACEID, _strParentSpaceID);
	
	return PTCommonOpener.getOpenerURL(strQSArgs, _nOpenerMode, _strApplicationBaseURL, _nUserID);
}
PTCommonOpener.getOpenerURL = function(_strQSArgs, _nOpenerMode, _strApplicationBaseURL, _nUserID)
{
	var strURL = _strApplicationBaseURL;

	if ((null != _strQSArgs) && ('null' != _strQSArgs))
	{
		// this should not be null.
		strURL = strURL + _strQSArgs;
	}
	
	// Always try to get a cached Opener space
	strURL = strURL + PTCommonOpener.getQSArg(PTCommonOpener.QS_CACHED, 'true');

	strURL = strURL + PTCommonOpener.getQSArg(PTCommonOpener.QS_MODE, _nOpenerMode);
	strURL = strURL + PTCommonOpener.getQSArg(PTCommonOpener.QS_USERID, _nUserID);

	return strURL;
}

PTCommonOpener.getOpenerURLCreate = function(_nClassID, _nFolderID)
{
	var strQSArgs = "";
	strQSArgs = strQSArgs + PTCommonOpener.getFirstQSArg(PTCommonOpener.QS_OPEN, _nClassID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_FOLDERID, _nFolderID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACENAME, eval(PTCommonOpener.JS_METHOD_GET_PARENTSPACE_NAME + '()'));
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACEID, eval(PTCommonOpener.JS_METHOD_GET_PARENTSPACE_ID + '()'));

	return PTCommonOpener.getOpenerURL(strQSArgs, PTCommonOpener.OPENER_MODE_CREATE);
}

PTCommonOpener.getOpenerURLCreateExt = function(_nClassID, _nFolderID, _strProvEnglishName, _nDataSourceID, 
	_nWebServiceID)
{
	var strQSArgs = "";
	strQSArgs = strQSArgs + PTCommonOpener.getFirstQSArg(PTCommonOpener.QS_OPEN, _nClassID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_FOLDERID, _nFolderID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PROV_ENG_NAME, _strProvEnglishName);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_XUI_DATASOURCE_ID, _nDataSourceID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_XUI_WEBSERVICE_ID, _nWebServiceID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACENAME, eval(PTCommonOpener.JS_METHOD_GET_PARENTSPACE_NAME + '()'));
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACEID, eval(PTCommonOpener.JS_METHOD_GET_PARENTSPACE_ID + '()'));
	
	return PTCommonOpener.getOpenerURL(strQSArgs, PTCommonOpener.OPENER_MODE_CREATE);
}
PTCommonOpener.getOpenerURLOpenAS = function(_strASName, _strOptQSArgs, _nOpenerMode)
{
	var strQSArgs = "";
	strQSArgs = strQSArgs + PTCommonOpener.getFirstQSArg(PTCommonOpener.QS_OPEN, PTCommonOpener.QS_OPEN_UICLASSTYPEDESC_CLASSNAME);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_ACTIVITY_SPACE_NAME, _strASName);

	if ((null != _strOptQSArgs) && ('null' != _strOptQSArgs))
	{
		strQSArgs = strQSArgs + _strOptQSArgs;
	}

	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACENAME, eval(PTCommonOpener.JS_METHOD_GET_PARENTSPACE_NAME + '()'));
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACEID, eval(PTCommonOpener.JS_METHOD_GET_PARENTSPACE_ID + '()'));
	
	return PTCommonOpener.getOpenerURL(strQSArgs, _nOpenerMode, _strApplicationBaseURL, _nUserID);
}
PTCommonOpener.getOpenerURLOpenUUID = function(_strUUID, _strOptQSArgs, _nOpenerMode)
{
	var strQSArgs = "";
	strQSArgs = strQSArgs + PTCommonOpener.getFirstQSArg(PTCommonOpener.QS_UUID, _strUUID);

	if ((null != _strOptQSArgs) && ('null' != _strOptQSArgs))
	{
		strQSArgs = strQSArgs + _strOptQSArgs;
	}

	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACENAME, eval(PTCommonOpener.JS_METHOD_GET_PARENTSPACE_NAME + '()'));
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACEID, eval(PTCommonOpener.JS_METHOD_GET_PARENTSPACE_ID + '()'));
	
	return PTCommonOpener.getOpenerURL(strQSArgs, _nOpenerMode, _strApplicationBaseURL, _nUserID);
}
PTCommonOpener.getOpenerURLOpenObjID = function(_nClassID, _nObjectID, _strOptQSArgs, _nOpenerMode)
{
	var strQSArgs = "";
	strQSArgs = strQSArgs + PTCommonOpener.getFirstQSArg(PTCommonOpener.QS_OPEN, _nClassID);
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_OBJECTID, _nObjectID);

	if ((null != _strOptQSArgs) && ('null' != _strOptQSArgs))
	{
		strQSArgs = strQSArgs + _strOptQSArgs;
	}
	
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACENAME, eval(PTCommonOpener.JS_METHOD_GET_PARENTSPACE_NAME + '()'));
	strQSArgs = strQSArgs + PTCommonOpener.getQSArg(PTCommonOpener.QS_PARENTSPACEID, eval(PTCommonOpener.JS_METHOD_GET_PARENTSPACE_ID + '()'));
	
	return PTCommonOpener.getOpenerURL(strQSArgs, _nOpenerMode);
}

PTCommonOpener.getOpenerURL = function(_strQSArgs, _nOpenerMode)
{
	var strURL = eval(PTCommonOpener.JS_METHOD_GET_APPLICATION_BASE_URL + '()');

	if ((null != _strQSArgs) && ('null' != _strQSArgs))
	{
		// this should not be null.
		strURL = strURL + _strQSArgs;
	}
	
	// Always try to get a cached Opener space
	strURL = strURL + PTCommonOpener.getQSArg(PTCommonOpener.QS_CACHED, 'true');

	strURL = strURL + PTCommonOpener.getQSArg(PTCommonOpener.QS_MODE, _nOpenerMode);
	strURL = strURL + PTCommonOpener.getQSArg(PTCommonOpener.QS_USERID, eval(PTCommonOpener.JS_METHOD_GET_CURRENT_USER_ID + '()'));
	
	return strURL;
}
PTCommonOpener.openInSameWindow = function(_strURL)
{
	window.location = _strURL;		
}
PTCommonOpener.openInNewWindow = function(_strURL, _strWindowName, _strWidth, _strHeight, _bIsFancyWindow)
{
	return PTCommonOpener.JSUTIL_VERSIONOBJ.PTWindowUtil.openWindow(_strURL, _strWindowName, _strHeight, _strWidth, _bIsFancyWindow);
}

PTCommonOpener.getQSArg = function(_strArgName, _strArgValue)
{
	if ((null == _strArgName) || (null == _strArgValue) || ('null' == _strArgValue) || ('' == _strArgValue))
	{
		return "";
	}
	else
	{
		return '&' + _strArgName + '=' + _strArgValue;
	}
}

PTCommonOpener.getFirstQSArg = function(_strArgName, _strArgValue)
{
	if ((null == _strArgName) || (null == _strArgValue) || ('null' == _strArgValue) || ('' == _strArgValue))
	{
		return "";
	}
	else
	{
		return _strArgName + '=' + _strArgValue;
	}
}
