/*
 *	ccCoursePlayer.js
 *	Build 3.3.0.6
 *	Copyright 1999-2003 Accenture
 *	File Size: 80532
 */

var ACTIVITY_FEEDBACK_HEIGHT = 350;
var ACTIVITY_FEEDBACK_WIDTH = 400;
var CFG_REQD_LOGIN = "breqLogin";
var COMPLETE_TSTATE = 100;
var COURSE_LVL_DATA = "Course_Lvl_Data";
var COURSE_PROGRESS = "CourseProgress";
var COURSE_VERSION_TIMESTAMP = "CourseVersionTimeStamp";
var cSTD_PROGREL = 0;
var cTAB_PROGREL = 1;
var CURRENT_SUFFIX = "c.gif";
var DEFAULT_CURSOR = "default";
var DISABLED_SUFFIX = "d.gif";
var EVENT1 = 1;
var EVENT2 = 2;
var EVENT3 = 3;
var EVENT4 = 4;
var EVENTBROADCAST = 99;
var FEEDBACK_FRAMES = 1;
var FEEDBACK_POPUP = 0;
var HTML_ENCODED_SPACE = "%20";
var iCols=10;
var INACTIVE_TEXT_COLOR = "gray";
var inxAttributes=8;
var inxFirstItem=1;
var inxFraConfig=8;
var inxLvl=0;
var inxNode=1;
var inxPage=6;
var inxProg=5;
var inxSeq=4;
var inxTitle=7;
var inxTree=3;
var inxType=2;
var LAST_VISITED_FRAMESET = "LastVisitedFrameset";
var LAST_VISITED_PAGE = "LastVisitedPage";
var LEN_SUFFIX = 5;
var LOGINKEY = "login";
var MODULE_LVL_DATA = "Module_Lvl_Data";
var MODULE_PROGRESS = "ModuleProgress";
var MODULE_START_OVERRIDE = "ModuleStartOverride";
var MODULE_VERSION = "ModuleVersion";
var MSG_MOUDLEUNLOADED = 5;
var MSG_NEWLINKSLOADED = 6;
var MSG_OPENERFOCUS = 7;
var MSG_PAGELOADED = 1;
var MSG_PAGEUNLOADED = 2;
var MSG_PROGRESSCHANGED = 3;
var MSG_REMOTENAVIGATEREQUEST = 8;
var MSG_REQUESTPAGELOAD = 4;
var MSGDELIMITER = "|";
var NOLOGIN_USERID = "DefaultUser";
var NORMAL_SUFFIX = "n.gif";
var OVER_SUFFIX = "r.gif";
var PAGE_ACTIVITY = "PageActivity";
var PAGE_ACTIVITY_DATA = "RawData";
var PARTIAL_CREDIT = 10;
var POPUP_AS_POPUP = 0;
var POPUP_BIG = 4;
var POPUP_BIG_TITLE = "BigPopup";
var POPUP_COMMENT = 5;
var POPUP_CUSTOM = 10;
var POPUP_FEEDBACK = 0;
var POPUP_FULLSCREENLAUNCH = 3;
var POPUP_GLOSSARY = 1;
var POPUP_IN_GLOSSARY = 1;
var POPUP_PADDING = 20;
var POPUP_POS_CENTER_ON_OWNER = 6;
var POPUP_POS_CENTER_ON_SCREEN = 7;
var POPUP_POS_MOUSE_XY = 8;
var POPUP_POS_USERDEFINED = 9;
var POPUP_TOPMOST = 2;
var sAttrChildDisplay="TCD=";
var sAttrNodeDisplay="TSN=";
var sContentFrame = "fra_content";
var sDefaultFrame = "fra_content";
var sFooterFrame = "fra_footer";
var sGlossaryLinkFrame = "fra_glossarylinks";
var sGlossaryLinkPage = "GlossaryLinks.htm";
var sGlossaryNavFrame = "fra_glossarynav";
var sGlossaryTermFrame = "fra_glossaryterm";
var sHeaderFrame = "fra_header";
var sMiniMainFrame = "fra_minimain";
var sNavFrame = "fra_navpane";
var TEXT_SINGLE_SPACE = " ";

var atext_cur_back;
var atext_cur_fore;
var atext_cur_back_sub;
var atext_cur_fore_sub;
var atext_dim_back;
var atext_dim_fore;
var atext_nml_back;
var atext_nml_fore;
var atext_nml_back_sub;
var atext_nml_fore_sub;
var atext_ovr_back;
var atext_ovr_fore;
var aDefaultFraConfigs = new Array();
var ail_apreloadImages = new Array();
var bGoInvoked=false;
var courseID;
var crse_oAICC;
var crse_oController;
var crse_oFramesManager;
var crse_oMessageBroker = 0;
var crse_oProgress;
var crse_oStorage;
var crse_oWindowManager;
var crse_sCourseID;
var crse_sModuleID;
var gbOpenerExists = false;
var list_i = new list_iterator(null);
var moduleID;
var msg_oMsgBroker;
var oAICC;
var oController;
var oMainSTAWin;
var oNewWin;
var oPopup, pop_oOpener, pop_oTopWindow, pop_oController, gsName, otempglobal;
var oProgress;
var oStorage;
var oWindowManager = null;
var spageKey;
var vCurFraConfig = "";

function con_PageInit()
{
	oMainSTAWin		= util_GetSTAFramesetWindow(window);
	spageKey		= act_PageKey();
	oController		= oMainSTAWin.crse_Controller();
	oProgress		= oMainSTAWin.crse_Progress();
	oStorage		= oMainSTAWin.crse_Storage();
	oWindowManager	= oMainSTAWin.crse_WindowManager();
	courseID		= oMainSTAWin.crse_CourseID();
	moduleID		= oMainSTAWin.crse_ModuleID();
	oAICC			= oMainSTAWin.crse_AICC();

	if("" != document.location.hash)
	{
		var sTarget = document.location.hash.substr(1);
		if(null != document.all[sTarget])
		{
			util_Highlight(document.all[sTarget]);
		}
	}

	oWindowManager.InitializePage(oStorage);
	con_SendMessage(MSG_PAGELOADED);
	oAICC.PageLoad(document.location.href);

	ext_BeforeActPageInit();
	act_PageInit();
	ext_AfterActPageInit();
}
function con_PageUnload()
{
	ext_BeforeActPageUnload();
	act_PageUnload();
	ext_AfterActPageUnload();

	oWindowManager.TerminatePage(oStorage);
	oAICC.PageUnload(document.location.href);
	con_SendMessage(MSG_PAGEUNLOADED);
}
function con_SendMessage(sMessageID)
{
	var oLclTopWindow = util_GetSTAFramesetWindow(window);
	var oLclController = oLclTopWindow.crse_Controller();
	oLclController.MessageHandler(sMessageID, spageKey)
}
function con_pop_SendMessage(sMessageID)
{
	var oMainSTAWindow = util_GetSTAFramesetWindow(window);
	var oTemp = oMainSTAWindow.crse_Controller();
	oTemp.MessageHandler(sMessageID, spageKey)
}
function con_SetProgress(pageProgress)
{
	oProgress.SetProgress(courseID, moduleID, spageKey, pageProgress);
}
function con_GetProgress(pageProgress)
{
	return(oProgress.GetProgress(courseID, moduleID, spageKey));
}
function con_GetString(stringKey)
{
	return(oStorage.getItem(courseID, moduleID, stringKey, PAGE_ACTIVITY, PAGE_ACTIVITY_DATA));
}
function con_SetString(stringKey, stringVal)
{
	oStorage.setItem(courseID, moduleID, stringKey, PAGE_ACTIVITY, PAGE_ACTIVITY_DATA, stringVal);
}
function con_SetAICCScore(stringKey, iScore)
{
	oAICC.Score.SetPageScore2(courseID, moduleID, stringKey, iScore);
}
function con_GetConfigItem(cfgID)
{
	return document.all.item(cfgID);
}
function con_GetConfigText(cfgID)
{
	return util_Trim(document.all.item(cfgID,0).innerText);
}
function con_GetConfigInt(cfgID)
{
	return parseInt(con_GetConfigText(cfgID));
}
function con_GetConfigLink(cfgID)
{
	return document.all.item(cfgID,0).href;
}
function con_GetConfigSwitch(cfgID)
{
	if (con_GetConfigText(cfgID).substr(0,1).toUpperCase() == "N")
	{
		return false;
	}
	else
	{
		return true;
	}
}
function con_GetCourseID()
{
	return courseID;
}
function con_ConstructFeedbackFileURL(feedbackSuffix)
{
	var sFeedbackLocation = document.location.href.replace(/_a..\./, "_" + feedbackSuffix + ".");
	return sFeedbackLocation;
}
function con_ShowFeedback(sFeedbackFile)
{
	switch(gFeedbackStyle)
	{
		case FEEDBACK_POPUP:
			if (arguments.length > 2)
			{
				con_ShowPopupFeedback(sFeedbackFile , arguments[1] , arguments[2]);
			}
			else
			{
				con_ShowPopupFeedback(sFeedbackFile);
			}
			break;
		case FEEDBACK_FRAMES:
			con_ShowFramesFeedback(sFeedbackFile);
			break;
		default:
			ext_ShowCustomFeedback(sFeedbackFile);
			break;
	}
}
function con_FdbkPageKey()
{
	var sPageKey = "";

	switch(gFeedbackStyle)
	{
		case FEEDBACK_POPUP:
			sPageKey = util_GetPageKey(document.location);
			break;
		case FEEDBACK_FRAMES:
			sPageKey = util_GetPageKey(window.parent.location);
			break;
		default:
			sPageKey = ext_GetPgKeyCustomFdbk();
			break;
	}

	var sPageActivity = "_act";
	var sPageFrameset = "_acf";
	var sPageFeedback = "_f";
	var iAct = sPageKey.indexOf(sPageActivity);
	var iFrm = sPageKey.indexOf(sPageFrameset);
	var iFbk = sPageKey.indexOf(sPageFeedback);

	if ((-1 == iAct) && (-1 == iFrm) && (-1 == iFbk))
	{
		alert("Internal Error: Unexpected activity page key [" + sPageKey + "], check feedback style & NavData.js");
	}

	return sPageKey;
}
function con_ShowFramesFeedback(sFeedbackFile)
{
	window.parent.frames.fra_Feedback.location.href = sFeedbackFile;
}
function private_con_SetDefaults()
{
	switch (this.sType)
	{
		case POPUP_BIG:
			this.sTitle = POPUP_BIG_TITLE;
			this.iWidth = 625;
			this.iHeight = 400;
			this.bResizable = false;
			this.iStartUpPosition = POPUP_POS_CENTER_ON_SCREEN;
			this.bCloseOnOpenerFocus = true;
		break;
		case POPUP_COMMENT:
			this.sURL = sCommentPageName;
			this.sTitle = sCommentPageID;
			this.iWidth = COMMENT_WIDTH;
			this.iHeight = COMMENT_HEIGHT;
			this.iPopupPadding = 10;
			this.bAlwaysOnTop = true;
			this.bCloseOnOpenerFocus = true;
		break;
		case POPUP_GLOSSARY:
			this.iWidth = ext_ConfigGlossaryPopupWidth();
			this.iHeight = ext_ConfigGlossaryPopupHeight();
			this.bResizable = false;
			this.iPopupPadding = 10;
			this.iStartUpPosition = POPUP_POS_MOUSE_XY;
			this.bCloseOnOpenerFocus = true;
			break;
		case POPUP_FEEDBACK:
			this.sTitle = "blah";
			this.iWidth = ACTIVITY_FEEDBACK_WIDTH;
			this.iHeight = ACTIVITY_FEEDBACK_HEIGHT;
			this.iPopupPadding = 10;
			this.bResizable = false;
			this.iStartUpPosition = POPUP_POS_CENTER_ON_SCREEN;
			this.bCloseOnOpenerUnload = true;
			this.bAlwaysOnTop = true;
			break;
		case POPUP_FULLSCREENLAUNCH:
			this.bLaunchFullScreen = true;
			break
		case POPUP_CUSTOM:
			break;
		default:
			ext_PopupCustomDefaults(this);
		break
	}
}
function con_ShowComment()
{
	oCommentPop = new con_PopupObj ("oCommentPop" , POPUP_COMMENT);
	oCommentPop.LaunchPopup();
}
function con_CreateGlossaryPopup(sURL , sTitle)
{
	oGlossPop = new con_PopupObj("oGlossaryPopup" , POPUP_GLOSSARY);
	oGlossPop.sURL = ext_ConfigGlossaryPopupPath() + sURL;
	oGlossPop.sTitle = sTitle;
	oGlossPop.LaunchPopup();
}
function con_ShowPopupFeedback(feedbackURL)
{
	oFeedbackPop = new con_PopupObj("oFeedbackPop" , POPUP_FEEDBACK);

	if (arguments.length > 1)
	{
		oFeedbackPop.iWidth = arguments[1];
		oFeedbackPop.iHeight = arguments[2];
	}

	oFeedbackPop.sURL = feedbackURL;
	oFeedbackPop.LaunchPopup();
}
function con_PopupManager()
{
	this.MessageHandler = con_MessageHandler;
	return this;
}
function con_UnRegister()
{
	pop_oController.UnregisterMessageObject(self.pop_oPopManager);
}
function con_pop_Init()
{
	if (window.top == self)
	{
		var oCurrentPop = self.opener.otempglobal;
		oCurrentPop.sTitle = self.document.title;
		self._bCloseOnOpenerUnload = false;
		self.bCloseOnOpenerFocus = false;

		if (oCurrentPop.bCloseOnOpenerUnload) {self._bCloseOnOpenerUnload = true;}
		if (oCurrentPop.bCloseOnOpenerFocus)
		{
			self._bCloseOnOpenerFocus = true;
			self.opener.StartFocusEvent();
		}

		pop_oOpener = self.opener;
		pop_oTopWindow = util_GetSTAFramesetWindow(pop_oOpener);

		pop_oController = pop_oTopWindow.crse_Controller();

		pop_oPopManager = new con_PopupManager();
		pop_oController.RegisterMessageObject(pop_oPopManager);

		gbOpenerExists = true;

		private_con_SetWindowProperties	(pop_oOpener.otempglobal);

		ext_SetPopupProgress(POPUP_AS_POPUP);
		self.focus();
	}
	else
	{
		ext_SetPopupProgress(POPUP_IN_GLOSSARY);
	}
}
function con_pop_ShutDown()
{
	if (window.top == self)
	{
		if (gbOpenerExists)
		{
			con_UnRegister();
			if (self._bCloseOnOpenerFocus)
			{
				pop_oOpener.CancelFocusEvent();
			}
		}
	}
}
function con_MessageHandler(MSG_ID, parameters)
{
	var sPageID;
	var sDestination;
	switch(MSG_ID)
	{
		case MSG_PAGEUNLOADED:
			if (self._bCloseOnOpenerUnload || !gbOpenerExists)
			{
				self.close();
			}
			break;
		case MSG_MOUDLEUNLOADED:
			gbOpenerExists = false;
			break;
		case MSG_OPENERFOCUS:
			if (self._bCloseOnOpenerFocus || !gbOpenerExists)
			{
				self.close();
			}
			break;
		default:
			break;
	}
}
function con_PopupObj(sName , sType)
{
	this.sType = sType;
	this.sName = sName;
	this.sURL = null;
	this.sParams = null;
	this.sTitle = null;
	this.iWidth = null;
	this.iHeight = null;
	this.iTop = null;
	this.iLeft = null;
	this.iPopupPadding = 10;
	this.bScrollBars = true;
	this.bMenuBar = false;
	this.bStatusBar = false;
	this.bToolBar = false;
	this.bResizable = false;
	this.bAlwaysOnTop = false;
	this.bLaunchFullScreen = false;
	this.iStartUpPosition = null;
	this.bReplace = false;
	this.bCloseOnOpenerFocus = false;
	this.bCloseOnOpenerUnload = false;
	this.oNewWin = null;
	this.LaunchPopup = private_con_LaunchPopup;
	this.SetDefaults = private_con_SetDefaults;
	this.DeterminePopPosition = private_con_DeterminePopPosition;
	this.DetermineFeatureString = private_con_DetermineFeatureString;
	this.Kill = private_con_Kill;
	this.SetWindowProperties = private_con_SetWindowProperties;

	this.SetDefaults();
	return this;
}
function private_con_Kill()
{
	con_pop_SendMessage(MSG_OPENERFOCUS);
}
function private_con_DeterminePopPosition()
{
	switch (this.iStartUpPosition)
	{
		case POPUP_POS_CENTER_ON_SCREEN:
			this.iLeft = (screen.width / 2) - (this.iWidth / 2);
			this.iTop = (screen.height / 2) - (this.iHeight / 2);
			break;
		case POPUP_POS_CENTER_ON_OWNER:
			this.iLeft = (screen.width / 2) - (this.iWidth / 2);
			this.iTop = (screen.height / 2) - (this.iHeight / 2);
			break;
		case POPUP_POS_MOUSE_XY:
			this.iLeft = event.screenX;
			this.iTop = event.screenY;
			break;
		case POPUP_POS_USERDEFINED:
			break;
		default:
			break
	}
}
function private_con_DetermineFeatureString()
{
	this.sfeatures = "HEIGHT=" + this.iHeight;
	this.sfeatures += ",WIDTH=" + this.iWidth;
	this.sfeatures += ",left=" + this.iLeft;
	this.sfeatures += ",top=" + this.iTop;
	this.sfeatures += ",scrollbars=";
	this.sfeatures += (this.bScrollBars ? "yes" : "no");
	this.sfeatures += ",menubar=";
	this.sfeatures += (this.bMenuBar ? "yes" : "no");
	this.sfeatures += ",status=";
	this.sfeatures += (this.bStatusBar ? "yes" : "no");
	this.sfeatures += ",toolbar=";
	this.sfeatures += (this.bToolBar ? "yes" : "no");
	this.sfeatures += ",resizable=" ;
	this.sfeatures += (this.bResizable ? "yes" : "no");
}
function private_con_LaunchPopup()
{
	this.DeterminePopPosition();
	this.DetermineFeatureString();
	otempglobal = this;
	this.oNewWin = window.open (this.sURL , this.sName , this.sfeatures , this.bReplace);
}
function private_con_SetWindowProperties(obj)
{
	if (null == oWindowManager)
	{
		if (null == oMainSTAWin)
		{
			oMainSTAWin		= util_GetSTAFramesetWindow(window);
		}
		if ("undefined" == typeof(oMainSTAWin.crse_WindowManager))
		{
			oWindowManager = new ccWindow_constructor();
		}
		else
		{
			oWindowManager = oMainSTAWin.crse_WindowManager();
			if ("undefined" == typeof(oWindowManager))
			{
				oWindowManager = new ccWindow_constructor();
			}
		}
	}
	oWindowManager.SetPopupProperties(obj);
}
function ClosePopup()
{
	con_pop_SendMessage(MSG_OPENERFOCUS);
}
function CancelFocusEvent()
{
	onfocus = null;
}
function StartFocusEvent()
{
	onfocus = ClosePopup;
}
function con_ShowGlossary(sFilename) {
	oPopup = new con_PopupObj(POPUP_BIG_TITLE, POPUP_BIG);
	oPopup.sURL = sFilename;
	oPopup.LaunchPopup();
}
function ail_SetImageBehavior()
{
	var iSize = document.images.length;
	for(var i=0; i<iSize; i++)
	{
		var ocurrentImage = document.images[i];
		if ( ocurrentImage._normalSrc == null )
		{
			ocurrentImage._normalSrc = ail_CreateNormalName(ocurrentImage.src);

			if(ocurrentImage._cursor != null)
			{
				ocurrentImage.style.cursor = ocurrentImage._cursor;
			}
			if(ocurrentImage._enableKey != null)
			{
				ail_SetEnableBehavior(ocurrentImage);
			}
			if(ocurrentImage._rollOver != null)
			{
				ail_SetRollOverBehavior(ocurrentImage);
			}
			if(ocurrentImage._preload != null)
			{
				ail_PreloadImage(ocurrentImage);
			}
			if(ocurrentImage._disable != null)
			{
				ail_SetEnableBehavior(ocurrentImage);
				ail_Disable(ocurrentImage);
			}
		}
	}
}
function ail_SetSingleImageBehavior(oImage)
{
	var ocurrentImage = oImage;
	if ( ocurrentImage._normalSrc == null )
	{
		ocurrentImage._normalSrc = ail_CreateNormalName(ocurrentImage.src);

		if(ocurrentImage._cursor != null)
		{
			ocurrentImage.style.cursor = ocurrentImage._cursor;
		}
		if(ocurrentImage._enableKey != null)
		{
			ail_SetEnableBehavior(ocurrentImage);
		}
		if(ocurrentImage._rollOver != null)
		{
			ail_SetRollOverBehavior(ocurrentImage);
		}
		if(ocurrentImage._preload != null)
		{
			ail_PreloadImage(ocurrentImage);
		}
		if(ocurrentImage._disable != null)
		{
			ail_SetEnableBehavior(ocurrentImage);
			ail_Disable(ocurrentImage);
		}
	}
}
function ail_Enable(oImage)
{
	if ( oImage._isDisabled == null ) oImage._isDisabled = true;

	if ( oImage._isDisabled == true)
	{
		if(oImage._ailonclick != null)
		{
			oImage.onclick = oImage._ailonclick;
		}
		if( oImage._highlight == true )
		{
			ail_Highlight(oImage);
		}
		else
		{
			oImage.src = oImage._normalSrc;
		}
		ail_Show(oImage);
		if(oImage._cursor != null)
		{
			oImage.style.cursor = oImage._cursor;
		}
		if(oImage._rollOver != null)
		{
			ail_EnableRollOver(oImage, true);
		}
		oImage._isDisabled = false;
	}
}
function ail_Disable(oImage)
{
	if ( oImage._isDisabled == null ) oImage._isDisabled = false;

	if ( oImage._isDisabled == false) {

		oImage.onclick = null;
		oImage.style.cursor = DEFAULT_CURSOR;
		if(oImage._disable.toUpperCase() == "DIM")
		{
			oImage.src = oImage._dimSrc;
		}
		if(oImage._disable.toUpperCase() == "HIDE")
		{
			ail_Hide(oImage);
		}
		if(oImage._rollOver != null)
		{
			ail_EnableRollOver(oImage, false);
		}
		oImage._isDisabled = true;
	}
}
function ail_Hide(oImage)
{
	oImage.style.visibility = "hidden";
}
function ail_Show(oImage)
{
	oImage.style.visibility = "visible";
}
function ail_SetEnableBehavior(oImage)
{
	if(oImage._ailsetenb != null)
	{
		return;
	}
	oImage._ailsetenb = "set";
	oImage._dimSrc = ail_CreateDimName(oImage.src);
	if(oImage.onclick != null)
	{
		oImage._ailonclick = oImage.onclick;
	}
	else
	{
		oImage._ailonclick = null;
	}
}
function ail_SetRollOverBehavior(oImage)
{
	oImage._overSrc = ail_CreateOverName(oImage.src);
	ail_EnableRollOver(oImage, true);
}
function ail_EnableRollOver(oImage, bEnable)
{
	if(bEnable == false)
	{
		oImage.onmouseover = null;
		oImage.onmouseout = null;
	}
	else
	{
		oImage.onmouseover = ail_RollOver;
		oImage.onmouseout = ail_UnRollOver;
	}
}
function ail_PreloadImage(oImage)
{
	var i = ail_apreloadImages.length;
	if(oImage._normalSrc != null)
	{
		ail_apreloadImages[i] = new Image();
		ail_apreloadImages[i].src = oImage._normalSrc;
		i++;
	}
	if(oImage._overSrc != null)
	{
		ail_apreloadImages[i] = new Image();
		ail_apreloadImages[i].src = oImage._overSrc;
		i++;
	}
	if(oImage._dimSrc != null)
	{
		ail_apreloadImages[i] = new Image();
		ail_apreloadImages[i].src = oImage._dimSrc;
	}
}
function ail_Highlight(oImage)
{
	oImage.src = ail_CreateCurrentName(oImage.src);
	oImage._highlight = true;
}
function ail_Unhighlight(oImage)
{
	if(( null == oImage._isDisabled ) || !oImage._isDisabled )
	{
		oImage.src = oImage._normalSrc;
		oImage._highlight = false;
	}
}
function ail_RollOver()
{
	event.srcElement.src = event.srcElement._overSrc;
}
function ail_UnRollOver()
{
	var oimg = event.srcElement;
	if(oimg._highlight)
	{
		ail_Highlight(oimg);
	}
	else
	{
		oimg.src = oimg._normalSrc;
	}
}
function ail_Dim()
{
	event.srcElement.src = event.srcElement._dimSrc;
}
function ail_CreateOverName(sName)
{
	snewSrc = sName.substring(0, sName.length - LEN_SUFFIX);
	return snewSrc + OVER_SUFFIX;
}
function ail_CreateDimName(sName)
{
	snewSrc = sName.substring(0, sName.length - LEN_SUFFIX);
	return snewSrc + DISABLED_SUFFIX;
}
function ail_CreateCurrentName(sName)
{
	snewSrc = sName.substring(0, sName.length - LEN_SUFFIX);
	return snewSrc + CURRENT_SUFFIX;
}
function ail_CreateNormalName(sName)
{
	snewSrc = sName.substring(0, sName.length - LEN_SUFFIX);
	return snewSrc + NORMAL_SUFFIX;
}
function atext_SetImageBehavior(sID, dnf, dnb, dcf, dcb, snf, snb, scf, scb, of, ob, df, db)
{
	atext_nml_fore = dnf;
	atext_nml_back = dnb;
	atext_cur_fore = dcf;
	atext_cur_back = dcb;
	atext_ovr_fore = of;
	atext_ovr_back = ob;
	atext_dim_fore = df;
	atext_dim_back = db;
	atext_nml_fore_sub = snf;
	atext_nml_back_sub = snb;
	atext_cur_fore_sub = scf;
	atext_cur_back_sub = scb;

	var iSize = document.all[sID].length;

	for(var i=0; i<iSize; i++)
	{
		var ocurrentTopic = document.all[sID][i];
		if ( ocurrentTopic._normalFore == null)
		{
			ocurrentTopic._normalFore = atext_CreateNormalFore(ocurrentTopic);
			ocurrentTopic._normalBack = atext_CreateNormalBack(ocurrentTopic);
			ocurrentTopic._currentFore = atext_CreateCurrentFore(ocurrentTopic);
			ocurrentTopic._currentBack = atext_CreateCurrentBack(ocurrentTopic);

			if(ocurrentTopic._cursor != null)
			{
				ocurrentTopic.style.cursor = ocurrentTopic._cursor;
			}
			if(ocurrentTopic._subtopic == "yes")
			{
				ocurrentTopic._normalFore = atext_CreateSubNormalFore(ocurrentTopic);
				ocurrentTopic._normalBack = atext_CreateSubNormalBack(ocurrentTopic);
				ocurrentTopic._currentFore = atext_CreateSubCurrentFore(ocurrentTopic);
				ocurrentTopic._currentBack = atext_CreateSubCurrentBack(ocurrentTopic);
			}
			if(ocurrentTopic._enableKey != null)
			{
				atext_SetEnableBehavior(ocurrentTopic);
			}
			if(ocurrentTopic._rollOver != null)
			{
				atext_SetRollOverBehavior(ocurrentTopic);
			}
			if(ocurrentTopic._disable != null)
			{
				atext_SetEnableBehavior(ocurrentTopic);
				atext_Disable(ocurrentTopic);
			}
		}
	}
}
function atext_Enable(oImage)
{
	if ( oImage._isDisabled == null ) oImage._isDisabled = true;

	if ( oImage._isDisabled == true) {

		if(oImage._atextonclick != null)
		{
			oImage.onclick = oImage._atextonclick;
		}
		oImage.src = oImage._normalSrc;
		atext_Show(oImage);
		if(oImage._cursor != null)
		{
			oImage.style.cursor = oImage._cursor;
		}
		if(oImage._rollOver != null)
		{
			atext_EnableRollOver(oImage, true);
		}
		oImage._isDisabled = false;
	}
}
function atext_Disable(oImage)
{
	if ( oImage._isDisabled == null ) oImage._isDisabled = false;

	if ( oImage._isDisabled == false) {

		oImage.onclick = null;
		oImage.style.cursor = DEFAULT_CURSOR;
		if(oImage._disable.toUpperCase() == "DIM")
		{
			oImage.src = oImage._dimFore;
		}
		if(oImage._disable.toUpperCase() == "HIDE")
		{
			atext_Hide(oImage);
		}
		if(oImage._rollOver != null)
		{
			atext_EnableRollOver(oImage, false);
		}
		oImage._isDisabled = true;
	}
}
function atext_Hide(oImage)
{
	oImage.style.visibility = "hidden";
}
function atext_Show(oImage)
{
	oImage.style.visibility = "visible";
}
function atext_SetEnableBehavior(oImage)
{
	if(oImage._atextsetenb != null)
	{
		return;
	}
	oImage._atextsetenb = "set";

	oImage._dimFore = atext_CreateDimFore(ocurrentTopic);
	oImage._dimBack = atext_CreateDimBack(ocurrentTopic);

	if(oImage.onclick != null)
	{
		oImage._atextonclick = oImage.onclick;
	}
	else
	{
		oImage._atextonclick = null;
	}
}
function atext_SetRollOverBehavior(oImage)
{
	oImage._overFore = atext_CreateOverFore(oImage);
	oImage._overBack = atext_CreateOverBack(oImage);

	atext_EnableRollOver(oImage, true);
}
function atext_EnableRollOver(oImage, bEnable)
{
	if(bEnable == false)
	{
		oImage.onmouseover = null;
		oImage.onmouseout = null;
	}
	else
	{
		oImage.onmouseover = atext_RollOver;
		oImage.onmouseout = atext_UnRollOver;
	}
}
function atext_ShowCurrentState(oImage)
{
	oImage.style.color = oImage._currentFore;
	oImage.style.backgroundColor = oImage._currentBack;
	oImage._highlight = true;
}
function atext_ShowNormalState(oImage)
{
	oImage.style.color = oImage._normalFore;
	oImage.style.backgroundColor = oImage._normalBack;
	oImage._highlight = false;
}
function atext_RollOver()
{
	event.srcElement.style.color = event.srcElement._overFore;
	event.srcElement.style.backgroundColor = event.srcElement._overBack;
}
function atext_UnRollOver()
{
	var oimg = event.srcElement;
	if(oimg._highlight)
	{
		oimg.style.color = oimg._currentFore;
		oimg.style.backgroundColor = oimg._currentBack;
	}
	else
	{
		oimg.style.color = oimg._normalFore;
		oimg.style.backgroundColor = oimg._normalBack;
	}
}
function atext_Dim()
{
	event.srcElement.style.color = event.srcElement._dimFore;
	event.srcElement.style.backgroundColor = event.srcElement._dimBack;
}
function atext_CreateOverFore(sName)
{
	return atext_ovr_fore;
}
function atext_CreateOverBack(sName)
{
	return atext_ovr_back;
}
function atext_CreateDimFore(sName)
{
	return atext_dim_fore;
}
function atext_CreateDimBack(sName)
{
	return atext_dim_back;
}
function atext_CreateCurrentFore(sTopic)
{
	return atext_cur_fore;
}
function atext_CreateCurrentBack(sTopic)
{
	return atext_cur_back;
}
function atext_CreateNormalFore(sTopic)
{
	return atext_nml_fore;
}
function atext_CreateNormalBack(sTopic)
{
	return atext_nml_back;
}
function atext_CreateSubCurrentFore(sTopic)
{
	return atext_cur_fore_sub;
}
function atext_CreateSubCurrentBack(sTopic)
{
	return atext_cur_back_sub;
}
function atext_CreateSubNormalFore(sTopic)
{
	return atext_nml_fore_sub;
}
function atext_CreateSubNormalBack(sTopic)
{
	return atext_nml_back_sub;
}
function util_Blank() {
	return("<HTML></HTML>");
}
function util_PadLeft(str, ch, num)
{
	str += "";
	ch += "";
	var resultStr = str;
	for (var i=0; i < num; i++)
		resultStr = ch + resultStr;
	return resultStr;
}
function util_Trim(str)
{
	return util_TrimRight(util_TrimLeft(str));
}
function util_TrimLeft(str)
{
	var resultStr = "";
	var i = len = 0;

	if (str+"" == "undefined" || str == null)
		return null;

	str += "";

	if (str.length == 0)
		resultStr = "";
	else {
		len = str.length;

		while ((i <= len) && (str.charAt(i) == " "))
			i++;

		resultStr = str.substring(i, len);
	}
	return resultStr;
}
function util_TrimRight(str)
{
	var resultStr = "";
	var i = 0;

	if (str+"" == "undefined" || str == null)
		return null;

	str += "";

	if (str.length == 0)
		resultStr = "";
	else {
		i = str.length - 1;
		while ((i >= 0) && (str.charAt(i) == " "))
			i--;
			resultStr = str.substring(0, i + 1);
		}

		return resultStr;
}
function util_GetSTAFramesetWindow(win)
{
	var myWin = win;
	for (i=0;i<10; i++)
	{
		if (null!= myWin.frames[sContentFrame] || null!= myWin.frames["fra_glossaryterm"])
			return myWin;
		else
			myWin = myWin.parent;
	}
	return win;
}
function util_GetStyleRule(styleSheetID, selectorString)
{
	var oStyleSheet = document.styleSheets.item(styleSheetID);
	for (var i=0; i<oStyleSheet.rules.length; i++ ) {
		var oRule = oStyleSheet.rules(i);
		if (oRule.selectorText == selectorString) {
		return oRule;
		}
	}
}
function util_GetPageKey(spageName)
{
	var tempPageKey;
	var spageKeyRaw = (spageName.toString());
	var iindexOfBackSlash = spageKeyRaw.lastIndexOf("\\");
	var iindexOfFrontSlash = spageKeyRaw.lastIndexOf( "/");
	var iindexOfDot = spageKeyRaw.lastIndexOf(".");

	if (iindexOfBackSlash >	iindexOfFrontSlash) {
		istart = iindexOfBackSlash;
	}
	else {
		istart = iindexOfFrontSlash;
	}
	if (iindexOfDot != -1)
	{
		tempPageKey = spageKeyRaw.substr ((istart + 1) , (iindexOfDot - (istart + 1)));
	}
	else {
		tempPageKey = spageKeyRaw;
	}

	return tempPageKey;
}
function util_GetElementByTag(obj,sTargetTag)
{
	var oLocalObj = obj;

	while (oLocalObj.tagName != sTargetTag.toUpperCase() && oLocalObj.tagName != "BODY")
	{
		oLocalObj = oLocalObj.parentElement;
	}

	if (oLocalObj.tagName != "BODY")
	{
		return oLocalObj;
	}
	else
	{
		return void(null);
	}
}
function util_RightJustify(ostyleSheet, oobjList)
{
	var inc;
	var ipageWidth;
	var iendInc;
	var istartLeft;
	var ocurrentObj;
	var oactingStyleSheet;

	ipageWidth = parseInt(document.body.clientWidth);
	iendInc=arguments.length;
	oactingStyleSheet = arguments[0];

	for(inc=1; inc< iendInc;inc++)
	{
		ocurrentObj = arguments[inc];

		ostyleRule= util_GetStyleRule(oactingStyleSheet.id, "."+ocurrentObj.className);
		istartLeft = parseInt(ostyleRule.style.left, 10);

		ocurrentObj.style.left = (ipageWidth - istartLeft) - (ocurrentObj.width);
		ocurrentObj.style.visibility = "visible";
	}
}
function util_Highlight(oTarget)
{
	oTarget.className = "STHighlight";
}
function util_StrReplaceAll(sItem,sTarget,sRepl)
{
	var sNewItem = sItem;
	var iInx = sNewItem.indexOf(sTarget);
	while (-1 != iInx)
	{
		sNewItem = sNewItem.replace(sTarget,sRepl);
		iInx = sNewItem.indexOf(sTarget);
	}
	return sNewItem;
}
function util_CreateActiveXObject(sProgID)
{
	var x = null;

	if ("undefined" != typeof(sInstallActiveXURL))
	{
		if ("" != sInstallActiveXURL)
		{
			if (self.CC_CreateActiveXObject != null)
			{
				x = CC_CreateActiveXObject(sProgID);
			}
			else
			{
				alert(cERR_CFG_TRKR_JIT_LOADER);
			}
		}
		else
		{
			x = new ActiveXObject(sProgID);
		}
	}
	else
	{
		x = new ActiveXObject(sProgID);
	}
	return x;
}
function list_node(NodeData)
{
	this.data = NodeData
	this.prev = this
	this.next = this
}
function list()
{
	this.begin = list__begin;
	this.end = list__end;
	this.push_back = list__push_back;
	this.erase = list__erase;
	this.head = new list_node(null);
	this.length = 0;
}
function insert_list_node(node, NodeData)
{
	var tmp = new list_node(NodeData);
	tmp.next = node;
	tmp.prev = node.prev;
	node.prev.next = tmp;
	node.prev = tmp;
}
function erase_list_node(NodeToBeErased)
{
	var Successor = NodeToBeErased.next;
	NodeToBeErased.prev.next = Successor;
	Successor.prev = NodeToBeErased.prev;
	NodeToBeErased.data = null;
	return Successor;
}
function list__begin()
{
	return new list_iterator(this.head.next);
}
function list__end()
{
	list_i.node = this.head;
	return list_i;
}
function list__push_back(NodeData)
{
	insert_list_node(this.head, NodeData);
	++this.length ;
}
function list__erase(IteratorNode)
{
	if (IteratorNode.node != this.head)
	{
		IteratorNode.node = erase_list_node(IteratorNode.node);
		--this.length ;
	}
}
function list_iterator(node)
{
	this.next = list_iterator__next;
	this.value = list_iterator__value;
	this.equal = list_iterator__equal;
	this.node = node;
}
function list_iterator__next()
{
	this.node = this.node.next;
	return this;
}
function list_iterator__value()
{
	if (null != this.node)
		return this.node.data;
	else
		return null;
}
function list_iterator__equal(NodeToBeCompared)
{
	return this.node == NodeToBeCompared.node;
}
function ProgressObject(oController, oStorage, aCourseModules, MyItems)
{
	this.ProgressInit = ProgressInit;
	this.SetProgress = SetProgress;
	this.GetProgress = GetProgress;
	this.Refresh = Refresh;
	this.CreateModuleNodes= CreateModuleNodes;
	this.UpdateCourseProgress = UpdateCourseProgress;
	this.IsModuleID = IsModuleID;
	this.SaveCourseProgress = SaveCourseProgress;
	this.GetModuleProgress = GetModuleProgress;
	this.CreatePageNodes = CreatePageNodes;
	this.SaveModuleProgress = SaveModuleProgress;
	this.getMyItemDetail = getMyItemDetail;
	this.oStorage = oStorage;
	this.oController = oController;
	this.MyItems = MyItems;
	this.aCourseModules = aCourseModules;
	this.aCourseProgress = new Array;
	this.ModuleProgressRootNode = null;
	this.aNodeToPNIndex = new Array;
	this.aTabToPNIndex = new Array;
	this.aFilenameToPNIndex = new Array;
	this.bCourseScope = false;
	this.bModuleScope = false;

	this.ProgressInit();
	this.bErrorThrown = false;
	return this;
}
function ProgressInit()
{
	var sCourseVersion;
	var sCourseConfigVersion;
	var sCourseProgString;
	var sProgString;
	var sVersion;
	var sNavDataVersion;
	var numMods;

	if (null != this.aCourseModules)
	{
		this.bCourseScope = true;

		if ("YourCourseName" == sCourseID)
		{
			alert("[yourCourseID] is not a valid course ID in file CourseConfig.js");
		}
		sCourseVersion = this.oStorage.getItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, COURSE_VERSION_TIMESTAMP);
		sCourseConfigVersion = sCourseTimeStamp;

		if (sCourseVersion == sCourseConfigVersion)
		{
			sCourseProgString = this.oStorage.getItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, COURSE_PROGRESS);
		}
		else
		{
			sCourseProgString = "";
			this.Refresh();
			numMods = (this.aCourseModules.length) / 2;
			for (var i=0; i < numMods; i++)
			{
				this.oStorage.clearNode(sCourseID, aCourseModules[i * 2]);
			}
		}
		this.CreateModuleNodes(sCourseProgString);
		this.SaveCourseProgress();
		this.oStorage.setItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, COURSE_VERSION_TIMESTAMP, sCourseConfigVersion);
	}

	if (null != this.MyItems)
	{
		this.bModuleScope = true;
		if ("yourModuleID" == sModuleID)
		{
			alert("[yourModuleID] is not a valid module ID in file NavConfig.js");
		}
		sVersion = this.oStorage.getItem(sCourseID, sModuleID, MODULE_LVL_DATA, MODULE_LVL_DATA, MODULE_VERSION);
		sNavDataVersion = this.MyItems[0];

		if (sVersion == sNavDataVersion)
		{
			sProgString = this.oStorage.getItem(sCourseID, sModuleID, MODULE_LVL_DATA, MODULE_LVL_DATA, MODULE_PROGRESS);

		}
		else
		{
			sProgString = "";
			this.oStorage.clearNode(sCourseID, sModuleID);
		}

		this.CreatePageNodes(sProgString);
		this.SaveModuleProgress();
		this.oStorage.setItem(sCourseID, sModuleID, MODULE_LVL_DATA, MODULE_LVL_DATA, MODULE_VERSION, sNavDataVersion);
	}
	return;
}
function SetProgress(sCourseID, sModuleID, sPageID, iValue)
{
	var oNode;
	if (false == this.bModuleScope)
	{
		alert("Error:  You cannot set progress from a non-module page because of roll-up rules");
		return;
	}

	oNode = this.aFilenameToPNIndex[sPageID];
	if (oNode != null)
	{
		oNode.value = iValue;
		this.ModuleProgressRootNode.RecomputeValues(this.ModuleProgressRootNode);
		this.SaveModuleProgress();
		this.UpdateCourseProgress(this.ModuleProgressRootNode.key, this.ModuleProgressRootNode.value);
		this.SaveCourseProgress();
		this.oController.MessageHandler(MSG_PROGRESSCHANGED, sPageID);
	}
	else
	{
		alert("Internal error: cannot set progress value for " + sPageID);
	}
	return;
}
function GetProgress(sCourseID, sModuleID, sPageID)
{
	var index;
	var node;
	var iValue = 0;

	if ("NODE" == sPageID.substr(0,4).toUpperCase())
	{
		if ("NODETAB" == sPageID.substr(0,7).toUpperCase())
		{
			index = sPageID.slice(7);
			node = this.aNodeToPNIndex[index].children[0];
			iValue = node.value;
		}
		else
		{
			index = sPageID.slice(4);
			node = this.aNodeToPNIndex[index];
			iValue = node.value;
		}
	}
	else if ("TAB" == sPageID.substr(0,3).toUpperCase())
	{
		index = sPageID.slice(3);

		if ("undefined" == typeof(this.aTabToPNIndex[index]))
		{
			if (false == this.bErrorThrown)
			{
				this.bErrorThrown = true;
				alert("Data Inconsistency: The page loaded in the fra_header frame contains more TAB objects [id] than are specified in the NavData.js for this module");
				iValue = 0;
			}
		}
		else
		{
			node = this.aTabToPNIndex[index];
			iValue = node.value;
		}
	}
	else if (IsModuleID(sPageID))
	{
		iValue = this.GetModuleProgress(sPageID);
	}
	else
	{
		node = this.aFilenameToPNIndex[sPageID];
		iValue = node.value;
	}
	iValue = Math.round(iValue);

	return iValue;
}
function Refresh()
{
	var i;
	var numMods;
	this.oStorage.setItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, COURSE_PROGRESS, "");

	numMods = (this.aCourseModules.length) / 2;
	for (i =0; i < numMods; i++)
	{
		this.oStorage.setItem(sCourseID, this.aCourseModules[i * 2], MODULE_LVL_DATA, MODULE_LVL_DATA, MODULE_PROGRESS, "");
	}
	return;
}
function CreateModuleNodes(sCourseProgString)
{
	var i;
	var numMods;

	if ("" != sCourseProgString)
	{
		this.aCourseProgress = sCourseProgString.split(',');
	}
	else
	{
		numMods = (this.aCourseModules.length) / 2;
		for (i=0; i < numMods; i++)
		{
			this.aCourseProgress[i] = 0;
		}
	}
	return;
}
function UpdateCourseProgress(sModID, iValue)
{
	var i;
	var numMods = (this.aCourseModules.length) / 2;

	for (i =0; i < numMods; i++)
	{
		if (sModID == this.aCourseModules[i * 2])
		{
			this.aCourseProgress[i] = iValue;
			break;
		}
	}
	return;
}
function IsModuleID(sString)
{
	var i;
	var numMods = (this.aCourseModules.length) / 2;
	for (i=0; i < numMods; i++)
	{
		if (sString == this.aCourseModules[i * 2])
		{
			return true;
		}
	}
	return false;
}
function SaveCourseProgress()
{
	var retString;
	retString = this.aCourseProgress.toString();
	this.oStorage.setItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, COURSE_PROGRESS, retString);
	return;
}
function GetModuleProgress(sModID)
{
	var i;
	var numMods = (this.aCourseModules.length) / 2;

	for (i=0; i < numMods; i++)
	{
		if (sModID == this.aCourseModules[i * 2])
		{
			return this.aCourseProgress[i];
		}
	}
	alert("Error:  Module progress for " + sModID + " not found");
	return 0;
}
function CreatePageNodes(sProgString)
{
	var numRows = (this.MyItems.length - 1) / iCols;
	var i, row, sLabel;
	var level;
	var prevRowLevel;
	var aParents = [];
	var aParentsIndex = [];
	var myParentName;
	var aMyParentIndex = [];
	var aChildCount = [];
	var numPops;
	var oNode;
	var oParentNode;
	var aSavedProgress = [];
	var aNumTabsPerLevel = new Array();
	var bProgNew;
	var iValue;
	var sLabel, sPage;

	bProgNew = true;
	if ("" != sProgString)
	{
		bProgNew = false;
		aSavedProgress = sProgString.split(',');
	}

	prevRowLevel = 0;
	ccdcpush(aParents,sModuleID);
	ccdcpush(aParentsIndex, -1);
	aChildCount[sModuleID] = 0;

	for (level = 0; level < 11; level++)
	{
		aNumTabsPerLevel[level]=0;
	}

	for (row = 0; row < numRows; row++)
	{
		sType = this.getMyItemDetail(row, inxType);
		level = this.getMyItemDetail(row, inxLvl);
		if ("TB"==sType.toUpperCase())
		{
			sLabel = this.getMyItemDetail(row, inxTitle);
			++aNumTabsPerLevel[level];
			aChildCount[sLabel] = 0;
		}
		else if ("AC"==sType.toUpperCase())
		{
			sLabel = this.getMyItemDetail(row, inxPage);
		}
		else
		{
			alert ("Internal Error:  NavData.js:MyItems table:Row="+row+":Type="+sType+" is an Invalid Type");
			return;
		}

		if (level > prevRowLevel)
		{
			if (1 != (level - prevRowLevel))
			{
				alert ("Internal Error:  NavData.js:MyItems table:Row="+row+":Skipping a level is invalid");
			}

			myParentName = aParents[aParents.length - 1];
			aMyParentIndex[row] = aParentsIndex[aParents.length -1];
			aChildCount[myParentName] = aChildCount[myParentName] + 1;

			if ("TB"==sType.toUpperCase())
			{
				ccdcpush(aParents,sLabel);
				ccdcpush(aParentsIndex, row);
			}
		}
		else if (level == prevRowLevel)
		{
			myParentName = aParents[aParents.length - 1];
			aMyParentIndex[row] = aParentsIndex[aParents.length -1];
			aChildCount[myParentName] = aChildCount[myParentName] + 1;
			if ("TB"==sType.toUpperCase())
			{
				ccdcpush(aParents, sLabel);
				ccdcpush(aParentsIndex, row);
			}
		}
		else if (level < prevRowLevel)
		{
			numPops = prevRowLevel - level;
			for (i=0; i<numPops; i++)
			{
				ccdcpop(aParents);
				ccdcpop(aParentsIndex);
			}
			myParentName = aParents[aParents.length - 1];
			aMyParentIndex[row] = aParentsIndex[aParents.length -1];
			aChildCount[myParentName] = aChildCount[myParentName] + 1;
			if ("TB"==sType.toUpperCase())
			{
				ccdcpush(aParents, sLabel);
				ccdcpush(aParentsIndex, row);
			}
		}
		prevRowLevel = level;
	}
	iValue = 0;
	if (true != bProgNew)
	{
		iValue = aSavedProgress[0];
	}

	oNode = new ProgressNode(sModuleID, iValue);
	oNode.parent = null;
	this.ModuleProgressRootNode = oNode;
	this.aNodeToPNIndex[0] = oNode;

	var iTabIndex = 0;
	var aTabsAlreadyProcessedPerLevel = new Array();
	for (i = 0; i < 11; i++)
	{
		aTabsAlreadyProcessedPerLevel[i]=0;
	}

	for (row = 0, savedProgressIndex = 1; row < numRows; row++, savedProgressIndex++)
	{
		sType = this.getMyItemDetail(row, inxType);
		if ("TB"==sType.toUpperCase())
		{
			sLabel = this.getMyItemDetail(row, inxTitle);
			iValue = 0;
			if (true != bProgNew)
			{
				iValue = aSavedProgress[savedProgressIndex];
			}
			oNode = new ProgressNode(sLabel, iValue);

			this.aNodeToPNIndex[row + 1] = oNode;

			if (-1 == aMyParentIndex[row])
			{
				oParentNode = this.ModuleProgressRootNode;
				oNode.parent = oParentNode;
				oParentNode.AddChild(oNode);
			}
			else
			{
				oParentNode = this.aNodeToPNIndex[aMyParentIndex[row]+ 1];
				oNode.parent = oParentNode;
				oParentNode.AddChild(oNode);
			}

			level = this.getMyItemDetail(row, inxLvl);

			iTabIndex = aNumTabsPerLevel[level - 1] + aTabsAlreadyProcessedPerLevel[level];
			this.aTabToPNIndex[iTabIndex] = oNode;

			++aTabsAlreadyProcessedPerLevel[level];

			sPage = this.getMyItemDetail(row, inxPage);
			if ("" != sPage)
			{
				iValue = 0;
				if (true != bProgNew)
				{
					++savedProgressIndex;
					iValue = aSavedProgress[savedProgressIndex];
				}
				oParentNode = oNode;
				oNode = new ProgressNode(sPage, iValue);

				oNode.parent = oParentNode;
				oParentNode.AddChild(oNode);
				this.aFilenameToPNIndex[sPage] = oNode;
			}
		}
		else if ("AC"==sType.toUpperCase())
		{
			sLabel = this.getMyItemDetail(row, inxPage);
			iValue = 0;
			if (true != bProgNew)
			{
				iValue = aSavedProgress[savedProgressIndex];
			}
			oNode = new ProgressNode(sLabel, iValue);
			this.aNodeToPNIndex[row + 1] = oNode;

			if (-1 == aMyParentIndex[row])
			{
				oParentNode = this.ModuleProgressRootNode;
				oNode.parent = oParentNode;
				oParentNode.AddChild(oNode);
			}
			else
			{
				oParentNode = this.aNodeToPNIndex[aMyParentIndex[row] + 1];
				oNode.parent = oParentNode;
				oParentNode.AddChild(oNode);
			}
			this.aFilenameToPNIndex[sLabel] = oNode;
		}
	}
	return;
}
function SaveModuleProgress()
{
	var root = this.ModuleProgressRootNode;
	var retString;
	retString = root.NodesToString(root);
	this.oStorage.setItem(sCourseID, sModuleID, MODULE_LVL_DATA, MODULE_LVL_DATA, MODULE_PROGRESS, retString);
	return;
}
function getMyItemDetail(row, col)
{
	return (this.MyItems[(row * iCols) + col + 1]);
}
function ProgressNode(sKey, iValue)
{
	this.key = sKey;
	this.value = iValue;
	this.children = new Array();
	this.parent = null;
	this.AddChild = AddChild;
	this.NodesToString = NodesToString;
	this.RecomputeValues = RecomputeValues;
	return this;
}
function AddChild(oChildNode)
{
	this.children[this.children.length] = oChildNode;
}
function NodesToString(node)
{
	var numChildren = node.children.length;
	var i, iValue;
	var childNode;
	var retString;

	iValue = node.value;
	retString = iValue + ","

	for (i = 0; i < numChildren; i++)
	{
		childNode = node.children[i];
		retString += this.NodesToString(childNode);
	}
	return retString;
}
function RecomputeValues(node)
{
	var i, iValue;
	var childNode;
	var numChildren = node.children.length;

	for (i = 0; i < numChildren; i++)
	{
		childNode = node.children[i];
		this.RecomputeValues(childNode);
	}
	if (numChildren > 0)
	{
		iValue = 0;
		for (i = 0; i < numChildren; i++)
		{
			childNode = node.children[i];
			iValue += parseInt(childNode.value);
		}
		iValue = Math.round((iValue / (numChildren * 100)) * 100);

		if (iValue >= 99)
		{
			iValue = 100;
		}
		node.value = iValue;
	}
	return;
}
function ccdcpush(aTarget, oElement)
{
	aTarget[aTarget.length] = oElement;
}
function ccdcpop(aTarget)
{
	if( 0 == aTarget.length )
	{
		return null;
	}
	var retVal = aTarget[aTarget.length-1];
	aTarget.length--;
	return retVal;
}
function Message( ieventType, sMsgType, sDetail )
{
	this.eventType = ieventType;
	this.msgType = sMsgType;
	this.msgDetail = sDetail;
	this.senderCourse = "";
	this.senderModule = "";
	this.senderPage = "";
	this.GetCourse = msg_GetCourse;
	this.SetCourse = msg_SetCourse;
	this.GetModule = msg_GetModule;
	this.SetModule = msg_SetModule;
	this.GetPage = msg_GetPage;
	this.SetPage = msg_SetPage;
	this.GetDetail = msg_GetDetail;
	this.SetDetail = msg_SetDetail;
	this.PackMessage = msg_PackMessage;
	this.UnpackMessage = msg_UnpackMessage;
}
function msg_PackMessage()
{
	var retVal;
	retVal = this.msgType + MSGDELIMITER;
	retVal += this.senderCourse + MSGDELIMITER;
	retVal += this.senderModule + MSGDELIMITER;
	retVal += this.senderPage + MSGDELIMITER;
	retVal += this.msgDetail;
	return retVal;
}
function msg_UnpackMessage(sMsgstring)
{
	var i;
	var amesels = new Array();
	var adetails = new Array();
	amesels = sMsgstring.split(MSGDELIMITER);
	this.msgType = amesels[0];
	this.senderCourse = amesels[1];
	this.senderModule = amesels[2];
	this.senderPage = amesels[3];
	for( i=4; i<amesels.length; i++ )
	{
		adetails[adetails.length] = amesels[i];
	}
	this.msgDetail = adetails.join(MSGDELIMITER);
}
function msg_GetCourse()
{
	if(this.senderCourse == null)
	{
		return "";
	}
	else
	{
		return this.senderCourse;
	}
}
function msg_SetCourse(str)
{
	this.senderCourse = str;
}
function msg_GetModule()
{
	if(this.senderModule == null)
	{
		return "";
	}
	else
	{
		return this.senderModule;
	}
}
function msg_SetModule(str)
{
	this.senderModule = str;
}
function msg_GetPage()
{
	if(this.senderPage == null)
	{
		return "";
	}
	else
	{
		return this.senderPage;
	}
}
function msg_SetPage( str )
{
	this.senderPage = str;
}
function msg_GetDetail()
{
	if(this.msgDetail == null)
	{
		return "";
	}
	else
	{
		return this.msgDetail;
	}
}
function msg_SetDetail( str )
{
	this.msgDetail = str;
}
function MessageBroker(sCrs, sMod, sPg)
{
	var ifirstOptArg = 3;
	var i;
	this.senderCourse = sCrs;
	this.senderModule = sMod;
	this.senderPage = sPg;
	this.ambEventSwitch = new Array( true, true, true, true, true);
	this.GetCourse = msg_GetCourse;
	this.SetCourse = msg_SetCourse;
	this.GetModule = msg_GetModule;
	this.SetModule = msg_SetModule;
	this.GetPage = msg_GetPage;
	this.SetPage = msg_SetPage;
	this.SendMessage = msg_mbSendMessage;
	this.SetController = msg_mbSetController;
	this.GetController = msg_mbGetController;
	this.MessageHandler = msg_mbMessageHandler;
	this.FilterMessage = msg_mbFilterMessage;
	this.Shutdown = msg_mbShutdown;
	this.StoreObject = msg_mbStoreObject;
	this.FetchObject = msg_mbFetchObject;
	for(i=ifirstOptArg; i<arguments.length; i++)
	{
		if( true != arguments[i])
		{
			aEventSwitch[i] = false;
		}
	}
	if (null != self.util_CreateActiveXObject)
		this.oMessageControl = util_CreateActiveXObject("SDXBCC.clsServer");
	else
		this.oMessageControl = new ActiveXObject("SDXBCC.clsServer");

	if( true == this.ambEventSwitch[0] )
	{
		this.oMessageControl.BroadcastBrowser = self;
	}
	if( true == this.ambEventSwitch[1] )
	{
		this.oMessageControl.Event1Browser = self;
	}
	if( true == this.ambEventSwitch[2] )
	{
		this.oMessageControl.Event2Browser = self;
	}
	if( true == this.ambEventSwitch[3] )
	{
		this.oMessageControl.Event3Browser = self;
	}
	if( true == this.ambEventSwitch[4] )
	{
		this.oMessageControl.Event4Browser = self;
	}
	msg_oMsgBroker = this;
	return(this);
}
function msg_mbSetController( oCntrl )
{
	this.oController = oCntrl;
	this.oController.RegisterMessageObject( this );
}
function msg_mbGetController()
{
	return this.oController;
}
function msg_mbShutdown()
{
	if (null != this.oController)
	{
		this.oController.UnregisterMessageObject( this );
	}
}
function msg_mbSendMessage(oMsg)
{
	var iEventType = oMsg.eventType;
	var iMsgType = oMsg.msgType;
	oMsg.SetCourse(this.GetCourse());
	oMsg.SetModule(this.GetModule());
	oMsg.SetPage(this.GetPage());
	var packedmessage = oMsg.PackMessage();
	this.oMessageControl.sendMessage( iEventType, this.GetCourse(), iMsgType, packedmessage, 0, 0);
}
function msg_mbMessageHandler(MSG_ID, arguments)
{
	var oMsg;
	switch (MSG_ID)
	{
		case MSG_MOUDLEUNLOADED:
			oMsg = new Message(EVENT1, MSG_ID, arguments);
			msg_oMsgBroker.SendMessage( oMsg );
			break;
	}
}
function msg_mbFilterMessage(oMsg)
{
	if( this.GetCourse() != oMsg.GetCourse() )
	{
		return false;
	}
	if( this.GetModule() == oMsg.GetModule() && this.GetPage() == oMsg.GetPage() )
	{
		return false;
	}
	return true;
}
function msg_mbStoreObject( obj, skey)
{
	this.oMessageControl.Add( obj, skey );
}
function msg_mbFetchObject(skey)
{
	return this.oMessageControl.Item(skey);
}
function Broadcast(oparams)
{
	if(!msg_oMsgBroker.FilterMessage(oparams))
	{
		return;
	}
	window.focus();
	alert("Broadcast");
	msgEchoMsg(oparams);
}
function msgEchoMsg(oparams)
{
	var smsg;
	smsg = "Receiver: " + document.location.href + "\n";
	smsg += "MessageType is " + oparams.MessageType + "\n";
	smsg += "Course is " + oparams.Course + "\n";
	smsg += "vArgs1 is " + oparams.vArgs1 + "\n";
	smsg += "vArgs2 is " + oparams.vArgs2 + "\n";
	smsg += "vArgs3 is " + oparams.vArgs3 + "\n";
	alert( smsg );
}
function msgSendRemotePageLoadRequest(smsgtxt)
{
	var oMsg = new Message(EVENT2, MSG_REMOTENAVIGATEREQUEST, smsgtxt);
	msg_oMsgBroker.SendMessage( oMsg );
}
function hp_Init()
{
	var sUser;
	hp_EnableLinkOptions("disableAll");
	if (oWindowManager == null)
	{
		oWindowManager = new ccWindow_constructor();
	}
	oWindowManager.InitializeModule(ccAICC.DataStorage, "home");

	if (true == bSTADeployedAsAICC)
	{
		sUser = ccAICC.GetDisplayUserID();
		if ("" == sUser)
		{
			sUser = "Unknown";
			alert("Logic error: NO User found for an AICC course.  This is not allowed");
		}
		document.all.txtName.innerText = sUser;
		hp_DeleteOldVersionData();
		hp_EnableLinkOptions("enableAICC");
	}
	else
	{
		if(!con_GetConfigSwitch("breqLogin"))
		{
			sUser = NOLOGIN_USERID;
			ccAICC.SetUserID(sUser)
			hp_DeleteOldVersionData();
			hp_EnableLinkOptions("enableNonAICCWithoutUser");
		}
		else
		{
			sUser = ccAICC.GetDisplayUserID();
			if ("" == util_Trim(sUser))
			{
				hp_AcceptUserName("required");
			}
			else
			{
				document.all.txtName.innerText = sUser;
				hp_DeleteOldVersionData();
				hp_EnableLinkOptions("enableNonAICCWithUser");
			}
		}
	}
}
function hp_EnableLinkOptions(sMode)
{
	switch(sMode)
	{
	case "disableAll":
		LinkUser.style.display="none";
		LinkEnterUserName.style.display="none";
		LinkStart.style.display="none";
		LinkProceed.style.display="none";
		LinkResumeLastPage.style.display ="none";
		LinkRefreshRestart.style.display ="none";
		break;
	case "enableAICC":
		LinkUser.style.display="";
		LinkEnterUserName.style.display="none";
		LinkStart.style.display="";
		if (true == hp_HasValidLastVisitedFrameset())
		{
			LinkResumeLastPage.style.display ="";
			LinkStart.style.display="none";
			LinkProceed.style.display="";
		}
		if (true == hp_HasCourseProgressData())
		{
			LinkRefreshRestart.style.display ="";
			LinkStart.style.display="none";
			LinkProceed.style.display="";
		}
		break;
	case "enableNonAICCWithUser":
		LinkUser.style.display="";
		LinkEnterUserName.style.display="";
		LinkStart.style.display="";
		if (true == hp_HasValidLastVisitedFrameset())
		{
			LinkResumeLastPage.style.display ="";
			LinkStart.style.display="none";
			LinkProceed.style.display="";
		}
		if (true == hp_HasCourseProgressData())
		{
			LinkRefreshRestart.style.display ="";
			LinkStart.style.display="none";
			LinkProceed.style.display="";
		}
		break;
	case "enableNonAICCWithoutUser":
		LinkUser.style.display="none";
		LinkEnterUserName.style.display="none";
		LinkStart.style.display="";
		if (true == hp_HasValidLastVisitedFrameset())
		{
			LinkResumeLastPage.style.display ="";
			LinkStart.style.display="none";
			LinkProceed.style.display="";
		}
		if (true == hp_HasCourseProgressData())
		{
			LinkRefreshRestart.style.display ="";
			LinkStart.style.display="none";
			LinkProceed.style.display="";
		}
		break;
	}
}
function hp_Go(sWhere)
{
	var sStartPage, sConfig, sLastFrameSet;
	if (bGoInvoked == true)
	{
		return;
	}
	bGoInvoked = true;

	switch(sWhere)
	{
		case "Proceed":
			sStartPage = hp_Proceed();
			break;
		case "Resume":
			sStartPage = hp_ResumeLastPage();
			break;
		case "Restart":
			sStartPage = hp_RefreshRestart();
			break;
	}
	var sLoginHREFBaseValue = document.location.href;
	var lInx = sLoginHREFBaseValue.indexOf("?");
	if (-1 != lInx)
	{
		sLoginHREFBaseValue = sLoginHREFBaseValue.substring(0, lInx);
	}
	lInx = sLoginHREFBaseValue.indexOf("&");
	if (-1 != lInx)
	{
		sLoginHREFBaseValue = sLoginHREFBaseValue.substring(0, lInx);
	}
	ccAICC.DataStorage.setItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, LOGINKEY + "href", sLoginHREFBaseValue );

	var sLoginPathBaseValue = document.location.pathname;
	var lInx = sLoginPathBaseValue.indexOf("?");
	if (-1 != lInx)
	{
		sLoginPathBaseValue = sLoginPathBaseValue.substring(0, lInx);
	}
	lInx = sLoginPathBaseValue.indexOf("&");
	if (-1 != lInx)
	{
		sLoginPathBaseValue = sLoginPathBaseValue.substring(0, lInx);
	}
	ccAICC.DataStorage.setItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, LOGINKEY + "pathname", sLoginPathBaseValue);

	if( con_GetConfigSwitch("bnewWindow"))
	{
		if (oWindowManager == null)
		{
			oWindowManager = new ccWindow_constructor();
		}
		sConfig = oWindowManager.GetDisplayConfiguration();

		oNewWin = window.open(sStartPage, "", sConfig);
		oInt = window.setInterval ("retval = hp_CheckChildWinReadyState(oNewWin)" , 100);
	}
	else
	{
		window.location = sStartPage;
	}
}
function hp_ResumeLastPage()
{
	var sStartPage;
	sStartPage = ccAICC.DataStorage.getItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, LAST_VISITED_FRAMESET);

	if ("" == sStartPage || "none" == sStartPage)
	{
		sStartPage = con_GetConfigLink("sfirstPage");
	}
	else
	{
		var sProtocol = document.location.href.toLowerCase();
		sProtocol = sProtocol.substring(0,4);
		if ("http" == sProtocol)
		{
			var prevLoginHREF = '' + 
				ccAICC.DataStorage.getItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, LOGINKEY + "href");
			var sPrevLocation = prevLoginHREF.substring(0,4);
			if ("http" == sPrevLocation)
			{
				var prevLoginPath = '' + 
					ccAICC.DataStorage.getItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, LOGINKEY + "pathname");
				if (prevLoginHREF.toLowerCase() != document.location.href.toLowerCase() && prevLoginHREF != '')
				{
					sStartPage = hp_ResolveURL(prevLoginHREF, prevLoginPath, sStartPage);
				}
			}
			else
			{
				sStartPage = con_GetConfigLink("sfirstPage");
			}
		}
		else
		{
			var prevLoginHREF = '' + 
				ccAICC.DataStorage.getItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, LOGINKEY + "href");
			var prevLoginPath = '' + 
				ccAICC.DataStorage.getItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, LOGINKEY + "pathname");
			if (prevLoginHREF.toLowerCase() != document.location.href.toLowerCase() && prevLoginHREF != '')
			{
				sStartPage = hp_ResolveURL(prevLoginHREF, prevLoginPath, sStartPage);
			}
		}
	}
	return (sStartPage);
}
function hp_RefreshRestart()
{
	var sStartPage;
	hp_ResetCourseData();
	sStartPage = con_GetConfigLink("sfirstPage");
	return (sStartPage);
}
function hp_Proceed()
{
	var sStartPage;
	hp_ResetAllModulesLastVisitedPages();
	sStartPage = con_GetConfigLink("sfirstPage");
	return (sStartPage);
}
function hp_ResolveURL(sHREF, sPath, sStartPage)
{
	var prevLoginHREF = unescape(sHREF).replace(/\//gi, '\\').replace(/\\/gi, '\/');
	var prevLoginPath = sPath.replace(/\//gi, '\\').replace(/\\/gi, '\/');
	var curLoginHREF = unescape(document.location.href).replace(/\//gi, '\\').replace(/\\/gi, '\/');
	var curLoginPath = document.location.pathname.replace(/\//gi, '\\').replace(/\\/gi, '\/');

	var curRoot = curLoginHREF.substr(0, curLoginHREF.indexOf(curLoginPath));
	var prevRoot = prevLoginHREF.substr(0, prevLoginHREF.indexOf(prevLoginPath));

	var aCur = curLoginPath.toLowerCase().split('\/');
	var aPrev = prevLoginPath.toLowerCase().split('\/');

	while (aCur.length > 0 && aPrev.length > 0 && aCur[aCur.length-1] == aPrev[aPrev.length-1])
	{
		aCur.length--;
		aPrev.length--;
	}
	var sCurUnSharedPath = aCur.join('\/');
	var sPrevUnSharedPath = aPrev.join('\/');

	if ('' == sPrevUnSharedPath)
		sPrevUnSharedPath = prevRoot;

	var sURL = unescape(sStartPage.replace(/\//gi, '\\').replace(/\\/gi, '\/'));
	var iStart = sURL.toLowerCase().indexOf(sPrevUnSharedPath.toLowerCase());
	if (iStart == -1)
		return sStartPage;

	sURL = curRoot + sCurUnSharedPath + sURL.substr(iStart + sPrevUnSharedPath.length);

	if (-1 == document.location.pathname.indexOf('\\'))
		sURL = sURL.replace(/\\/gi,'\/');
	else
		sURL = sURL.replace(/\//gi,'\\');

	sURL = sURL.replace(/\:\\\\\\/, '\:\/\/\/');
	sURL = sURL.replace(/\:\\\\/, '\:\/\/');

	sURL = sURL.replace(/ /g, '%20');
	return sURL;
}
function hp_ResetCourseData()
{
	ccAICC.DataStorage.clearNode(sCourseID, sCourseID);
	for (var i=0; i < (aCourseModules.length / 2); i++)
	{
		ccAICC.DataStorage.clearNode(sCourseID, aCourseModules[i*2]);
	}
	hp_WriteCourseVersionData();
}
function hp_ResetAllModulesLastVisitedPages()
{
	for (var i=0; i < (aCourseModules.length / 2); i++)
	{
		if ("" != ccAICC.DataStorage.getItem(sCourseID, aCourseModules[i*2], MODULE_LVL_DATA, MODULE_LVL_DATA, LAST_VISITED_PAGE))
			ccAICC.DataStorage.setItem(sCourseID, aCourseModules[i*2], MODULE_LVL_DATA, MODULE_LVL_DATA, LAST_VISITED_PAGE,"");
	}
}
function hp_HasValidLastVisitedFrameset()
{
	var sLastVisitedFrameset = ccAICC.DataStorage.getItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, LAST_VISITED_FRAMESET);
	if (sLastVisitedFrameset == "")
	{
		return false;
	}
	else
	{
		var sCurrentEnvir = "web";
		if (hp_IsLocalVersion(document.location.href) == true) sCurrentEnvir = "local";
		var sLastPageEnvir = "web";
		if (hp_IsLocalVersion(sLastVisitedFrameset) == true) sLastPageEnvir = "local";

		if (sCurrentEnvir != sLastPageEnvir)
		{
			return false;
		}
		if (sCurrentEnvir == "local" && true == bEnableModularInstall)
		{
			if (hp_IsStillInstalled(sLastVisitedFrameset) == false)
				return false;
		}
	}
	return true;
}
function hp_HasCourseProgressData()
{
	var sCourseProgress = ccAICC.DataStorage.getItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, COURSE_PROGRESS);

	if (sCourseProgress == "")
	{
		return false;
	}
	return true;
}
function hp_IsLocalVersion(sURL)
{
	if (sURL.substr(0,4) != "http")
	{	return true;	}
	else
	{	return false;	}
}
function hp_IsStillInstalled(sURL)
{
	var iLastbackslash = sURL.lastIndexOf("/");
	var sbeforelastbackslash = sURL.substr(0,iLastbackslash);
	var isecondtolastbackslash = sbeforelastbackslash.lastIndexOf("/");
	var smodid = sbeforelastbackslash.substr(isecondtolastbackslash + 1, sbeforelastbackslash.length - isecondtolastbackslash);
	return hp_IsLocalModuleAvailable(smodid)
}
function hp_IsLocalModuleAvailable(sModId)
{
	if (oWindowManager == null)
	{
		oWindowManager = new ccWindow_constructor();
	}
	return oWindowManager.VerifyLocalInstallation(sModId);
}
function hp_DeleteOldVersionData()
{
	var sCATimeStamp = ccAICC.DataStorage.getItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, COURSE_VERSION_TIMESTAMP);
	if (sCATimeStamp == "")
	{
		hp_WriteCourseVersionData();
	}
	else
	{
		if (sCATimeStamp != sCourseTimeStamp)
		{
			alert("This product was built on " + sCourseTimeStamp + " but a history log from the " + sCATimeStamp + " version of this product was found.  That history log has been discarded and a new log created.");
			hp_ResetCourseData();
		}
	}
}
function hp_WriteCourseVersionData()
{
	ccAICC.DataStorage.setItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, COURSE_VERSION_TIMESTAMP, sCourseTimeStamp);
}
function hp_CheckChildWinReadyState(obj)
{
	if (obj.document)
	{
		if (obj.document.readyState == "complete")
		{
			window.clearInterval(oInt);
			if (oWindowManager == null)
			{
				oWindowManager = new ccWindow_constructor();
			}
			oWindowManager.SetBrowserProperties(obj, true);
			return true;
		}
		else
		{
			return false;
		}
	}
}
function hp_AcceptOptionalUserName()
{
	hp_EnableLinkOptions("disableAll");
	hp_AcceptUserName("optional");
}
function hp_AcceptUserName(sMode)
{
	if (sMode == "required")
	{
		imgCancel.style.display="none";
	}
	else
	{
		imgCancel.style.display="";
	}
	hp_positionEnterIDDiv();
	divEnterID.style.display = "";
	txtNameEntered.focus();
}
function hp_positionEnterIDDiv()
{
	divEnterID.style.top = ((document.body.clientHeight / 2) - 
		(parseInt(document.all.divEnterID.style.height)) );
	divEnterID.style.left = ((document.body.clientWidth / 2) - 
		(parseInt(document.all.divEnterID.style.width) / 2));
}
function hp_userNameEntered()
{
	var stxtNameEntered = txtNameEntered.value;
	if (true == hp_ValidateLoginName(stxtNameEntered))
	{
		divEnterID.style.display = "none";
		stxtNameEntered = util_Trim(stxtNameEntered);
		ccAICC.SetUserID(stxtNameEntered);
		hp_Init();
	}
}
function hp_userNameCancelled()
{
	divEnterID.style.display = "none";
	hp_Init();
}
function hp_txtNameOnKeyUp()
{
	var stxtNameEntered = txtNameEntered.value;
	if (window.event.keyCode == 13)
	{
		hp_userNameEntered();
	}
}
function hp_ValidateLoginName(stxtNameEnteredValue)
{
	var i;
	if (stxtNameEnteredValue.length == 0)
	{
		alert('Blank is not a valid name.  Please enter a login name that contains letters, numbers,and spaces.');
		return false;
	}
	for (i=0; i < stxtNameEnteredValue.length; i++)
	{
		if ((stxtNameEnteredValue.charCodeAt(i) >=48) && (stxtNameEnteredValue.charCodeAt(i) <=57))
		{ }
		else if ((stxtNameEnteredValue.charCodeAt(i) >=65) && (stxtNameEnteredValue.charCodeAt(i) 
			<=90))
		{ }
		else if ((stxtNameEnteredValue.charCodeAt(i) >=97) && (stxtNameEnteredValue.charCodeAt(i) 
			<=122))
		{ }
		else if (stxtNameEnteredValue.charCodeAt(i) ==32)
		{ }
		else
		{
			alert('Please enter a login name that contains only letters, numbers, and spaces.');
			return false;
		}
	}
	return true;
}
function Controller()
{
	this.MessageHandler = ctrl_MessageHandler;
	this.RegisterMessageObject = ctrl_RegisterMessageObject;
	this.UnregisterMessageObject = ctrl_UnregisterMessageObject;
	this.ctrl_ListIterator = new list_iterator(null)
	this.ctrl_SubscriberList = new list()
	return this;
}
function ctrl_MessageHandler(MSG_ID)
{
	for (var tmpNode = this.ctrl_SubscriberList.begin(); !tmpNode.equal(this.ctrl_SubscriberList.end()); tmpNode.next())
		if (null != tmpNode.value())
			tmpNode.value().MessageHandler(MSG_ID, arguments);
}
function ctrl_RegisterMessageObject(oSubscriber)
{
	this.ctrl_SubscriberList.push_back(oSubscriber);
}
function ctrl_UnregisterMessageObject(oSubscriber)
{
	for (var tmpNode=this.ctrl_SubscriberList.begin(); !tmpNode.equal(this.ctrl_SubscriberList.end()); tmpNode.next())
		if (oSubscriber==tmpNode.value())
		{
			this.ctrl_SubscriberList.erase(tmpNode);
			break;
		}
}
function navcmn_GetFrameConfigDataByPageName( sPageName)
{
	var sData = navcmn_GetDataByPageName( sPageName , inxFraConfig)
	var result = sData.match(/FSC=([\d+]);/);
	if (result != null)
	{
		return(result[1]);
	}
	else
	{
		return("");
	}
}
function navcmn_GetDataByPageName( sPageName , inx )
{
	sPageName = sPageName.substr(0,sPageName.indexOf("."));
	for (var i=inxFirstItem; i<MyItems.length; i=i+iCols)
	{
		if (MyItems[i + inxPage] == sPageName)
		{
			return MyItems[i + inx];
		}
	}
	return "";
}
function navcmn_GetLevels(vIn, vOut)
{
	for (var i=inxFirstItem; i<vIn.length; i=i+iCols)
	{
		vOut[vOut.length]=parseInt(vIn[i+inxLvl]);
	}
	return vOut;
}
function navcmn_GetNodes(vIn, vOut)
{
	for (var i=inxFirstItem; i<vIn.length; i=i+iCols)
	{
		vOut[vOut.length]=vIn[i+inxNode];
	}
	return vOut;
}
function navcmn_GetTypes(vIn, vOut)
{
	for (var i=inxFirstItem; i<vIn.length; i=i+iCols)
	{
		vOut[vOut.length]=vIn[i+inxType];
	}
	return vOut;
}
function navcmn_GetTrees(vIn, vOut)
{
	for (var i=inxFirstItem; i<vIn.length; i=i+iCols)
	{
		vOut[vOut.length]=vIn[i+inxTree];
	}
	return vOut;
}
function navcmn_GetSeqs(vIn, vOut)
{
	for (var i=inxFirstItem; i<vIn.length; i=i+iCols)
	{
		vOut[vOut.length]=vIn[i+inxSeq];
	}
	return vOut;
}
function navcmn_GetProgs(vIn, vOut)
{
	for (var i=inxFirstItem; i<vIn.length; i=i+iCols)
	{
		vOut[vOut.length]=vIn[i+inxProg];
	}
	return vOut;
}
function navcmn_GetPages(vIn, vOut)
{
	for (var i=inxFirstItem; i<vIn.length; i=i+iCols)
	{
		vOut[vOut.length]=vIn[i+inxPage];
	}
	return vOut;
}
function navcmn_GetTitles(vIn, vOut)
{
	for (var i=inxFirstItem; i<vIn.length; i=i+iCols)
	{
		vOut[vOut.length]=vIn[i+inxTitle];
	}
	return vOut;
}
function navcmn_GetParentRels(vIn, vOut, vCtxt)
{
	for (var i=inxFirstItem; i<vIn.length; i=i+iCols)
	{
		vCtxt[vIn[i+inxLvl]]=parseInt(vOut.length);
		vOut[vOut.length]=parseInt(vCtxt[vIn[i+inxLvl]-1]);
	}
	return vOut;
}
function navcmn_GetChildStatus(vIn, vOut)
{
	for (var i=inxFirstItem; i<((vIn.length)-iCols); i=i+iCols)
	{
		if (vIn[i+inxLvl] <vIn[i+inxLvl+iCols])
		{
			vOut[vOut.length]=1;
		}
		else
		{
			vOut[vOut.length]=0;
		}
	}
	vOut[vOut.length]=0;
	return vOut;
}
function navcmn_GetChildDispStatus(vIn, vOut, vParent)
{
	var iValue;
	var sParseData;
	var iInx;
	var iParent;
	var iParmLgth = sAttrChildDisplay.length;
	var j = 1;

	for (var i=inxFirstItem; i<(vIn.length); i=i+iCols)
	{
		iValue = 1;
		if ("TB" == vIn[i+inxType])
		{
			sParseData = vIn[i+inxAttributes];
			iInx = sParseData.indexOf(sAttrChildDisplay);
			if(-1 != iInx)
			{
				sParseData = sParseData.substring(iInx+iParmLgth,iInx+iParmLgth+1);
				sParseData = sParseData.toUpperCase();
				if ("N" == sParseData)
				{
					iValue=0;
				}
			}
		}
		else
		{
			iParent = vParent[j];
			iValue = vOut[iParent];
		}
		j = j + 1;
		vOut[vOut.length]=iValue;
	}
	return vOut;
}
function navcmn_GetNodeDispStatus(vIn, vOut)
{
	var iValue;
	var sParseData;
	var iInx;
	var iParent;
	var iParmLgth = sAttrNodeDisplay.length;
	var j = 1;

	for (var i=inxFirstItem; i<(vIn.length); i=i+iCols)
	{
		iValue = 1;
		if ("TB" == vIn[i+inxType])
		{
			sParseData = vIn[i+inxAttributes];
			iInx = sParseData.indexOf(sAttrNodeDisplay);
			if(-1 != iInx)
			{
				sParseData = sParseData.substring(iInx+iParmLgth,iInx+iParmLgth+1);
				sParseData = sParseData.toUpperCase();
				if ("N" == sParseData)
				{
					iValue=0;
				}
			}
		}
		else
		{
		}
		j = j + 1;
		vOut[vOut.length]=iValue;
	}
	return vOut;
}
function navcmn_ParseSequences()
{
	var vOut = new Array();
	var iInList;
	var sName;
	var sData;
	var oSeq;
	var curSeq;
	var curPage;

	iInList = 0;
	sName = "";
	sData = "";
	for (i=inxFirstItem; i<MyItems.length/iCols; i++)
	{
		curSeq = MyItems[((i-1)*iCols)+(inxSeq+1)];
		curPage = MyItems[((i-1)*iCols)+(inxPage+1)];

		if (curSeq != "")
		{
			if (sName != curSeq)
			{
				if (1 == iInList)
				{
					vOut[vOut.length] = sData;
				}
				else
				{
					iInList = 1;
				}
				sName = curSeq;
				sData = curPage;
			}
			else
			{
				sData = sData + sParseKey + curPage;
			}
		}
	}
	vOut[vOut.length] = sData;
	return vOut;
}
function navcmn_ParseTabContext(iTabs)
{
	var vCtxt = new Array();
	var i;
	var j;
	var iDepth;
	var iCacheActive;
	var iInCache;
	var sCtxt;
	var curLvl;
	var curType;
	var curPage;
	var sInContext = "Y";

	j = 0;
	iDepth = 1;
	iCacheActive = 0;
	sCtxt = "";
	do {
		for (var i=0; i<MyItems.length/iCols; i++)
		{
			curLvl = MyItems[((i)*iCols)+(inxLvl+1)];
			curPage = MyItems[((i)*iCols)+(inxPage+1)];
			curType = MyItems[((i)*iCols)+(inxType+1)];

			if (iDepth == curLvl)
			{
				if (1 == iCacheActive)
				{
					vCtxt[j] = sCtxt;
					j = j + 1;
					sCtxt = "";
					sCtxt = navcmn_AppendToContext(sCtxt,curPage,sInContext);
				}
				else
				{
					iCacheActive = 1;
					iInCache = 0;
					sCtxt = "";
					sCtxt = navcmn_AppendToContext(sCtxt,curPage,sInContext);
				}
			}
			else
			if (iDepth < curLvl)
			{
				if (1 == iInCache)
				{
					sCtxt = navcmn_AppendToContext(sCtxt,curPage,sInContext);
				}
				else
				{
					sCtxt = navcmn_AppendToContext(sCtxt,curPage,sInContext);
					iInCache = 1;
				}
			}
			else
			{
				if (1 == iCacheActive)
				{
					vCtxt[j] = sCtxt;
					j = j + 1;
					iInCache = 0;
					iCacheActive = 0;
					sCtxt = "";
				}
			}
		}
		if (1 == iCacheActive)
		{
			vCtxt[j] = sCtxt;
			j = j + 1;
			iCacheActive = 0;
			sCtxt = "";
		}
		iDepth = iDepth + 1;
		sCtxt = "";
		iInCache = 0;
	}
	while (j < iTabs)

	return vCtxt;
}

function navcmn_AppendToContext(sCtxt,sPg,sProg)
{
	var sFlag = util_Trim(sProg.toUpperCase());
	if ("Y" == sFlag)
	{
		if ("" == sCtxt)
		{
			sCtxt = sPg;
		}
		else
		{
			sCtxt = sCtxt + sParseKey + sPg;
		}
	}
	return sCtxt;
}
function navcmn_CountDataTabs()
{
	var n = 0;
	for (var i=0; i<MyItems.length/iCols; i++)
	{
		if ("TB" == MyItems[((i)*iCols)+(inxType+1)]) { n = n + 1; }
	}
	return n;
}
function crse_FramesetInit()
{
	crse_sCourseID = sCourseID;
	crse_sModuleID = sModuleID;
	crse_oController = new Controller();
	crse_oStorage = new ccData_constructor();
	crse_oWindowManager = new ccWindow_constructor();
	crse_oWindowManager.InitializeModule(crse_oStorage);
	crse_oProgress = new ProgressObject(crse_oController, crse_oStorage, aCourseModules, MyItems);
	crse_oFramesManager = new FramesManager(crse_oStorage);

	var sFrameLocation = document.location.href.split("?")[0];

	crse_oStorage.setItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, LAST_VISITED_FRAMESET, document.location.href);

	if(bEnableMessageBroker)
	{
		crse_oMessageBroker = new MessageBroker(sCourseID, sModuleID);
		crse_oMessageBroker.SetController( crse_oController );

		var mainSTAWindow;
		mainSTAWindow = util_GetSTAFramesetWindow(window);
		crse_oMessageBroker.StoreObject( mainSTAWindow.document, sCourseID );
	}
	crse_oAICC = ccAICC;
}
function crse_FramesetShutdown()
{
	crse_oWindowManager.TerminateModule(crse_oStorage);
	crse_oController.MessageHandler(MSG_MOUDLEUNLOADED, null)
	crse_oController.UnregisterMessageObject(crse_oFramesManager);
	if(0!=crse_oMessageBroker)
	{
		crse_oMessageBroker.Shutdown();
	}
}
function crse_CourseID()
{
	return crse_sCourseID;
}
function crse_ModuleID()
{
	return crse_sModuleID;
}
function crse_Progress()
{
	return crse_oProgress;
}
function crse_WindowManager()
{
	return crse_oWindowManager;
}
function crse_Storage()
{
	return crse_oStorage;
}
function crse_Controller()
{
	return crse_oController;
}
function crse_AICC()
{
	return crse_oAICC;
}
function crse_InitializeFramesManager()
{
	var sSavedMiniMainFile;
	var sSavedHeaderFile;
	var sSavedFooterFile;
	var sSavedNavFile;
	var sSavedContentFile;
	var i;

	if( null != aFramesWithOptionalScrollbars && document.body.clientWidth < iScrollBarScreenWidthThreshold) // this navconfig has optional scrollbars enabled
	{
		for(i = 0; i < aFramesWithOptionalScrollbars.length; i++)
		{
			if (null != document.all[aFramesWithOptionalScrollbars[i]])
			{
				document.all[aFramesWithOptionalScrollbars[i]].scrolling = "auto";
			}
			else
			{
				alert("Configuration Error: aFramesWithOptionalScrollbars in NavConfig.js references frame [" + aFramesWithOptionalScrollbars[i] + "] which is not defined by the current frameset.");
			}
		}
	}

	crse_oController.RegisterMessageObject(crse_oFramesManager);
	frmmgr_GetDefaultFrameConfigurations();

	if (crse_FrameExists(sMiniMainFrame) == true)
	{
		crse_oController.MessageHandler(MSG_REQUESTPAGELOAD, sDefaultMiniMainPage, sMiniMainFrame);
	}
	if (crse_FrameExists(sHeaderFrame) == true)
	{
		crse_oController.MessageHandler(MSG_REQUESTPAGELOAD, sDefaultHeaderPage, sHeaderFrame);
	}
	if (crse_FrameExists(sFooterFrame) == true)
	{
		crse_oController.MessageHandler(MSG_REQUESTPAGELOAD, sDefaultFooterPage, sFooterFrame);
	}
	if (crse_FrameExists(sNavFrame) == true)
	{
		crse_oController.MessageHandler(MSG_REQUESTPAGELOAD, sDefaultNavPage, sNavFrame);
	}

	var bModuleStartOverride = ("YES" == crse_oStorage.getItem(crse_sCourseID, crse_sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, MODULE_START_OVERRIDE).toUpperCase());
	crse_oStorage.setItem(crse_sCourseID, crse_sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, MODULE_START_OVERRIDE, "no");

	sSavedContentFile = crse_oStorage.getItem(crse_sCourseID, crse_sModuleID, MODULE_LVL_DATA, MODULE_LVL_DATA, LAST_VISITED_PAGE);
	if ( sSavedContentFile == "" || ( !bModuleStartOverride && bModStartWithDefPage))
	{
		crse_oController.MessageHandler(MSG_REQUESTPAGELOAD, sDefaultContentPage, sContentFrame);
	}
	else
	{
		crse_oController.MessageHandler(MSG_REQUESTPAGELOAD, sSavedContentFile, sContentFrame);
	}
}
function crse_FrameExists(frameName)
{
	for (i = 0; i < window.frames.length; i++)
	{
		if (window.frames[i].name == frameName)
			return(true);
	}
	return(false);
}
function Event2(oparams)
{
	/*	Event2 is called by the message broker to facilitate cross-browser instance communication. */

	var oMsg = new Message();
	var aValues;
	oMsg.UnpackMessage(oparams.vArgs1);
	if(!msg_oMsgBroker.FilterMessage(oMsg))
	{
		return;
	}
	window.focus();

	switch( parseInt(oparams.MessageType) )
	{
		case MSG_REMOTENAVIGATEREQUEST:
			/* msg detail for MSG_REMOTENAVIGATEREQEUST is frame|page#bookmark */
			aValues = oMsg.GetDetail().split( MSGDELIMITER );
			msg_oMsgBroker.GetController().MessageHandler( MSG_REMOTENAVIGATEREQUEST, aValues);
			break;
	}
}
function FramesManager(oStorage)
{
	this.MessageHandler = frmmgr_MessageHandler;
	this.ProcessPageLoad = frmmgr_ProcessPageLoad;
	this.frmmgr_oStorage = oStorage;
	this.sCurrentMiniMainPage = new String("");
	this.sCurrentHeaderPage = new String("");
	this.sCurrentFooterPage = new String("");
	this.sCurrentNavPage = new String("");
	this.sCurrentContentPage = new String("");
	return this;
}
function frmmgr_MessageHandler(MSG_ID, parameters)
{
	var sPageID;
	var sDestination;

	switch(MSG_ID)
	{
		case MSG_REQUESTPAGELOAD:
			sPageID= parameters[1];
			sDestination = parameters[2];
			if ( sDestination == null )
			{
				sDestination = sDefaultFrame;
			}
			if (sDestination == sDefaultFrame)
			{
				vNewFraConfig = navcmn_GetFrameConfigDataByPageName(sPageID);
				if (vNewFraConfig != vCurFraConfig)
				{
					frmmgr_RestoreDefaultFrameConfigurations();
					vCurFraConfig = "";
					if (vNewFraConfig != "")
					{
						frmmgr_ExecuteFrameConfig(aFrameConfig[vNewFraConfig]);
						vCurFraConfig = vNewFraConfig;
					}
				}
			}
			this.ProcessPageLoad(sPageID, sDestination);
			self.focus();
			break;
		case MSG_REMOTENAVIGATEREQUEST:
			// parameters: 0=frameset, 1=module, 2=filename
			// better be the default frame
			this.frmmgr_oStorage.setItem(sCourseID, parameters[1][1], MODULE_LVL_DATA, MODULE_LVL_DATA, LAST_VISITED_PAGE, parameters[1][2]);
			this.frmmgr_oStorage.setItem(sCourseID, sCourseID, COURSE_LVL_DATA, COURSE_LVL_DATA, MODULE_START_OVERRIDE,"YES");

			util_GetSTAFramesetWindow(window).navigate( parameters[1][0] );
		default:
			break;
	}
}
function frmmgr_ProcessPageLoad(sPageID, sDestination)
{
	switch ( sDestination )
	{
		case sMiniMainFrame:
			window.frames[sDestination].location = sPageID;
			break;
		case sHeaderFrame:
			window.frames[sDestination].location = sPageID;
			break;
		case sFooterFrame:
			window.frames[sDestination].location = sPageID;
			break;
		case sNavFrame:
			window.frames[sDestination].location = sPageID;
			break;
		default:
			this.frmmgr_oStorage.setItem(sCourseID, sModuleID, MODULE_LVL_DATA, MODULE_LVL_DATA, LAST_VISITED_PAGE, sPageID);
			window.frames[sDestination].location = sPageID;
			break;
	}
}
function frmmgr_GetParentFrameset( sFrameID )
{
	return parent.document.all[sFrameID].parentElement
}
function frmmgr_GetMyIndex( sFrameID )
{
	var i;
	var oParentFrameset = frmmgr_GetParentFrameset( sFrameID );
	for(i = 0; i < oParentFrameset.children.length; i++)
	{
		if( oParentFrameset.children[i].name == sFrameID || oParentFrameset.children[i].id == sFrameID )
		{
			return i;
		}
	}
	alert("Could not find index for " + sFrameID);
	return -1;
}
function frmmgr_HasRows( oFrameset )
{
	return "" == oFrameset.cols;
}
function frmmgr_SetFrameDimension( sFrameID, sNewSize )
{
	var sSizeStr, sConfig, iIndex;
	iIndex = frmmgr_GetMyIndex( sFrameID);
	if( 0 > iIndex )
	{
		return;
	}
	var aSizeArray = new Array();
	var oParentFrameset = frmmgr_GetParentFrameset( sFrameID );

	if(frmmgr_HasRows( oParentFrameset ))
	{
		sSizeStr = oParentFrameset.rows;
		sConfig = ".rows=";
	}
	else
	{
		sSizeStr = oParentFrameset.cols;
		sConfig = ".cols=";
	}
	aSizeArray = sSizeStr.split(",");
	if( aSizeArray.length <= iIndex )
	{
		alert("Index of " + sFrameID + " is too big for frameset");
		return;
	}
	if( "*" == 	aSizeArray[iIndex] )
	{
		alert("Can not set the size of " + sFrameID + " because it is sized with a *");
		return;
	}
	if("0" == sNewSize || "0%" == sNewSize)
	{
		parent.frames[sFrameID].location.replace(sBlankPageURL);
	}
	aSizeArray[iIndex] = sNewSize;
	sSizeStr = aSizeArray.join(",");
	eval( "oParentFrameset" + sConfig + "'" + sSizeStr + "'" );
}
function frmmgr_ReloadDefaultPages()
{
	var sFrameID, i;
	for(i=0; i<parent.frames.length; i++)
	{
		sFrameID = parent.frames[i].name;
		switch(sFrameID)
		{
			case sMiniMainFrame:
				frmmgr_ReloadDefaultContent(sMiniMainFrame,sDefaultMiniMainPage);
				break;
			case sHeaderFrame:
				frmmgr_ReloadDefaultContent(sHeaderFrame,sDefaultHeaderPage);
				break;
			case sFooterFrame:
				frmmgr_ReloadDefaultContent(sFooterFrame,sDefaultFooterPage);
				break;
			case sNavFrame:
				frmmgr_ReloadDefaultContent(sNavFrame,sDefaultNavPage);
		}
	}
}
function frmmgr_ReloadDefaultContent(sFrameID, sPageID)
{
	if(parent.frames[sFrameID].location.href.indexOf(sPageID) < 0)
	{
		parent.frames[sFrameID].location.replace(sPageID);
	}
}
function frmmgr_ExecuteFrameConfig( sConfigStr )
{
	var i, aData, regExp;
	var aFrameConfig = new Array();
	regExp = /([^:]*):([^=]*)=(\S*)/;
	aFrameConfig = sConfigStr.split(";");
	for( i = 0; i < aFrameConfig.length; i++)
	{
		aData = aFrameConfig[i].match(regExp);
		frmmgr_SetFrameDimension( aData[1], aData[3] );
	}
}
function frmmgr_TrimString(str)
{
	if (null == str)
		return '';
	str = str.replace(/^[\s]*/,"");
	str = str.replace(/[\s]*$/,"");
	return str;
}
function frmmgr_GetDefaultFrameConfigurations()
{
	var mainSTAWindow;
	mainSTAWindow = util_GetSTAFramesetWindow(window);

	for (var i=0; i<mainSTAWindow.document.all.tags("frameset").length; i++)
	{
		var oCurFrameSet = mainSTAWindow.document.all.tags("frameset")[i]
		if(frmmgr_HasRows(oCurFrameSet))
		{
			sSizeStr = "'" + oCurFrameSet.rows + "'";
			aDefaultFraConfigs[i] = ".rows=" + sSizeStr;
		}
		else
		{
			sSizeStr = "'" + oCurFrameSet.cols + "'";
			aDefaultFraConfigs[i] = ".cols=" + sSizeStr;
		}
	}
}
function frmmgr_RestoreDefaultFrameConfigurations()
{
	var mainSTAWindow;
	mainSTAWindow = util_GetSTAFramesetWindow(window);

	for (var i=0; i<mainSTAWindow.document.all.tags("frameset").length; i++)
	{
		eval ("util_GetSTAFramesetWindow(window).document.all.tags('frameset')[i]" + aDefaultFraConfigs[i]);
	}
	frmmgr_ReloadDefaultPages();
}
