/// <summary>
/// All base Javascript functions except for Custom Validation JS functions.
/// </summary>
///<Version>1.0.0.00</Version>
var blnSubmitButtonClicked = false;
var ContentWindow;
var strDocumentWindowTitle = null;
var strDocumentFrameName = null;
var intProgressBarPercent = -1;
var intProgressBarTimer = -1;
// SCORM cross domain script issue
/*var strSCORMDomain = document.domain;
var intIndex = strSCORMDomain.lastIndexOf('.');
var strSCORMString = strSCORMDomain;
if(intIndex > 0)
{
strSCORMString = strSCORMDomain.substring(intIndex);
if(strSCORMString.length <= 5) // .net/.com/.org/.info/.us etc
{
intIndex = strSCORMDomain.lastIndexOf('.', intIndex-1);
if(intIndex > 0)
{
strSCORMString = strSCORMDomain.substring(intIndex+1);
}
}
}
document.domain = strSCORMString;*/
//

var blnFileRadioButtonEnabled = true;
var strInternalFile = "";

var newwindow;
var blnDGAjaxInProgress = false;

var blnHasMadeChange = false;
var strUserIdHash = "";
var strCourseIdHash = "";
var strSessionIdHash = "";
var intSelectedTabIndex = -1;
var strTabId = "";
var strTabKey = "";
var strSelectedTabKey = "";
var ctlWithFocus;

///////////////////////////////////////////////////////////////////////////////////
//  SCORM Player JS State Variables
var strScormCourseType = "";
var strScormCourseId = "";
var strScormLaunchId = "";

var strScormLaunchLink = "";
var strScormLaunchedItemId = "";

var blnWaitForSCO = true;

var intWaitForLMSFinishHandle;
var intForceLMSFinishHandle;

var bln508C = false;
var SCORMnodeId;

//var blnIsPageHeaderVisible = false;    //  Default blnIsPageHeaderVisible to false. Determines visibilty of the Page Header frame within a course player window (SCORM 1.2 & 2004).
var m_scormCurrentNavRequest = '';
var m_scormRunNavRequest = false;
var m_scormPlayerExit = false;
var m_scormDefaultOpenTOCFramesetDimensions = "300,*"
var m_scormDefaultClosedTOCFramesetDimensions = "0,*"
var m_scormLastTOCFramesetCols = "undefined";
var m_scormPrevContButtonClicked = false;
var m_scormTOCFrameSizeTracker = 0;
var m_scormTOCFrameSizeTrackerStep = 0;
var m_scormTOCFrameToggleDelay = 10;
///////////////////////////////////////////////////////////////////////////////////

var intRefreshParentTimer = -1;
var strCurrentLocation;
var blnDomainInfoClicked = false;
var strDomainNodeIdForInfo = "";

var blnKeywordsInput = false;
var strKeywordsString = "";

function DetermineKeywords()
{
    //alert('Fired DetermineKeywords');
    var objForm = document.BaseForm;

    for (i = 0; i < objForm.elements.length; i++)
    {
        var element = objForm.elements[i];

        if ((element.name.indexOf("MGR_LAST_NAME") != -1 ||
			element.name.indexOf("MGR_FIRST_NAME") != -1 ||
			element.name.indexOf("USR_LAST_NAME") != -1 ||
			element.name.indexOf("USR_FIRST_NAME") != -1 ||
			element.name.indexOf("SearchFor") != -1) &&
			element.name != "SearchForSite")
		{
            strKeywordsString += element.value;
            blnKeywordsInput = true;
        }
    }
}

function ValidateAllKeywordsInput(arrElements)
{
    var objForm = document.BaseForm;
    var strBuildString = "";
    var blnBreakUpperLoop = false;

    for (i = 0; i < objForm.elements.length; i++)
    {
        var element = objForm.elements[i];
        var elementtype = element.type;
        var elementname = element.name

        if (elementtype == "text" || elementtype == "select-one")
        {
            for (var k = 0; k < arrElements.length; k++)
            {
                if (element.name.indexOf(arrElements[k]) != -1 &&
					element.name.indexOf("SearchForSite") == -1 &&
					element.name.indexOf("SearchType") == -1 &&
					element.value.indexOf("CreateUserAccount") == -1 &&
					element.value.indexOf("CoachingRoster") == -1)
				{
                    switch (elementtype)
                    {
                        case "text":
                            strBuildString += element.value;
                            break;

                        case "select-one":
                            strBuildString += element.value;
                            break;

                        default:
                            break;
                    }
                }

                if (strBuildString != "")
                {
                    blnBreakUpperLoop = true;
                    break;
                }
            }
        }
        
        if (blnBreakUpperLoop)
        {
            break;
        }
    }

    if (strBuildString == "")
    {
        alert(GetLocalizedMessage('ML.BASE.JSMSG.NoBlankSearch'));
    
        blnBreakUpperLoop = false;
    
        return false;
    }
    else
    {
        strBuildString = "";
    }
}

var blnTrueSearchButton = false;
function ValidateKeywordInput() {
    DetermineKeywords();

    //	alert (blnKeywordsInput + '\n' + blnTrueSearchButton + '\n' + strKeywordsString);

    if (blnKeywordsInput && blnTrueSearchButton && strKeywordsString == "") {
        alert(GetLocalizedMessage('ML.BASE.JSMSG.NoBlankSearch'));
        blnTrueSearchButton = false;
        return false;
    }
    else {
        strKeywordsString = "";
    }
    //
    //DisableSubmitButtonsOnSubmit();
}

function DisableSubmitButtonsOnSubmit() {
    document.BaseForm.submit();
    window.setTimeout("DisableAllSubmitButtons()", 0);
}

function DisableAllSubmitButtons() {
    var objForm = document.BaseForm;

    if (objForm.elements.length < 500) {
        for (i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];
            if (element.type == 'submit') {
                element.disabled = true; ;
            }
        }
    }
}

function ValidateGlobalSearchInput() {
    if (GetConfigSetting('ValidateKeywordInput') == "On") {
        var objForm = document.BaseForm;

        for (i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];
            if (element.name == "SearchForSite") {
                strKeywordsString = element.value;
                blnKeywordsInput = true;
            }
        }


        if (blnKeywordsInput && (strKeywordsString == "" || strKeywordsString == GetLocalizedMessage('ML.BASE.SearchText'))) {
            alert(GetLocalizedMessage('ML.BASE.JSMSG.NoBlankSearch'));
            blnTrueSearchButton = false;
            return false;
        }
    }
}

///EventHandler when DomainTree information Icon is clicked
//Have hardcoded the treeId since .Net appends stuff around
//actual set TreeId
function DomainTreeInfoIconClicked(treeId, nodeId) {
    blnDomainInfoClicked = true;
    strDomainNodeIdForInfo = nodeId;
}

function DomainConsoleTreeClick(treeId, nodeId, button) {
    if (blnDomainInfoClicked) {
        var objTree = null;
        objTree = igtree_getTreeById(treeId);
        if (null != objTree) {
            objTree.CancelPostBack = true;
            blnDomainInfoClicked = false;
            GoViewInformation(strDomainNodeIdForInfo, 'Domain');
        }
    }
}

function SetRefreshTimer()
{
    // Set refresh timer only if ML_AutomaticPageRefresh variable is true
    var automaticPageRefresh = document.getElementById('ML_AutomaticPageRefresh');

    if (automaticPageRefresh != null)
    {
        if (automaticPageRefresh.value == 'true')
        {
            // If another popup is launched by same user - TTU Server too busy issue.
            if (intRefreshParentTimer != -1)
            {
                clearInterval(intRefreshParentTimer);
            }
            
            intRefreshParentTimer = setInterval(RefreshParent, 300);
        }
    }
}

function RefreshParent()
{
//    $(document).ready(function() {
    if (ContentWindow != null) 
    {    
        if (ContentWindow.closed)
        {
            clearInterval(intRefreshParentTimer);
            window.location.replace(window.location.href);
        }
    }
//                                 });
}

function ContinueUnloadSCO()
{
    if (top.scorm_course_api.document.blnSCOUnloaded)
    {
        ContinueUnloadSCOStepTwo();
    } 
    else 
    {
        setTimeout(ContinueUnloadSCO, 300);   
    }
}

function ContinueUnloadSCOStepTwo()
{
    intWaitForLMSFinishHandle = setInterval(WaitForLMSFinish, 1000);
    intForceLMSFinishHandle = setTimeout(ForceLMSFinish, 1000);
    top.scorm_block_info.location.href = "about:blank";
}

function UnloadSCO()
{
//    blnWaitForSCO = true;
    top.scorm_block_info.location.href = GetCalculatedUrl('Courseware/SCORM/Navigation/SCONavigationWait.htm');

    setTimeout(ContinueUnloadSCO, 100);
}

function WaitForLMSFinish()
{
    if (!top.scorm_course_api.blnInitialized)
    {
        clearInterval(intWaitForLMSFinishHandle);
        clearTimeout(intForceLMSFinishHandle);

        RefreshScormMenu();
    }
}

function ForceLMSFinish()
{
    if (top.scorm_course_api.blnInitialized)
    {
        if (blnWaitForSCO)
        {
            blnWaitForSCO = false;
        
            if (strScormCourseType == 'SCORM12')
            {
                top.scorm_course_api.LMSFinish('');
            }
            else
            {
                top.scorm_course_api.Terminate('');
            }
            
            intForceLMSFinishHandle = setTimeout(ForceLMSFinish, 1000);
        }
        else
        {
            clearInterval(intWaitForLMSFinishHandle);

            RefreshScormMenu();
        }
    }
}

function RefreshScormMenu()
{
//    var strCourseId = '';

    var strCourseId = top.Navigation.document.NavigationForm.strCourseId.value;

//    if (strScormCourseType == 'SCORM12')
//    {
//        strCourseId = top.Navigation.document.NavigationForm.strCourseId.value;
//    }
//    else
//    {
//        strCourseId = top.Navigation.document.NavigationForm.strCourseId.value;
//    }
    
    if (strScormLaunchLink != '')
    {
        if (strScormCourseType == 'SCORM12')
        {
            if (bln508C)
            {
                top.scorm_course_menu.location.href = GetCalculatedUrl('Courseware/SCORM/SCORM12CourseMenu.aspx') + '?strCourseId=' + strCourseId + '&strLaunchLink=' + strScormLaunchLink + '&strLaunchedItemId=' + strScormLaunchedItemId;
            }
            else
            {
                igtree_treeName = 'SCORM12Menu';
                igtree_nodeId = SCORMnodeId;

                top.scorm_course_menu.igtree_onTimerPostNodeClick();                //  CAS 07-22-2010 *** making the ig call inside the scorm_course_menu frame document.
            }
        }
        else
        {
            if (bln508C)
            {
                top.scorm_course_menu.location.href = GetCalculatedUrl('Courseware/SCORM/SCORMCourseMenu.aspx') + '?strCourseId=' + strCourseId + '&strLaunchLink=' + strScormLaunchLink + '&strLaunchedItemId=' + strScormLaunchedItemId;
            }
            else
            {
                top.Navigation.document.NavigationForm.blnRefreshMenu.value = 'true';
                igtree_treeName = 'SCORMMenu';
                igtree_nodeId = SCORMnodeId;

                top.scorm_course_menu.igtree_onTimerPostNodeClick();                //  CAS 07-22-2010 *** making the ig call inside the scorm_course_menu frame document.
            }
        }
        
        strScormLaunchLink = "";
        strScormLaunchedItemId = "";
    }
    else
    {
        top.window.close();
    }

    top.Navigation.document.NavigationForm.RefreshMenu.value = 'true';
    
//    if (strScormCourseType == 'SCORM12')
//    {
//        top.Navigation.document.NavigationForm.RefreshMenu.value = 'true';
//    }
//    else
//    {
//        top.Navigation.document.NavigationForm.RefreshMenu.value = 'true';
//    }
}

function TableSCONodeClicked(strLaunchLink, strLaunchedItemId)
{
    strScormLaunchLink = "";
    strScormLaunchedItemId = "";
    
    // SCO node clicked - Section 508c active
    if (top.scorm_course_api.blnInitialized)
    {
        top.Navigation.document.NavigationForm.RefreshMenu.value = 'false';
        strScormLaunchLink = strLaunchLink;
        strScormLaunchedItemId = strLaunchedItemId;
        bln508C = true;

        UnloadSCO();

        alert(GetLocalizedMessage('ML.BASE.SCO.Active'));

        return false;
    }

    return true;
}

function SCONodeClicked(treeId, nodeId, button) 
{
	var objTree = top.scorm_course_menu.igtree_getTreeById(treeId);    //  CAS 07-22-2010 *** making the ig call inside the scorm_course_menu frame document.
	var objNode = top.scorm_course_menu.igtree_getNodeById(nodeId);    //  CAS 07-22-2010 *** making the ig call inside the scorm_course_menu frame document.
	var strNodeTag = objNode.getTag();

	objTree.CancelPostBack = true;

    top.scorm_course_api.document.objTempTreeId = treeId;
    top.scorm_course_api.document.objTempNodeId = nodeId;
    top.scorm_course_api.document.objTempButton = button;

    top.scorm_course_api.document.blnSCOUnloaded = false;
 
	if (strNodeTag.toUpperCase().indexOf("BLNISENABLED=FALSE") == -1 &&
	    strNodeTag.toUpperCase().indexOf("BLNISSELECTABLE=FALSE") == -1)
	{
        SCONodeClickedStepOne();
    }
}

function ContinueSCONodeClicked()
{
    if (top.scorm_course_api.document.blnSCOUnloaded)
    {
        SCONodeClickedStepTwo(top.scorm_course_api.document.objTempTreeId, top.scorm_course_api.document.objTempNodeId, top.scorm_course_api.document.objTempButton);
    } 
    else 
    {
        setTimeout(ContinueSCONodeClicked, 300);   
    }
}

function SCONodeClickedStepOne() 
{ 
    top.scorm_block_info.location.href = GetCalculatedUrl('Courseware/SCORM/Navigation/SCONavigationWait.htm');

    setTimeout(ContinueSCONodeClicked, 300);  
}

function SCONodeClickedStepTwo(treeId, nodeId, button) 
{ 
	var objTree = top.scorm_course_menu.igtree_getTreeById(treeId);    //  CAS 07-22-2010 *** making the ig call inside the scorm_course_menu frame document.
	var objNode = top.scorm_course_menu.igtree_getNodeById(nodeId);    //  CAS 07-22-2010 *** making the ig call inside the scorm_course_menu frame document.
	var strNodeTag = objNode.getTag();

	strScormLaunchLink = "";
	strScormLaunchedItemId = "";

	var strLaunchLink = "";
	var strLaunchedItemId = "";
	var strUserId = "";
	var strCourseId = "";
	var blnIsSelectable = "true";
	var blnIsEnabled = "true";

	SCORMnodeId = nodeId;
	
    if (strScormCourseType == 'SCORM12')
	{
		var strVars = strNodeTag.split('|');
		var strVar = strVars[2].split('@');

		strLaunchLink = strVar[1];
		strVar = strVars[3].split('@');
		strLaunchedItemId = strVar[1];
	}
	else
	{
		var strVars = strNodeTag.split('+');
		var strVar = strVars[4].split('=');

		strLaunchLink = strVar[1];
		strLaunchedItemId = strLaunchLink;
		
		strVar = strVars[0].split('=');
		strUserId = strVar[1];

		strVar = strVars[1].split('=');
		blnIsSelectable = strVar[1];;

		strVar = strVars[2].split('=');
		blnIsEnabled = strVar[1];;

		strVar = strVars[3].split('=');
		strCourseId = strVar[1];

		top.Navigation.document.NavigationForm.blnRefreshMenu.value = 'true';
	}
   
    var intCounter = 0;
    var blnTerminateCalled = 'false';
    
    if (top.scorm_course_api != null && top.scorm_course_api.document.BaseForm.blnTerminateCalled != null)
    {
        blnTerminateCalled = top.scorm_course_api.document.BaseForm.blnTerminateCalled.value;
        intCounter = 0;
        
        do
        {
            setTimeout(DoNothing, 60000);
            
            if (top.scorm_course_api != null)
            {
                blnTerminateCalled = top.scorm_course_api.document.BaseForm.blnTerminateCalled.value;
            }
            
            intCounter++;
        } 
        
        while (blnTerminateCalled == 'false' && intCounter != 5);
    }

    // SCO node clicked - Section 508c controls NOT active
	if (blnTerminateCalled == 'false' && 
	    top.scorm_course_api.blnInitialized && 
	    strLaunchLink != '' && 
	    (blnIsEnabled.toUpperCase() == 'TRUE') && 
	    (blnIsSelectable.toUpperCase() == 'TRUE'))
	{
	    top.Navigation.document.NavigationForm.RefreshMenu.value = 'false';

//		if (strScormCourseType == 'SCORM12')
//		{
//		    top.Navigation.document.NavigationForm.RefreshMenu.value = 'false';
//		}
//		else
//		{
//			top.Navigation.document.NavigationForm.RefreshMenu.value = 'false';
//		}
		
		strScormLaunchLink = strLaunchLink;
		strScormLaunchedItemId = strLaunchedItemId;
		
		UnloadSCO();
		
		objTree.CancelPostBack = true;
		bln508C = false;
		
		alert(GetLocalizedMessage('ML.BASE.SCO.Active'));
		
		return;
	}

	// Normal launch
	strScormLaunchLink = "";
	strScormLaunchedItemId = "";

	var objNode = top.scorm_course_menu.igtree_getNodeById(nodeId);      //  CAS 07-22-2010 *** making the ig call inside the scorm_course_menu frame document.
	var strNodeTag = objNode.getTag().toUpperCase();
	var blnStopProcess = false;
	
	if (strNodeTag.toUpperCase().indexOf("BLNISENABLED=FALSE") != -1 ||
	    strNodeTag.toUpperCase().indexOf("BLNISSELECTABLE=FALSE") != -1)
	{
		var objTree = top.scorm_course_menu.igtree_getTreeById(treeId);        //  CAS 07-22-2010 *** making the ig call inside the scorm_course_menu frame document.
		
		objTree.CancelPostBack = true;
		blnStopProcess = true;
	}

	if (!blnStopProcess)
	{
		if (top.Navigation != null)  // Scorm 2004 courses, check TOC
		{
			if (top.Navigation.document.NavigationForm.blnAwaitingTOC.value == 'false') 
			{
				top.scorm_block_info.location.href = GetCalculatedUrl('Courseware/SCORM/Navigation/SCONavigationWait.htm');

				top.Navigation.document.NavigationForm.strUserId.value = strUserId;
				top.Navigation.document.NavigationForm.strCourseId.value = strCourseId;
				top.Navigation.document.NavigationForm.strItemId.value = strLaunchedItemId;
	    		top.Navigation.document.NavigationForm.RefreshMenu.value = 'true';
				top.Navigation.document.NavigationForm.strTargetSCOId.value = strLaunchedItemId;
				top.Navigation.document.NavigationForm.strNavRequest.value = "choice";
				
				top.Navigation.document.NavigationForm.submit();
				
				top.Navigation.document.NavigationForm.strNavRequest.value = '';
				top.Navigation.document.NavigationForm.strTargetSCOId.value= '';

//				var objTree = top.scorm_course_menu.igtree_getTreeById(treeId);
//				objTree.CancelPostBack = true;

//				top.Navigation.document.NavigationForm.blnAwaitingTOC.value = 'true'; 

//                setTimeout(DoNothing, 30000);
			} 
			else 
			{
				var objTree = top.scorm_course_menu.igtree_getTreeById(treeId);    //  CAS 07-22-2010 *** making the ig call inside the scorm_course_menu frame document.
		
				objTree.CancelPostBack = true;
			}
		} 
	}
}

/////////////////////////////////////////////////////////////////////////////
//  Function: ExitCourseButtonHandler()
//  Parameters: N/A
//  Returns: N/A
//  Description: SCORM 1.2 Exit course button click handler.
/////////////////////////////////////////////////////////////////////////////
function ExitCourseButtonHandler()
{
    strScormCourseType = 'SCORM12' ;

    var userQuestion = 'Are you sure you want to exit this course?';      //  Default the message as if exit button was clicked.
    
    if (confirm(userQuestion))
    {
        if (top.scorm_course_api.blnInitialized)
        {
            UnloadSCO();
        } 
        else
        {
            top.window.close(); 
        }
    }
}

/////////////////////////////////////////////////////////////////////////////
//  Function: ExitButtonHandler()
//  Parameters: exitButton - 'abandon', 'exit' or 'suspend'.
//  Returns: N/A
//  Description: SCORM 2004 Abandon/Suspend/Exit button click handler 1.
/////////////////////////////////////////////////////////////////////////////
function ExitButtonHandler(navRequest)
{
    strScormCourseType = 'SCORM2004' ;

    var userQuestion = 'Are you sure you want to exit this activity?';      //  Default the message as if exit button was clicked.
    
    switch (navRequest)
    {
        case 'abandon':
            userQuestion = 'Are you sure you want to abandon this activity?';
            break;
            
        case 'suspend':
            userQuestion = 'Are you sure you want to suspend this activity?';
            break;
    }
    
    if (confirm(userQuestion))
    {
        if (top.scorm_course_api.blnInitialized)
        {
            UnloadSCO();
        } 
        else
        {
            top.window.close(); 
        }
    }
}

/////////////////////////////////////////////////////////////////////////////
//  Function: ExitAllButtonHandler()
//  Parameters: exitButton - 'abandonAll', 'exitAll' or 'suspendAll'.
//  Returns: N/A
//  Description: SCORM 2004 AbandonAll/SuspendAll/ExitAll button click handler 1.
/////////////////////////////////////////////////////////////////////////////
function ExitAllButtonHandler(navRequest)
{
//    alert('ExitAllButtonHandler(' + navRequest + '): entering...' +
//            '\n m_scormPlayerExit = ' + m_scormPlayerExit +
//            '\n m_scormRunNavRequest = ' + m_scormRunNavRequest)
    
    strScormCourseType = 'SCORM2004';

    var userQuestion = 'Are you sure you want to exit this course?';      //  Default the message as if exitAll button was clicked.
    
    switch (navRequest)
    {
        case 'abandonAll':
            userQuestion = 'Are you sure you want to abandon this course?';
            break;
            
        case 'suspendAll':
            userQuestion = 'Are you sure you want to suspend this course?';
            break;
    }
    
    m_scormRunNavRequest = confirm(userQuestion);

//    alert('ExitAllButtonHandler(' + navRequest + '): exiting...' +
//            '\n m_scormPlayerExit = ' + m_scormPlayerExit +
//            '\n m_scormRunNavRequest = ' + m_scormRunNavRequest)
}

/////////////////////////////////////////////////////////////////////////////
//  Function: LMSNavigationClick()
//  Parameters: N/A
//  Returns: N/A
//  Description: SCORM 2004 Continue/Previous button click handler 1.
/////////////////////////////////////////////////////////////////////////////
function LMSNavigationClick()
{
    m_scormPrevContButtonClicked = true;    //  
    m_scormRunNavRequest = true;
}

/////////////////////////////////////////////////////////////////////////////
//  Function: updateNavigation()
//  Parameters: navRequest: values - previous, continue, abandonAll, suspendAll, exitAll.
//  Returns: N/A
//  Description: SCORM 2004 nav button click handler 2.
/////////////////////////////////////////////////////////////////////////////
function updateNavigation(navRequest)
{
//    alert('updateNavigation(' + navRequest + '): entering...' +
//            '\n m_scormPlayerExit = ' + m_scormPlayerExit +
//            '\n m_scormRunNavRequest = ' + m_scormRunNavRequest)
    
    if (m_scormRunNavRequest)
    {
        m_scormCurrentNavRequest = navRequest;                       //  Save navRequest in a global m_scormCurrentNavRequest.
        m_scormPlayerExit = !m_scormPrevContButtonClicked;      //  Set m_scormPlayerExit to true if Pre/Cont buttons were NOT clicked.

        top.scorm_block_info.location.href = GetCalculatedUrl('Courseware/SCORM/Navigation/SCONavigationWait.htm');

//        setTimeout(updateNavigationContinue, 100);              // CAS ** 07-13-2010 Why is this timeout trigger here? Instead of just calling the method directly following the if below?

//        if (navRequest == 'previous' ||
//            navRequest == 'continue')
//        {
//            m_scormPlayerExit = false;
//        }
//        else
//        {
//            m_scormPlayerExit = true;
//        }
    }

    updateNavigationContinue();
    
//    alert('updateNavigation(' + navRequest + '): exiting...' +
//        '\n m_scormPlayerExit = ' + m_scormPlayerExit +
//        '\n m_scormRunNavRequest = ' + m_scormRunNavRequest)
}

function updateNavigationContinue()
{
//    alert('updateNavigationContinue(): entering...' +
//            '\n top.scorm_course_api.document.blnSCOUnloaded = ' + top.scorm_course_api.document.blnSCOUnloaded +
//            '\n m_scormPlayerExit = ' + m_scormPlayerExit +
//            '\n m_scormRunNavRequest = ' + m_scormRunNavRequest)
    
    if (top.scorm_course_api.document.blnSCOUnloaded)
    {
        updateNavigationFinish();
    } 
    else 
    {
        setTimeout(updateNavigationContinue, 100);   
//        setTimeout(updateNavigationContinue, 300);   
    }

//    alert('updateNavigationContinue(): exiting...' +
//            '\n top.scorm_course_api.document.blnSCOUnloaded = ' + top.scorm_course_api.document.blnSCOUnloaded +
//            '\n m_scormPlayerExit = ' + m_scormPlayerExit +
//            '\n m_scormRunNavRequest = ' + m_scormRunNavRequest)
}

function updateNavigationFinish()
{
//    alert('updateNavigationFinish(' + m_scormCurrentNavRequest + '): entering...' +
//        '\n m_scormPlayerExit = ' + m_scormPlayerExit +
//        '\n m_scormRunNavRequest = ' + m_scormRunNavRequest)

    top.Navigation.document.NavigationForm.blnRefreshMenu.value = 'true';
    top.Navigation.document.NavigationForm.strNavRequest.value = m_scormCurrentNavRequest;

    top.Navigation.document.NavigationForm.submit();

    top.Navigation.document.NavigationForm.strNavRequest.value = '';

    m_scormCurrentNavRequest = '';
    
    if (m_scormPlayerExit)
    {
        m_scormPlayerExit = false;
        m_scormRunNavRequest = false;
        
//        alert('updateNavigationFinish(' + m_scormCurrentNavRequest + '): about to close the window!' +
//            '\n m_scormPlayerExit = ' + m_scormPlayerExit +
//            '\n m_scormRunNavRequest = ' + m_scormRunNavRequest)
   
        top.window.close();
    }

//    alert('updateNavigationFinish(' + m_scormCurrentNavRequest + '): exiting...' +
//        '\n m_scormPlayerExit = ' + m_scormPlayerExit +
//        '\n m_scormRunNavRequest = ' + m_scormRunNavRequest)
}

/////////////////////////////////////////////////////////////////////////////
//  Function: SCONodeClickedSCORM12()
//  Parameters: treeId, nodeId, button
//  Returns: N/A
//  Description: SCORM 1.2 TOC node onclick handler.
/////////////////////////////////////////////////////////////////////////////
function SCONodeClickedSCORM12(treeId, nodeId, button) 
{ 
	var objTree = top.scorm_course_menu.igtree_getTreeById(treeId);
	var objNode = top.scorm_course_menu.igtree_getNodeById(nodeId);
	var strNodeTag = objNode.getTag();

	strScormLaunchLink = "";
	strScormLaunchedItemId = "";

	var strLaunchLink = "";
	var strLaunchedItemId = "";
	var strUserId = "";
	var strCourseId = "";
	var blnIsSelectable = "true";
	var blnIsEnabled = "true";
	
	SCORMnodeId = nodeId;

//	if (strScormCourseType == 'SCORM12')
//	{
		var strVars = strNodeTag.split('|');
		var strVar = strVars[2].split('@');
	
		strLaunchLink = strVar[1];
		strVar = strVars[3].split('@');
		strLaunchedItemId = strVar[1];
/////////////////////////////////////////////////////////////////////////////
//  CAS 07-27-2010 *** N/A to SCORM 1.2	
//	}
//	else
//	{
//		var strVars = strNodeTag.split('+');
//		var strVar = strVars[4].split('=');
//		strLaunchLink = strVar[1];
//		strLaunchedItemId = strLaunchLink;
//		strVar = strVars[0].split('=');
//		strUserId = strVar[1];
//		strVar = strVars[1].split('=');
//		blnIsSelectable = strVar[1];;
//		strVar = strVars[2].split('=');
//		blnIsEnabled = strVar[1];;
//		strVar = strVars[3].split('=');
//		strCourseId = strVar[1];
//		top.Navigation.document.NavigationForm.blnRefreshMenu.value = 'true';
//	}
/////////////////////////////////////////////////////////////////////////////

    // SCO node clicked - Section 508c controls NOT active
	if (top.scorm_course_api.blnInitialized &&
	    blnIsEnabled.toUpperCase() == 'TRUE' &&
	    blnIsSelectable.toUpperCase() == 'TRUE')
	{
	    top.Navigation.document.NavigationForm.RefreshMenu.value = 'false';

//		if (strScormCourseType == 'SCORM12')
//		{
//		    top.Navigation.document.NavigationForm.RefreshMenu.value = 'false';
//		}
//		else
//		{
//			top.Navigation.document.NavigationForm.RefreshMenu.value = 'false';
//		}
		
		strScormLaunchLink = strLaunchLink;
		strScormLaunchedItemId = strLaunchedItemId;

		UnloadSCO();

		objTree.CancelPostBack = true;
		bln508C = false;
		
		alert(GetLocalizedMessage('ML.BASE.SCO.Active'));
		
		return;
	}

	// Normal launch
	strScormLaunchLink = "";
	strScormLaunchedItemId = "";

	var objNode = top.scorm_course_menu.igtree_getNodeById(nodeId);
	var strNodeTag = objNode.getTag().toUpperCase();
	var blnStopProcess = false;
	
	if (strNodeTag.toUpperCase().indexOf("BLNISENABLED=FALSE") != -1 ||
	    strNodeTag.toUpperCase().indexOf("BLNISSELECTABLE=FALSE") != -1)
	{
		var objTree = top.scorm_course_menu.igtree_getTreeById(treeId);
	
		objTree.CancelPostBack = true;
		blnStopProcess = true;
	}

/////////////////////////////////////////////////////////////////////////////
//  CAS 07-27-2010 *** N/A to SCORM 1.2	
//	if (!blnStopProcess)
//	{
////		if (top.Navigation != null)  // Scorm 2004 courses, check TOC
//		if (strScormCourseType != 'SCORM12')    //  CAS Mod 07-23-2010
//		{
//			if (top.Navigation.document.NavigationForm.blnAwaitingTOC.value == 'false') 
//			{
//				top.scorm_block_info.location.href = GetCalculatedUrl('Courseware/SCORM/Navigation/SCONavigationWait.htm');
//				top.Navigation.document.NavigationForm.strUserId.value = strUserId;
//				top.Navigation.document.NavigationForm.strCourseId.value = strCourseId;
//				top.Navigation.document.NavigationForm.strItemId.value = strLaunchedItemId;
//				top.Navigation.document.NavigationForm.strTargetSCOId.value = strLaunchedItemId;
//				top.Navigation.document.NavigationForm.strNavRequest.value = "choice";
//				top.Navigation.document.NavigationForm.submit();
//				top.Navigation.document.NavigationForm.strNavRequest.value = '';
//				top.Navigation.document.NavigationForm.strTargetSCOId.value= '';
//				var objTree = top.scorm_course_menu.igtree_getTreeById(treeId);
//				objTree.CancelPostBack = true;
//				top.Navigation.document.NavigationForm.blnAwaitingTOC.value = 'true'; 
//			} 
//			else 
//			{
//				var objTree = top.scorm_course_menu.igtree_getTreeById(treeId);
//				objTree.CancelPostBack = true;
//			}
//		}
//	}
/////////////////////////////////////////////////////////////////////////////
}

function SCORM2K4NodeClicked(blnIsEnabled, blnIsSelectable, strLaunchLink, strUserId, strCourseId)
{
    strScormLaunchLink = "";
    strScormLaunchedItemId = "";
    // alert ('enabled: ' + blnIsEnabled + '\r selectable: ' + blnIsSelectable + '\r User: ' + strUserId + '\r Course: ' + strCourseId);
    // SCO node clicked - Section 508c controls NOT active
    strScormLaunchLink = strLaunchLink;
    strScormLaunchedItemId = strLaunchLink;

    if (top.scorm_course_api.blnInitialized)
    {
        top.Navigation.document.NavigationForm.RefreshMenu.value = 'false';
        
        UnloadSCO();
        
        bln508C = false;
    
        return;
    }

    top.Navigation.document.NavigationForm.blnRefreshMenu.value = 'true';

    ///////////////////////////////////////////////////////////////////////////////////
    //  CAS Comment 07-23-2010 *** why not just do if (blnIsEnabled && blnIsSelectable)
    //  instead of the whole blnStopProcess thing?
    var blnStopProcess = false;

    if (blnIsEnabled.toUpperCase() == 'FALSE' ||
        blnIsSelectable.toUpperCase() == 'FALSE')
    {
        blnStopProcess = true;
    }

    if (!blnStopProcess)
    ///////////////////////////////////////////////////////////////////////////////////
    {
        if (top.Navigation.document.NavigationForm.blnAwaitingTOC.value == 'false')
        {
            top.scorm_block_info.location.href = GetCalculatedUrl('Courseware/SCORM/Navigation/SCONavigationWait.htm');

            top.Navigation.document.NavigationForm.strItemId.value = strScormLaunchedItemId;
            top.Navigation.document.NavigationForm.strTargetSCOId.value = strScormLaunchedItemId;
            top.Navigation.document.NavigationForm.strNavRequest.value = "choice";
            
            top.Navigation.document.NavigationForm.submit();

            top.Navigation.document.NavigationForm.strNavRequest.value = '';
            top.Navigation.document.NavigationForm.strTargetSCOId.value = '';
            top.Navigation.document.NavigationForm.blnAwaitingTOC.value = 'true';
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}

function AccordionMenuTreeNodeClicked(treeId, nodeId, button)
{
    var objTree = igtree_getTreeById(treeId);
    var objNode = igtree_getNodeById(nodeId);
    var strNodeTag = objNode.getTag();

    if (strNodeTag.indexOf("GoAboutLMS") != -1)
    {
        objTree.CancelPostBack = true;
    
        GoAboutLMS();
    }
    else
    {
        if (strNodeTag.indexOf("GoGlossary") != -1)
        {
            objTree.CancelPostBack = true;
        
            GoGlossary();
        }
        else
        {
            if (strNodeTag.indexOf("GoSystemHelp") != -1)
            {
                objTree.CancelPostBack = true;

                GoSystemHelp(strNodeTag.substr(strNodeTag.indexOf("?") + 1));
            }
            else
            {
                if (strNodeTag.indexOf("GoPersonalDashboards") != -1)
                {
                    objTree.CancelPostBack = true;

                    eval(strNodeTag);
                }
            }
        }
    }
}

function GoPersonalDashboards(strRequestLocaleId, strRequestRegionId, strRequestTimeZoneId, strSkinValue, strCurrentUserId, strCurrentDomainId, strReportServer, strIDPSurveyModuleType) {
    strUrl = strReportServer + '/rdPage.aspx?rdReport=db_Dashboard&blnReset=True&CurrentDomainId=' + escape(strCurrentDomainId) + '&CurrentUserId=' + strCurrentUserId + '&SkinValue=' + strSkinValue + '&RequestRegionId=' + strRequestRegionId + '&RequestLocaleId=' + strRequestLocaleId + '&RequestTimeZoneId=' + strRequestTimeZoneId + '&IDPSurveyModuleType=' + strIDPSurveyModuleType;
    newwindow = window.open(strUrl, '_PopupReport', 'toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }
}

function FeatureClick(strFeatureId) {
    var v = document.getElementById('SearchFeatureId');
    var objForm = document.BaseForm;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'checkbox') {
            var name = element.name;

            if (name.indexOf('CSCSFT_CSPACE_FEATURE_ID$' + strFeatureId) != -1) {
                element.disabled = true;
                element.checked = true;
            }
        }
    }
}

/*
if (navigator.appName == 'Netscape') {
window.captureEvents(Event.KEYPRESS);
window.onKeyPress = netscapeKeyPress;
}

function netscapeKeyPress(e)
{
alert('keypress');
if(e.which == 13)
alert('enter');
}
*/
/*
this function trims the text of the textarea to maxlength of 
the textarea
*/
function TextAreaOnBlur(txtArea, strLen, strAlert) {
    var txtElement = document.getElementById(txtArea.id);
    if (null != txtElement) {
        if (txtElement.value.length > strLen) {
            txtElement.value = txtElement.value.substring(0, strLen);
            alert(strAlert);
        }
    }
}
/*
this function restricts the text typed in a textarea to the MaxLength specified in 
the definition file
*/
function TextAreaChkLength(txtArea, strLen) {
    var txtElement = document.getElementById(txtArea.id);
    if (null != txtElement) {
        if (txtElement.value.length < strLen) {
            return true;
        }
        else {
            return false;
        }
    }
}
/*Following function is responsible for 
Capturing KeyStrokes and if the Key is Enter(KeyCode 13)
it fires the 'Click' event of the default Button*/

function KeyPressHandler(strButtonId, e) {
    var key;
    if (browser.isIE) {
        key = event.keyCode;
    }
    else {
        key = e.which;
    }
    ///Commented out by Fabrice.  Does work in NS 7.0 and returns error in Javascript window. 
    ///Need to find equivalent of event in NS.
    if (key == 13 && null != strButtonId && "" != strButtonId) {
        var btnElement = document.getElementById(strButtonId);

        if (null != btnElement) {
            if (browser.isIE) {
                event.returnValue = false;
                event.cancel = true;
            }
            else {
                if (e && e.preventDefault)
                    e.preventDefault();
            }
            btnElement.click();
        }
        else {
            var objForm = document.BaseForm;

            for (i = 0; i < objForm.elements.length; i++) {
                var element = objForm.elements[i];

                if ('submit' == element.type) {
                    var strId = element.id

                    if (strId.indexOf(strButtonId) != -1) {
                        if (browser.isIE) {
                            event.returnValue = false;
                            event.cancel = true;
                        }
                        else {
                            if (e && e.preventDefault)
                                e.preventDefault();
                        }
                        element.click();

                        break;
                    }
                }
            }
        }
    }
}

function ShowAlert(strAlertText) {
    //alert (strAlertText);
}


function ShowLastError(strAlertText) {
    //	alert (strAlertText);
}

function ManualRequiredValidator()
{
    return false;
}

function TreeKeyDownHandler(treeID, keyCode)
{
    var evnt = window.event;
    var tn = treeID;
	var ts=igtree_treeState[treeID];
	var tree=ts.treeElement;
	
	if(igtree_editControl && ig_csom.IsFireFox)
		return;
	
	if(evnt.keyCode == 9 && evnt.shiftKey == false)
	{
		var elem = evnt.srcElement; 
		if(elem == null)
			elem = evnt.target; 
		if(elem.tagName == "INPUT" && elem.type == "checkbox")
		{
			var node = elem.nextSibling; 
			node.tabIndex = tree.tabIndex; 
			node.title = node.innerHTML;
			node.focus(); 
			ig_cancelEvent(evnt);
			return;
		}
	}
	
	var processed=false;
	var igtree_currentNode = igtree_selectedNode(treeID);
	var nodeId = '';
	if(igtree_currentNode != null)
	    nodeId = igtree_currentNode.id;
	if(igtree_currentNode)
		tree.hideFocus = true;
	if(evnt.keyCode == 13){  // Enter
		if(igtree_currentNode != null)	{
			processed=true;
			igtree_navigate(ts, ts.getSelectedNode());			
		}
	}
	if(evnt.keyCode == 113){  // F2
		if(igtree_currentNode != null)	{
			processed=true;
			if(ts.Editable)
				igtree_beginedit(treeID,igtree_currentNode.id);
		}
	}
	if(evnt.keyCode == 32){  // Spacebar
		if(igtree_currentNode != null)	{
			processed=true;
	        var src=igtree_getSrcNodeElement(evnt,tn);
	        if(!src)
		        return;
	        var eNode = igtree_getNodeElement(src);
	        for(index=1;index<eNode.childNodes.length;index++) {
		        var chk = eNode.childNodes[index].getAttribute("igChk");
		        if(chk!=null && chk.length>0)
		            {
			        eNode.childNodes[index].checked = !eNode.childNodes[index].checked;
			        igtree_updateNodeCheck(ts, nodeId, eNode.childNodes[index].checked);
			        }
	        }
		}
	}
	if(evnt.keyCode == 107 || evnt.keyCode == 109 || evnt.keyCode == 37 || evnt.keyCode == 39)
	{ // plus/minus key
		if(igtree_currentNode == null)
			return;
		var ns=igtree_getElementById("M_"+igtree_currentNode.id);
		if(!ns && ts.LoadOnDemand >= 1) {
			if(evnt.keyCode==107 || evnt.keyCode==39)
				igtree_toggle(treeID,igtree_currentNode.id);
			processed=true;
		}
		else
		if(ns)	{
			var toggle=((evnt.keyCode == 107 || evnt.keyCode == 39) && ns.style.display=="none" || (evnt.keyCode == 109 || evnt.keyCode == 37) && ns.style.display=="");
			if(toggle)
				igtree_toggle(treeID,igtree_currentNode.id);
			processed=true;
		}
	}
	if(evnt.keyCode == 35){ // end key
		if(igtree_currentNode)	{
			var last = igtree_lastNode(treeID);
			if(last){
				last=igtree_setSelectedNode(treeID,last.id);
				//igtree_scrollToView(tree,last);
				processed=true;
			}
		}
	}
	if(evnt.keyCode == 36){ // home key
		if(igtree_currentNode){
			var first = igtree_firstNode(treeID);
			if(first){
				first=igtree_setSelectedNode(treeID,first.id);
				//igtree_scrollToView(tree,first);
				processed=true;
			}
		}
	}
	if(evnt.keyCode == 38)	{ // up arrow
		if(igtree_currentNode)	{
			var sibling = igtree_prevVisibleNode(treeID,igtree_currentNode);
			if(sibling)	{
				while(sibling && sibling.getAttribute("nodeDisabled"))
					sibling = igtree_prevVisibleNode(treeID,sibling);
				if(!sibling)
					return;	
				sibling=igtree_setSelectedNode(treeID,sibling.id);
				//igtree_scrollToView(tree,sibling);
				processed=true;
			}
		}
	}
	if(evnt.keyCode == 40)
	{ // down arrow
		if(igtree_currentNode){
			var sibling = igtree_nextVisibleNode(treeID,igtree_currentNode);
			if(sibling)	{
				while(sibling && sibling.getAttribute("nodeDisabled"))
					sibling = igtree_nextVisibleNode(treeID,sibling);
				if(!sibling)
					return;	
				sibling=igtree_setSelectedNode(treeID,sibling.id);
				//igtree_scrollToView(tree,sibling);
				processed=true;
			}
		}
		else
		{
			tree.hideFocus = true;
			var sibling = ts.getNodes()[0].Element;
			if(sibling)	{
				while(sibling && sibling.getAttribute("nodeDisabled"))
					sibling = igtree_nextVisibleNode(treeID,sibling);
				if(!sibling)
					return;	
				sibling=igtree_setSelectedNode(treeID,sibling.id);
				//igtree_scrollToView(tree,sibling);
				processed=true;				
			}
		}
	}
	if(processed)	{
		evnt.cancelBubble=true;
		evnt.returnValue=false;
		return false;
	}
}

function ReturnFalse(e) {
    if (e.keyCode != 9) // Firefox traps tab keys
    {
        if (browser.isIE) {
            event.returnValue = false;
            event.cancel = true;
        }
        else {
            if (e && e.preventDefault)
                e.preventDefault();
        }
    }
}

function DoNothing()
{
}

function PrintWindow()
{
    window.print();
}

function SelectIdentifiedTab(intGoToTab)
{
    var objTabs = igtab_getTabById(strTabId);

    igtab_selectTab(objTabs, intGoToTab)
}

function VerifyTabSelected()
{
    if (intSelectedTabIndex != -1)
    {
        var objTabs = igtab_getTabById(strTabId);

        igtab_selectTab(objTabs, intSelectedTabIndex)
    }
}

/*The function validates(Client side validation) of both start time and end time
dropdownlist. It ensures start time is less than or equal to EndTime*/
/*DEPRECATED(not required because of MultiDayEvent*/
function EventTimeValidation(source, args) {
    var objForm = document.BaseForm;
    var iIndex = 0;

    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' && element.name.indexOf('EVT_START_TIME') != -1) {
            if (element.selectedIndex == 0) {
                return;
            }
            else {
                iIndex = element.selectedIndex;
                break;
            }
        }
    }

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' && element.name.indexOf('EVT_END_TIME') != -1) {
            if (element.selectedIndex == 0) {
                return;
            }

            if (element.selectedIndex < iIndex) {
                args.IsValid = false;
            }

            break;
        }
    }

    return;
}

/*The function validates(Client side validation) of both start time and end time
dropdownlist. It ensures start time is less than or equal to EndTime*/
function TextHTMLValidation(source, args) {
    var objElement = document.getElementById(source.controltovalidate);
    var objValue = objElement.value;
    var strRegExp = /<[a-zA-Z](.*?)>/;
    var match = objValue.match(strRegExp);
    if (match != null) {
        args.IsValid = false;
        if (blnUser508Support) {
            alert(GetLocalizedMessage("ML.BASE.VAL.NoHTMLTags"));
        }
    }
    return;
}

function ContentActiveValidation(source, strAlert, strEnrolled, strWaitlisted) {
    var objForm = document.BaseForm;
    var blnActiveChecked = false;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if ('radio' == element.type
			&& element.value == 'T'
			&& element.checked == true) {
            blnActiveChecked = true;
            break;
        }
    }

    if (!blnActiveChecked) {
        if (parseInt(strEnrolled, 0) > 0 || parseInt(strWaitlisted, 0) > 0) {
            return confirm(strAlert);
        }
        else {
            return true;
        }
    }
    else {
        return true;
    }
}

function DocumentClientValidation(source, arguments) {
    var objForm = document.BaseForm;
    var boolInternalChecked = false;
    var boolExternalChecked = false;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if ('radio' == element.type
			&& element.value == 'INTERNALDOC_PATH'
			&& element.checked == true) {
            boolInternalChecked = true;
            break;
        }
        if ('radio' == element.type
			&& element.value == 'EXTERNALFILE_URL'
			&& element.checked == true) {
            boolExternalChecked = true;
            break;
        }
    }
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if ('file' == element.type) {
            var strElementName = element.name;
            var j = strElementName.lastIndexOf('$');
            var strName = strElementName.substring(j + 1);
            if ('DOCUMENT_PATH' == strName) {
                if (true == boolInternalChecked && "" == element.value) {
                    arguments.IsValid = false;
                    break;
                }
            }
        }
        if ('text' == element.type) {
            var strElementName = element.name;
            var j = strElementName.lastIndexOf('$');
            var strName = strElementName.substring(j + 1);
            if ('DOCUMENT_URL' == strName) {
                if (true == boolExternalChecked && "" == element.value) {
                    arguments.IsValid = false;
                    break;
                }
            }
        }
    }
}

function GeneralCourseClientValidation(source, arguments) {
    //	var objForm = document.BaseForm;
    //	var boolInternalChecked = false;
    //	var boolExternalChecked = false;
    //	
    //	for (i =  0; i < objForm.elements.length; i++)
    //	{
    //		var element = objForm.elements[i];
    //		if('radio' == element.type
    //			&& element.value == 'INTERNALCOURSE_PATH'
    //			&& element.checked == true)
    //		{
    //				boolInternalChecked = true;
    //				break;
    //		}
    //		if('radio' == element.type
    //			&& element.value == 'EXTERNALFILE_URL'
    //			&& element.checked == true)
    //		{
    //				boolExternalChecked = true;
    //				break;
    //		}
    //	}
    //	for(i=0;i<objForm.elements.length;i++)
    //	{
    //		var element = objForm.elements[i];
    //		if('file' == element.type)
    //		{
    //			var strElementName = element.name;
    //			var j = strElementName.lastIndexOf('$');
    //			var strName = strElementName.substring(j+1);
    //			if('COURSE_PATH' == strName)
    //			{
    //				if(true == boolInternalChecked && "" == element.value)
    //				{
    //					arguments.IsValid = false;
    //					break;
    //				}
    //			}
    //		}
    //		if('text' == element.type)
    //		{
    //			var strElementName = element.name;
    //			var j = strElementName.lastIndexOf('$');
    //			var strName = strElementName.substring(j+1);
    //			if('COURSE_URL' == strName)
    //			{
    //				if(true == boolExternalChecked && "" == element.value)
    //				{
    //					arguments.IsValid = false;
    //					break;
    //				}
    //			}
    //		}
    //	}
}

function SetEditDocumentControls() {
    // check the internaldoc radiobutton only if the external url radion button is not selected
    // this is to ensure that the internaldocument radio button is only selected the first time this page is
    // loaded
    var objForm = document.BaseForm;
    var bExternalFile = false;
    for (var i = 0; i < document.BaseForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (objForm.elements[i].type == 'radio' && element.id.indexOf("EXTERNALFILE_URL") != -1) {
            if (element.checked == true) {
                bExternalFile = true;
            }
        }
    }
    if (bExternalFile == false) {
        for (var i = 0; i < document.BaseForm.elements.length; i++) {
            var element = objForm.elements[i];
            if (objForm.elements[i].type == 'radio' && element.id.indexOf("INTERNALDOC_PATH") != -1) {
                element.checked = true;
            }
        }
    }

    var bInternalDoc = false;
    for (var i = 0; i < document.BaseForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (objForm.elements[i].type == 'radio' && element.id.indexOf("INTERNALDOC_PATH") != -1) {
            if (element.checked == true) {
                bInternalDoc = true;
            }
            break;
        }
    }
    if (true == bInternalDoc) {
        for (var i = 0; i < document.BaseForm.elements.length; i++) {
            var element = objForm.elements[i];
            if (objForm.elements[i].type == 'text' && element.name.indexOf("DOCUMENT_URL") != -1) {
                element.disabled = true;
                break;
            }

        }
    }
    else {
        for (var i = 0; i < document.BaseForm.elements.length; i++) {
            var element = objForm.elements[i];
            if (objForm.elements[i].type == 'file' && element.name.indexOf("DOCUMENT_PATH") != -1) {
                element.disabled = true;
                break;
            }

        }
    }
}

function SetEditCourseControls() {
    // check the internalcourse radiobutton only if the external url radio button is not selected
    // this is to ensure that the internalcourse radio button is only selected the first time this page is
    // loaded
    var objForm = document.BaseForm;
    var bCourseExternalFile = false;

    for (var i = 0; i < document.BaseForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (objForm.elements[i].type == 'radio' && element.id.indexOf("EXTERNALFILE_URL") != -1) {
            if (element.checked == true) {
                bCourseExternalFile = true;
            }
        }
    }
    if (bCourseExternalFile == false) {
        for (var i = 0; i < document.BaseForm.elements.length; i++) {
            var element = objForm.elements[i];
            if (objForm.elements[i].type == 'radio' && element.id.indexOf("INTERNALCOURSE_PATH") != -1) {
                element.checked = true;
            }
        }
    }

    var bCourseInternalDoc = false;
    for (var i = 0; i < document.BaseForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (objForm.elements[i].type == 'radio' && element.id.indexOf("INTERNALCOURSE_PATH") != -1) {
            if (element.checked == true) {
                bCourseInternalDoc = true;
            }
            break;
        }
    }
    if (true == bCourseInternalDoc) {
        for (var i = 0; i < document.BaseForm.elements.length; i++) {
            var element = objForm.elements[i];
            if (objForm.elements[i].type == 'text' && element.name.indexOf("COURSE_URL") != -1) {
                element.disabled = true;
                break;
            }

        }
    }
    else {
        for (var i = 0; i < document.BaseForm.elements.length; i++) {
            var element = objForm.elements[i];
            if (objForm.elements[i].type == 'file' && element.name.indexOf("COURSE_PATH") != -1) {
                element.disabled = true;
                break;
            }

        }
    }
}

function SCORMUploadFileValidation(source, arg) {
    var objTempForm = document.BaseForm;
    for (i = 0; i < objTempForm.elements.length; i++) {
        if (objTempForm.elements[i].name.indexOf('UploadFile') != -1) {
            var strSelectedDocument = objTempForm.elements[i].value;
            if (strSelectedDocument.substring(strSelectedDocument.length - 3).toUpperCase() != "ZIP") {
                arg.IsValid = false;
            }
            break;
        }
    }

    if (blnUser508Support && !arg.IsValid) {
        alert(GetLocalizedMessage("ML.BASE.MSG.InvalidSCORMUploadExtention"));
    }

}

/*This function is called on every page onload event
1) Function to set focus on first control of the page*/
function FocusFirstFormOnLoad() {
    // EME/OTM - 7535
    RecurTypeDDHandler();
    AllDayEventCheckBoxHandler();
    MatchImageHeightWidthStateHandler();
    ChoiceImageHeightWidthStateHandler();
    ContentSharingTypeHandler();
    EditActivityDisableDates();
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
        return;
    }

    var objTempForm = document.BaseForm;
    if (typeof (blnUser508Support) == 'undefined') {
        blnUser508Support = false;
    }
    if (objTempForm.elements.length > 100 || blnUser508Support) {
        return;
    }
    var strUrl = document.URL;
    if (strUrl != null && strUrl.toLowerCase().indexOf('paymentinformation.aspx') != -1) {
        PIEnableDisableValidation('');
    }
    FocusFirstFormOnTabChange();
}

/* not in use.  thought of for Redesign with problems with the side menu navigation*/
function RemoveAttributes() {
    var objForm = document.BaseForm;
    //	alert(objForm.all.length);
    for (var i = 0; i < objForm.all.length; i++) {
        if (objForm.all[i].getAttribute("id") != null) {
            var strAttribute = objForm.all[i].getAttribute("id").toString();
            if (strAttribute == "SideMenuNavigation") {
                if (objForm.all[i].getAttribute("style") != null) {
                    //						alert (objForm.all[i].getAttribute("style").value);
                }
            }
        }
    }
}

/*This function sets the focus on the first control on every page
onload and whenever a tab is changed
1)TabMenu_tbl  is the id of table in which infragistics creates its tab
(This is specific to Infragistics control
2)PageTabMenu is the id if Infragistics tab, refer to "BasePageRendering.GetTabSet.cs"*/
function FocusFirstFormOnTabChange() {
    var strUrl = document.URLUnencoded;
    if (strUrl != null) {
        if ((strUrl.indexOf('PostNewView.aspx') != -1 && strUrl.indexOf('Action=EditComment') == -1)
		    || strUrl.indexOf('test3.htm') != -1)//Do want to set focus on the first element for the PostNewView page
        {
            return;
        }
    }

    if (null != document.getElementById("TabMenu_tbl")) {
        var tabs = igtab_getTabById("TabMenu");

        if (tabs != null) {
            var tab = tabs.getSelectedTab();
            strSelectedTabKey = tab.Key;
        }
    }

    var objTempForm = document.BaseForm;

    for (i = 0; i < objTempForm.elements.length; i++) {
        if (objTempForm.elements[i].type != 'hidden'
			&& objTempForm.elements[i].type != 'submit'
			&& objTempForm.elements[i].type != 'radio'
			&& objTempForm.elements[i].type != 'checkbox'
			&& objTempForm.elements[i].name != 'SearchForSite') {
            if (strTabKey.toUpperCase() != "PREVIEW" &&
				((objTempForm.elements[i].getAttribute("disabled") != null) &&
				(!(objTempForm.elements[i].getAttribute("disabled"))))) {
                var strElementName = objTempForm.elements[i].name;
                if (strSelectedTabKey != "" &&
						strElementName.indexOf(strSelectedTabKey) == -1) {
                    continue;
                }
                else {
                    if (objTempForm.elements[i].name != "") {
                        objTempForm.elements[i].focus();
                    }
                    break;
                }
            }
        }
    }

}

function FocusFirstFormOnTabChange1(intTabIndex) {

    var objTempForm = document.BaseForm;
    var intTabCounter = -1;
    var strTabName = "";
    var strPreviousTabName = "";
    var strElementName = "";

    for (i = 0; i < objTempForm.elements.length; i++) {
        strElementName = objTempForm.elements[i].name;
        if (strElementName.indexOf("TabMenu:") != -1) {
            strTabName = strElementName.substring(strElementName.indexOf(":"), strElementName.lastIndexOf(":"));
            if (strTabName != strPreviousTabName) {
                intTabCounter = intTabCounter + 1;
                strPreviousTabName = strTabName;
            }
        }

        if (objTempForm.elements[i].type != 'hidden'
			&& objTempForm.elements[i].type != 'submit'
			&& strElementName != 'SearchForSite'
			&& intTabCounter == intTabIndex) {
            // Commented out after discussion with Ken about problem with focus when filling in comments since the selected tab is not the first tab
            // and trying to focus the cursor on a field in the first tab.  Infragistics focuses to the tab after loading the tab set.  No way to know which tab
            // is selected since kept in view state on submit.  Fabrice.04/27/05.
            //				objTempForm.elements[i].focus();
            break;
        }
    }
}

function RouteHelpLaunching(strHelpType, strParameters) {
    //alert(strHelpType + "\n" + strParameters);
    newwindow = window.open(GetCalculatedUrl('Help/PopupHelp.aspx') + '?strHelpType=' + escape(strHelpType) + '&' + strParameters, '_PopupHelp', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }
    //return true;
}
function RouteHelpLaunching(strParameters) {
    var strCurrentTabKey = '';
    if (null != document.getElementById("TabMenu_tbl")) {
        var tabs = igtab_getTabById("TabMenu");
        var tab = tabs.getSelectedTab();
        strCurrentTabKey = tab.Key;
    }

    var strNewParameters = strParameters + '&CurrentTabKey=' + escape(strCurrentTabKey);
    newwindow = window.open(GetCalculatedUrl('Help/PopupHelp.aspx') + '?' + strNewParameters, '_PopupHelp', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    //return true;
}

function LaunchReport(strCourseID, strUserID, strCertID, strReportName, strDomainID) {
    newwindow = window.open(GetCalculatedUrl('Reports/ReportRouter.aspx') + '?strDomainID=' + strDomainID + '&strCourseID=' + strCourseID + '&strUserID=' + strUserID + '&strCertID=' + strCertID + '&strReportName=' + strReportName + '', '_PopupReport', 'toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}
/*
function CheckForEmail(strUserId, strRecipientId,strType)
{
var bRet = true;
var objForm = document.BaseForm;
	
for (i=0;i<objForm.elements.length;i++) 
{
var element = objForm.elements[i];
		
if ('select-one' == element.type)
{
var attrib = element.attributes["AssocId"];
			
if (null != attrib && strRecipientId == attrib.value)
{
if ('ML.BASE.ACT.SendEmail' == element.value)
{
window.open('/KView/CustomCodeBehind/Utilities/EmailUser.aspx?strUserId='+escape(strUserId)+'&strRecipientId='+escape(strRecipientId)+'&strType='+escape(strType)+'&PopUp='+escape('true'),'_EmailUser','toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=640,height=520');
					
bRet = false;					
}
break;				
}
}
}

return bRet;
}*/

function SendUserEmail(strSenderId, strRecipientId, strEmail) {
    switch (strEmail) {
        case "SendEmailRegular":
            newwindow = window.open(GetCalculatedUrl('Utilities/EmailUser.aspx') + '?strUserId=' + escape(strSenderId) + '&strRecipientId=' + escape(strRecipientId) + '&strType=&PopUp=' + escape('true'), '_EmailUser', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=640,height=520');
            if (newwindow && newwindow.open && !newwindow.closed) {
                newwindow.focus();
            }
            break;

        default:
            break;
    }

    return false;
}


function ActionMenuPopupHandler(strRowId, strPopupType) {
    var bRet = true;
    var objForm = document.BaseForm;

    if (strPopupType == "ViewSelectedInstructorSchedule") {
        newwindow = window.open(GetCalculatedUrl('Instructor/InstructorViewScheduleInPopup.aspx') + '?strInstructorId=' + escape(strRowId) + '&PopUp=' + escape('true'), '_ViewSchedule', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=640,height=520');
        if (newwindow && newwindow.open && !newwindow.closed) {
            newwindow.focus();
        }
        bRet = false;
    }

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if ('select-one' == element.type) {
            var attrib = element.attributes["AssocId"];

            if ((null != attrib && attrib.value == strRowId) || strPopupType == 'ViewSelectedInstructorSchedule') {
                switch (strPopupType) {
                    case "ViewRoomSchedule":
                        if ('ML.BASE.ACT.ViewSchedule' == element.value) {
                            newwindow = window.open(GetCalculatedUrl('Content/Locations/RoomViewScheduleInPopup.aspx') + '?strRoomId=' + escape(strRowId) + '&PopUp=' + escape('true'), '_ViewSchedule', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=640,height=520');
                            if (newwindow && newwindow.open && !newwindow.closed) {
                                newwindow.focus();
                            }
                            bRet = false;
                        }
                        break;
                    case "ViewInstructorSchedule":
                        if ('ML.BASE.ACT.ViewSchedule' == element.value) {
                            newwindow = window.open(GetCalculatedUrl('Instructor/InstructorViewScheduleInPopup.aspx') + '?strInstructorId=' + escape(strRowId) + '&PopUp=' + escape('true'), '_ViewSchedule', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=640,height=520');
                            if (newwindow && newwindow.open && !newwindow.closed) {
                                newwindow.focus();
                            }
                            bRet = false;
                        }
                        break;
                    case "SendEmailRegular":
                        /*					
                        if ('ML.BASE.ACT.SendEmail' == element.value)
                        {
                        window.open('/KView/CustomCodeBehind/Utilities/EmailUser.aspx?strUserId='+escape(strUserId)+'&strRecipientId='+escape(strRecipientId)+'&strType='+escape(strType)+'&PopUp='+escape('true'),'_EmailUser','toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=640,height=520');
						
						bRet = false;					
                        }*/

                        break;
                    case "SectionRoster":
                        if ('ML.BASE.ACT.Roster' == element.value) {
                            newwindow = window.open(GetCalculatedUrl('Instructor/SectionRoster.aspx') + '?strSectionId=' + escape(strRowId) + '&PopUp=' + escape('true'), '_ViewSchedule', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=640,height=520');
                            if (newwindow && newwindow.open && !newwindow.closed) {
                                newwindow.focus();
                            }
                            bRet = false;
                        }
                }
            }
        }
    }
    return bRet;

}

function ProxyLoginPopUp(userid) {
    if (userid != null)
        newwindow = window.open(GetCalculatedUrl('User/ProxyLogin.aspx') + '?strUserId=' + escape(userid) + '&strType=&PopUp=' + escape('true'), escape(userid) + '_ProxyLogin', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }
    return true;
}

function RouteActionMenuCallsTest(strRowId, strMessage) {
    var objForm = document.BaseForm;
    // Find associated drop-down, see if selected item is lock test.
    var varSelected = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' &&
			element.name.indexOf('ActionsMenu_') != -1 &&
			element.name.indexOf(strRowId) != -1) {
            varSelected = element.value;
        }
    }

    if (varSelected == 'ML.BASE.ACT.LockTest') {
        return confirm(strMessage);
    }
    if (varSelected == 'ML.BASE.ACT.PreviewTest') {

        newwindow = window.open(GetCalculatedUrl('Test/Management/TestPreview.aspx') + '?strItemId=' + strRowId, '_PreviewTest', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
        if (newwindow && newwindow.open && !newwindow.closed) {
            newwindow.focus();
        }

        return false;

    }
}

function RouteActionMenuCallsCurriculum(strRowId, strMessage) {
    var objForm = document.BaseForm;
    // Find associated drop-down, see if selected item is lock test.
    var varSelected = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' && element.name.indexOf('ActionsMenu') != -1) {
            if (element.attributes["AssocId"].value == strRowId) {
                varSelected = element.value;
                break;
            }
        }
    }

    if (varSelected == 'ML.BASE.ACT.Copy') {
        return confirm(strMessage);
    }
}
function RouteActionMenuCallsEvaluationDelete(strRowId, strMessage) {
    var objForm = document.BaseForm;
    // Find associated drop-down, see if selected item is Delete.
    var varSelected = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' &&
			element.name.indexOf('ActionsMenu_') != -1 &&
			element.name.indexOf(strRowId) != -1) {
            varSelected = element.value;
        }
    }

    if (varSelected == 'ML.BASE.ACT.Delete') {
        return confirm(strMessage);
    }
}

function RouteActionMenuCallsEvaluationCopy(strRowId, strMessage) {
    var objForm = document.BaseForm;
    // Find associated drop-down, see if selected item is Delete.
    var varSelected = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'select-one' &&
			element.name.indexOf('ActionsMenu_') != -1 &&
			element.name.indexOf(strRowId) != -1) {
            varSelected = element.value;
        }
    }
    if (varSelected == 'ML.BASE.ACT.Copy') {
        return confirm(strMessage);
    }
}

function RouteActionMenuCallsTestQuestionCopy(strRowId, strMessage, strVar) {
    var objForm = document.BaseForm;
    // Find associated drop-down, see if selected item is Delete.
    var varSelected = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'select-one' &&
			element.name.indexOf('ActionsMenu_') != -1 &&
			element.name.indexOf(strRowId) != -1 &&
			element.attributes['ParentId'].value == strVar) {
            varSelected = element.value;
        }
    }

    if (varSelected == 'ML.BASE.ACT.Copy') {
        return confirm(strMessage);
    }
}

function RouteActionMenuCallsProxyLogin(strRowId, strMessage) {
    var objForm = document.BaseForm;
    // Find associated drop-down, see if selected item is Proxy Login.
    var varSelected = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'select-one' &&
			element.name.indexOf('ActionsMenu_') != -1 &&
			element.name.indexOf(strRowId) != -1) {
            varSelected = element.value;
        }
    }
    if (varSelected == 'ML.BASE.ACT.ProxyLogin') {
        return confirm(strMessage);
    }

}

function RouteActionMenuCallsPreviewHomepageFeed(strRowId, strMessage) {
    if (strMessage == 'PreviewFromForm') {
        var objXMLHTTPRequest = CreateXMLHTTPRequest();
        objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/AJAXUtilities.aspx"), false);

        var strParams = "strItemIdVariable=strHomepageFileId&strCall=GetContentItemIdFromState";

        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);

        strRowId = objXMLHTTPRequest.responseText;

        newwindow = window.open(GetCalculatedUrl('PersonalHomepage/Management/PersonalHomepagePreview.aspx') + '?strItemId=' + strRowId, '_PreviewTest', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
        if (newwindow && newwindow.open && !newwindow.closed) {
            newwindow.focus();
        }

        return false;
    }
    else {
        var objForm = document.BaseForm;
        // Find associated drop-down, see if selected item is Proxy Login.
        var varSelected = '';
        for (var i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];

            if (element.attributes["AssocId"] != null) {
                if (element.type == 'select-one' && element.attributes["AssocId"].value == strRowId) {
                    varSelected = element.value.toUpperCase();
                    break;
                }
            }
        }

        if (varSelected == 'ML.BASE.ACT.PREVIEW') {
            newwindow = window.open(GetCalculatedUrl('PersonalHomepage/Management/PersonalHomepagePreview.aspx') + '?strItemId=' + strRowId, '_PreviewTest', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            if (newwindow && newwindow.open && !newwindow.closed) {
                newwindow.focus();
            }

            return false;
        }
    }
}

function RouteActionMenuCallsPreviewCertificate(strRowId, strMessage) {
    var strLocaleId = "";
    var strDomainId = "";

    if (strMessage == 'PreviewFromForm') {
        strLocaleId = GetStateVariable("LocaleId");
        strDomainId = GetStateVariable("DomainId");

        var objXMLHTTPRequest = CreateXMLHTTPRequest();
        objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/AJAXUtilities.aspx"), false);
        var strParams = "strItemIdVariable=strCertificateId&strCall=GetContentItemIdFromState";
        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);
        strRowId = objXMLHTTPRequest.responseText;

        newwindow = window.open(GetCalculatedUrl("Reports/StudentReports/CourseCertificateFrame.aspx") + '?blnCalculateCertificate=true&strItemId=' + strRowId + '&strUserId=&strCourseID=&strLocaleId=' + strLocaleId + '&strDomainId=' + strDomainId, '_PreviewCertificate', GetContentWindowFeatures(strRowId));
        if (newwindow && newwindow.open && !newwindow.closed) {
            newwindow.focus();
        }

        return false;
    }
    else {
        var objForm = document.BaseForm;
        // Find associated drop-down, see if selected item is Proxy Login.
        var varSelected = '';
        for (var i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];

            if (element.attributes["AssocId"] != null) {
                if (element.type == 'select-one' && element.attributes["AssocId"].value == strRowId) {
                    varSelected = element.value.toUpperCase();
                    break;
                }
            }
        }

        if (varSelected == 'ML.BASE.ACT.PREVIEW') {
            strLocaleId = GetStateVariable("LocaleId");
            strDomainId = GetStateVariable("DomainId");

            newwindow = window.open(GetCalculatedUrl("Reports/StudentReports/CourseCertificateFrame.aspx") + '?blnCalculateCertificate=true&strItemId=' + strRowId + '&strUserId=&strCourseID=&strLocaleId=' + strLocaleId + '&strDomainId=' + strDomainId, '_PreviewCertificate', GetContentWindowFeatures(strRowId));

            if (newwindow && newwindow.open && !newwindow.closed) {
                newwindow.focus();
            }
            return false;
        }
    }
}


/*
function ViewSchedule(strScheduleToViewId, strCalendarToView)
{
var bRet = true;
var objForm = document.BaseForm;
	
for (i=0;i<objForm.elements.length;i++) 
{
var element = objForm.elements[i];
		
if ('select-one' == element.type)
{
var attrib = element.attributes["AssocId"];
			
if (null != attrib)
{
if ('ML.BASE.ACT.ViewSchedule' == element.value)
{
switch (strCalendarToView)
{
case "Room":
window.open('/KView/CustomCodeBehind/Content/Locations/RoomViewScheduleInPopup.aspx?strRoomId='+escape(strScheduleToViewId)+'&PopUp='+escape('true'),'_ViewSchedule','toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=640,height=520');					
break;
case "Instructor":
window.open('/KView/CustomCodeBehind/Instructor/InstructorViewScheduleInPopup.aspx?strInstructorId='+escape(strScheduleToViewId)+'&PopUp='+escape('true'),'_ViewSchedule','toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=640,height=520');					
break;
}
bRet = false;					
}
break;				
}
}
}

return bRet;
}*/


/*This function is called when the user clicks on the Email link on the System Error page*/
function EmailErrorInformation() {
    newwindow = window.open(GetCalculatedUrl('Utilities/EmailErrorInformation.aspx'), '_EmailUser', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=640,height=520');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}

function ContentTypePreview(strElementType, strElementID) {
    var objForm = document.BaseForm;
    var iIndex = 0;
    var strElementValue = "";

    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' && element.name.indexOf(strElementID) != -1) {
            strElementValue = element.value;
        }
    }

    if (strElementValue.length > 0) {
        newwindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + strElementType + '&strItemId=' + strElementValue, '_Preview', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=640,height=520');
        if (newwindow && newwindow.open && !newwindow.closed) {
            newwindow.focus();
        }
    }

    return false;
}


function CurriculumGlossary(strElementID) {
    newwindow = window.open(GetCalculatedUrl('Content/Glossary/GlossarySimpleSearch.aspx') + '?strItemId=' + strElementID, '_Glossary', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=640,height=520');

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}


function PreviewRouter(strElementType, strElementID) {
    newwindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + strElementType + '&strItemId=' + strElementID, '_Preview', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=640,height=520');

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}


function SurveySAView(strSurveyId, strSectionId, strQuestionId, strSurveyType, strResponses, strContentFilter, strStartDate, strEndDate) {
    newwindow = window.open(GetCalculatedUrl('Reports/ManagementReports/SurveyShortAnswerResponses.aspx') + '?strSurveyId=' + strSurveyId + '&strSectionId=' + strSectionId + '&strQuestionId=' + strQuestionId + '&strSurveyType=' + strSurveyType + '&strResponses=' + strResponses + '&ContentFilter=' + strContentFilter + '&StartDate=' + strStartDate + '&EndDate=' + strEndDate, '_Preview', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=640,height=520');

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }
}


function PostDeleteClick(strPostId, strMessage) {
    if (ConfirmClick(strMessage)) {
        location.href = GetCalculatedUrl('Blog/BlogNewView.aspx') + '?strPostId=' + strPostId + '&Action=DeletePost';
    }
}


function ShowAllPostsClick() {
    location.href = GetCalculatedUrl('Blog/BlogNewView.aspx') + '?Action=ShowAllPosts';
}


function BlogMainPageClick() {
    location.href = GetCalculatedUrl('Blog/BlogNewView.aspx') + '?Action=RunCurrentSearch';
}


function PostEditClick(strPostId, strBlogId) {
    location.href = GetCalculatedUrl('Blog/Post/PostNewEditItem.aspx') + '?strPostId=' + strPostId + '&strBlogId=' + strBlogId;
}
function PostEditClickFromPost(strPostId, strBlogId) {
    location.href = GetCalculatedUrl('Blog/Post/PostNewEditItem.aspx') + '?strPostId=' + strPostId + '&strBlogId=' + strBlogId + '&strFrom=PostView';
}


function PostTitleClick(strPostId) {
    location.href = GetCalculatedUrl('Blog/Post/PostNewView.aspx') + '?strPostId=' + strPostId;

    return false;
}


function RelatedTermClick(strTermId) {
    location.href = GetCalculatedUrl('Content/Glossary/GlossaryDefinitions.aspx') + '?strItemId=' + strTermId;

    return false;
}

function CommentEditClick(strPostId, strCommentId) {
    location.href = GetCalculatedUrl('Blog/Post/PostNewView.aspx') + '?strPostId=' + strPostId + '&strCommentId=' + strCommentId + '&Action=EditComment';
}


function CommentDeleteClick(strPostId, strCommentId, strMessage) {
    if (ConfirmClick(strMessage)) {
        location.href = GetCalculatedUrl('Blog/Post/PostNewView.aspx') + '?strPostId=' + strPostId + '&strCommentId=' + strCommentId + '&Action=DeleteComment';
    }
}

function ViewDestinationMap(strDestination, strWidth, strLength, strMessage) {
    if (ConfirmClick(strMessage)) {
        window.open(strDestination, 'MapQuest', 'resizable=yes,scrollbars=yes,width=' + strWidth + ',height=' + strLength);
        return true;
    } else {
        return false;
    }
}
function EmailAdministrator(blnByPassCheck) {
    newwindow = window.open(GetCalculatedUrl('Utilities/ContactAdministrator.aspx') + '?blnIsValidFunction=true&blnByPassCheck=' + blnByPassCheck, '_EmailUser', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=800,height=450');

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}


function HandleBeforeSelectedTabChange(oWebTab, oTab, oEvent) {
    if (oTab.Key.toString().toUpperCase().indexOf("PREVIEW") == -1) {
        oEvent.cancelPostBack = true;
    }
}


function HandleAfterSelectedTabChange(oWebTab, oTab, oEvent) {
    //strTabText = oTab.getText().toUpperCase();
    //FocusFirstFormOnTabChange(oTab.index);
    FocusFirstFormOnTabChange();
}

function GoCalendarEvent(strEditEventLocation, strAction, strEventId, bPopUp) {
    newwindow = null;
    if (bPopUp = 'true') {
        //newwindow = window.open(GetCalculatedUrl('Library/Documents/DocumentsInformation.aspx') + '?strItemId=' + escape('13ED8828CFFD4FDD972FE8505F2C17B2'), '_DocumentInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
        newwindow = window.open(strEditEventLocation + '?EventAction=' + escape(strAction) + '&EventId=' + escape(strEventId), '_EventDetails', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=540');
    }
    else {
        self.location.href = (strEditEventLocation + '?EventAction=' + escape(strAction) + '&EventId=' + escape(strEventId));
    }
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}

function GoViewInformation(strItemId, strItemType) {
    //alert(strItemId + " - " + strItemType)
    ShowAlert("Info on Item" + "\n\n" + "Item ID: " + strItemId + "\n\n" + "Item Type: " + strItemType);

    switch (strItemType) {
        case "Certificate":
            newwindow = window.open(GetCalculatedUrl('Certificate/CertificateInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "AccountCodeType":
            newwindow = window.open(GetCalculatedUrl('ECommerce/AccountCode/ACodeTypeInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "HomepageFeed":
            newwindow = window.open(GetCalculatedUrl('PersonalHomepage/HomepageFeedInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "ORDER":
            newwindow = window.open(GetCalculatedUrl('ECommerce/OrderInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "MenuItem":
            newwindow = window.open(GetCalculatedUrl('Domain/Management/MenuItemInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Certification":
            newwindow = window.open(GetCalculatedUrl('Courseware/Certification/CertificationInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "CertificationType": case "Certification Type":
            newwindow = window.open(GetCalculatedUrl('Courseware/CertificationType/CertificationTypeInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "EVALUATION_TYPE":
            newwindow = window.open(GetCalculatedUrl('PerformanceEvaluation/EvaluationTypeInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "EVALUATION_ITEM":
            newwindow = window.open(GetCalculatedUrl('PerformanceEvaluation/EvaluationItemInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "EVALUATION_SCALE":
            newwindow = window.open(GetCalculatedUrl('PerformanceEvaluation/EvaluationScaleInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "EVAL_COMPONENT":
            newwindow = window.open(GetCalculatedUrl('PerformanceEvaluation/EvaluationComponentInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "EvaluationTemplate":
            newwindow = window.open(GetCalculatedUrl('PerformanceEvaluation/EvaluationTemplateInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "PersonalLearningEvent": case "ML.BASE.PersonalLearningEvent":
        case "Personal Learning Event":
            newwindow = window.open(GetCalculatedUrl('Courseware/PersonalLearningEvent/PersonalLEInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;
        case "Model":
        case "CompetencyModel":
            if (strItemId == 'LOCAL_COMPETENCY_MODEL_ID') {
                alert(GetLocalizedMessage('ML.BASE.NoInformation'));
                return;
            }
            newwindow = window.open(GetCalculatedUrl('IDP/Model/ModelInformation.aspx') + '?strItemId=' + escape(strItemId), '_JobTitleInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "KSA":
            newwindow = window.open(GetCalculatedUrl('IDP/KSA/KSAInformation.aspx') + '?strItemId=' + escape(strItemId), '_JobTitleInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Competency":
            newwindow = window.open(GetCalculatedUrl('IDP/Competency/CompetencyInformation.aspx') + '?strItemId=' + escape(strItemId), '_JobTitleInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "ML.BASE.JOBTITLE":
        case "JobTitle":
        case "Job Title":
            newwindow = window.open(GetCalculatedUrl('JobTitle/JobTitleInformation.aspx') + '?strItemId=' + escape(strItemId), '_JobTitleInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "SkillsSurvey":
            newwindow = window.open(GetCalculatedUrl('IDP/Survey/SkillsSurveyInformation.aspx') + '?strItemId=' + escape(strItemId), '_JobTitleInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Domain":
            if (strItemId == 'ML.BASE.AllDomains') {
                alert(GetLocalizedMessage('ML.BASE.NoInformation'));
                return;
            }
            newwindow = window.open(GetCalculatedUrl('Domain/Management/DomainInformation.aspx') + '?strItemId=' + escape(strItemId), '_DocumentInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "ML.BASE.USER":
        case "User":
            if (strItemId == 'ANONYMOUS_ID') {
                alert(GetLocalizedMessage('ML.BASE.NoInformation'));
                return;
            }
            newwindow = window.open(GetCalculatedUrl('User/ProfileView.aspx') + '?strItemId=' + escape(strItemId), '_UserInfo', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "CoursewareProvider":
            newwindow = window.open(GetCalculatedUrl('Courseware/CoursewareProvider/CoursewareProviderInformation.aspx') + '?strItemId=' + escape(strItemId), '_UserInfo', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Field Code":
            newwindow = window.open(GetCalculatedUrl('EmailConsole/FieldCodeInformation.aspx') + '?strItemId=' + escape(strItemId), '_UserInfo', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "CollaborationSpace":
            newwindow = window.open(GetCalculatedUrl('CollaborationSpace/CSInformation.aspx') + '?strItemId=' + escape(strItemId), '_CSInfo', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Curriculum":
            newwindow = window.open(GetCalculatedUrl('Curriculum/CurriculumInformation.aspx') + '?strItemId=' + escape(strItemId), '_CurriculumInfo', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Announcement":
            newwindow = window.open(GetCalculatedUrl('Announcement/AnnouncementInformation.aspx') + '?strItemId=' + escape(strItemId), '_AnnouncementInfo', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "ApprovalPath":
            newwindow = window.open(GetCalculatedUrl('Content/AccessApproval/Management/ApprovalPathInformation.aspx') + '?strItemId=' + escape(strItemId), '_APInfo', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "AccessApprover":
            newwindow = window.open(GetCalculatedUrl('Content/AccessApproval/Management/AccessApproverInformation.aspx') + '?strItemId=' + escape(strItemId), '_AccessApprover', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Blog":
            newwindow = window.open(GetCalculatedUrl('Blog/BlogInformation.aspx') + '?strItemId=' + escape(strItemId), '_BlogInfo', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Survey":
            newwindow = window.open(GetCalculatedUrl('Content/Survey/SurveyInformation.aspx') + '?strItemId=' + escape(strItemId), '_SurveyInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Site": //Handles Site Survey - ML.BASE.ROLE.SURVEY.SITE
            newwindow = window.open(GetCalculatedUrl('Content/Survey/SurveyInformation.aspx') + '?strItemId=' + escape(strItemId), '_SurveyInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "SurveyScale":
            newwindow = window.open(GetCalculatedUrl('Content/Survey/SurveyScaleInformation.aspx') + '?strItemId=' + escape(strItemId), '_SurveyScaleInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Category":
            newwindow = window.open(GetCalculatedUrl('Categories/CategoryView.aspx') + '?strItemId=' + escape(strItemId), '_CategoryView', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Courseware":
        case "GeneralCourse":
        case "GeneralCourseware":
        case "Classroom":
        case "Online":
        case "SCORM 1.2":
        case "SCORM1.2":
        case "SCORM 2004":
        case "SCORM2004":
        case "AICC":
            newwindow = window.open(GetCalculatedUrl('LearningCenter/CourseInfo.aspx') + '?strCourseId=' + escape(strItemId), '_CoursewareView', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Section":

            if (strItemId != 'ML.BASE.AllSections') {
                newwindow = window.open(GetCalculatedUrl('LearningCenter/SectionInfo.aspx') + '?strSectionId=' + escape(strItemId), '_SectionView', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            }
            else {
                alert(GetLocalizedMessage('ML.BASE.NoInformation'));
            }

            break;

        case "SectionEnrollment":
            newwindow = window.open(GetCalculatedUrl('LearningCenter/SectionInfo.aspx') + '?strSectionId=' + escape(strItemId) + '&strTabFocusId=' + escape('ML.BASE.TAB.LearningCenter.Enrollment'), '_SectionView', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Assessment":
            newwindow = window.open(GetCalculatedUrl('LearningCenter/Assessment/AssessmentInfo.aspx') + '?strCourseId=' + escape(strItemId), '_CoursewareView', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Role":
            newwindow = window.open(GetCalculatedUrl('Role/RoleInformation.aspx') + '?strItemId=' + escape(strItemId), '_RoleInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "FAQ":
            newwindow = window.open(GetCalculatedUrl('Library/FAQ/FAQInformation.aspx') + '?strItemId=' + escape(strItemId), '_FAQInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Document":
        case "Documents":
            newwindow = window.open(GetCalculatedUrl('Library/Documents/DocumentsInformation.aspx') + '?strItemId=' + escape(strItemId), '_DocumentInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Glossary":
            newwindow = window.open(GetCalculatedUrl('Content/Glossary/GlossaryInformation.aspx') + '?strItemId=' + escape(strItemId), '_DocumentInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Resource":
            newwindow = window.open(GetCalculatedUrl('LearningCenter/ResourceInformation.aspx') + '?strItemId=' + escape(strItemId), '_FAQInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Complex":
            newwindow = window.open(GetCalculatedUrl('Content/Locations/ComplexInformation.aspx') + '?strItemId=' + escape(strItemId), '_ComplexInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Building":
            newwindow = window.open(GetCalculatedUrl('Content/Locations/BuildingInformation.aspx') + '?strItemId=' + escape(strItemId), '_BuildingInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Room":
            newwindow = window.open(GetCalculatedUrl('Content/Locations/RoomInformation.aspx') + '?strItemId=' + escape(strItemId), '_RoomInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Distribution List":
        case "DistributionList":
            newwindow = window.open(GetCalculatedUrl('PersonalHomepage/PersonalHomepageDistributionListInformation.aspx') + '?strItemId=' + escape(strItemId), '_DistributionListInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Instructor":
            newwindow = window.open(GetCalculatedUrl('Instructor/InstructorInformation.aspx') + '?strItemId=' + escape(strItemId), '_ProfileView', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "ML.BASE.ORGANIZATION":
        case "Organization":
            newwindow = window.open(GetCalculatedUrl('Organization/OrganizationView.aspx') + '?strItemId=' + escape(strItemId), '_OrganizationView', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "SystemEmail":
            newwindow = window.open(GetCalculatedUrl('EmailConsole/ViewEmailSummary.aspx') + '?strItemId=' + escape(strItemId), '_SystemEmailView', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Test":
            newwindow = window.open(GetCalculatedUrl('Test/Management/TestInformation.aspx') + '?strItemId=' + escape(strItemId), '_SystemTestView', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "TestQuestionGroup":
            newwindow = window.open(GetCalculatedUrl('Test/Management/TestQuestionGroupInformation.aspx') + '?strItemId=' + escape(strItemId), '_SystemTestQuestionGroupView', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "TestQuestion":
            newwindow = window.open(GetCalculatedUrl('Test/Management/TestQuestionInformation.aspx') + '?strItemId=' + escape(strItemId), '_SystemTestQuestionView', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Reports":
        case "Report":
            newwindow = window.open(GetCalculatedUrl('Reports/ReportsInformation.aspx') + '?strItemId=' + escape(strItemId), '_ReportsInformationPage', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Product":
            newwindow = window.open(GetCalculatedUrl('Library/Products/ProductsInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "RTCONSOLE":
            newwindow = window.open(GetCalculatedUrl('RequiredTraining/TrainingProfileInformation.aspx') + '?strItemId=' + escape(strItemId), '_RTInformationPage', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "PRODUCT_TYPE":
            newwindow = window.open(GetCalculatedUrl('Library/ProductType/ProductTypeInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "AccountCode":
            newwindow = window.open(GetCalculatedUrl('ECommerce/AccountCode/ACodeInformation.aspx') + '?strItemId=' + escape(strItemId), '_ACodeInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;
        case "DiscountCode":
            newwindow = window.open(GetCalculatedUrl('ECommerce/DiscountCode/DCodeInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;
        case "SearchProfile":
            newwindow = window.open(GetCalculatedUrl('SearchProfile/SearchProfileInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;
        default:
            alert(GetLocalizedMessage('ML.BASE.NoInformation'));
            break;
    }

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}
function RouteActionMenuCallsIDP(strItemId) {
    newwindow = window.open(GetCalculatedUrl('IDP/ViewIDP.aspx') + '?strItemId=' + escape(strItemId), '_ViewIDP', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}
function RouteActionMenuCallsCurrentIDP(strItemId) {
    newwindow = window.open(GetCalculatedUrl('IDP/ViewIDP.aspx') + '?strUserId=' + escape(strItemId), '_ViewIDP', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}

function RouteActionMenuCallsOrderConsole(strItemId) {
    var objForm = document.BaseForm;
    var bRet = "true";
    // Find associated drop-down, see if selected item is lock test.
    var varSelected = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' &&
			element.name.indexOf('ActionsMenu_') != -1 &&
			element.name.indexOf(strItemId) != -1) {
            varSelected = element.value;
        }
    }

    if (varSelected.toUpperCase() == 'ML.BASE.ACT.VIEWORDERSTATUS') {
        newwindow = window.open(GetCalculatedUrl('ECommerce/OrderProductDetail.aspx') + '?OrderId=' + escape(strItemId), '_ProductOrderDetail', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
        if (newwindow && newwindow.open && !newwindow.closed) {
            newwindow.focus();
            return false;
        }


    }

}

function RouteActionMenuCallsPurchaseDetails(strItemId) {
    var objForm = document.BaseForm;
    var bRet = "true";
    // Find associated drop-down, see if selected item is lock test.
    var varSelected = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' &&
			element.name.indexOf('ActionsMenu_') != -1 &&
			element.name.indexOf(strItemId) != -1) {
            varSelected = element.value;
        }
    }

    if (varSelected.toUpperCase() == 'ML.BASE.ACT.PURCHASEDETAILS') {
        newwindow = window.open(GetCalculatedUrl('PersonalHomePage/PersonalHomepageMyPurchaseDetails.aspx') + '?strItemId=' + escape(strItemId), '_ViewIDP', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
        if (newwindow && newwindow.open && !newwindow.closed) {
            newwindow.focus();
            return false;
        }


    }
}

function GoViewInformationRating(strItemId, strItemType) {
    ShowAlert("Info on Item" + "\n\n" + "Item ID: " + strItemId + "\n\n" + "Item Type: " + strItemType);

    switch (strItemType) {
        case "Building":
            newwindow = window.open(GetCalculatedUrl('Content/Locations/BuildingInformation.aspx') + '?strItemId=' + escape(strItemId) + '&strTabFocusId=' + escape('ML.BASE.TAB.ContentReview'), '_BuildingInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Courseware":
        case "GeneralCourseware":
        case "Classroom":
            newwindow = window.open(GetCalculatedUrl('LearningCenter/CourseInfo.aspx') + '?strCourseId=' + escape(strItemId) + '&strTabFocusId=' + escape('ML.BASE.TAB.ContentReview'), '_CoursewareView', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "CollaborationSpace":
            newwindow = window.open(GetCalculatedUrl('CollaborationSpace/CSInformation.aspx') + '?strItemId=' + escape(strItemId) + '&strTabFocusId=' + escape('ML.BASE.TAB.ContentReview'), '_CSInfo', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Curriculum":
            newwindow = window.open(GetCalculatedUrl('Curriculum/CurriculumInformation.aspx') + '?strItemId=' + escape(strItemId) + '&strTabFocusId=' + escape('ML.BASE.TAB.ContentReview'), '_CurriculumInfo', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Announcement":
            newwindow = window.open(GetCalculatedUrl('Announcement/AnnouncementInformation.aspx') + '?strItemId=' + escape(strItemId) + '&strTabFocusId=' + escape('ML.BASE.TAB.ContentReview'), '_AnnouncementInfo', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Blog":
            newwindow = window.open(GetCalculatedUrl('Blog/BlogInformation.aspx') + '?strItemId=' + escape(strItemId) + '&strTabFocusId=' + escape('ML.BASE.TAB.ContentReview'), '_BlogInfo', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Survey":
            newwindow = window.open(GetCalculatedUrl('Content/Survey/SurveyInformation.aspx') + '?strItemId=' + escape(strItemId) + '&strTabFocusId=' + escape('ML.BASE.TAB.ContentReview'), '_SurveyInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "FAQ":
            newwindow = window.open(GetCalculatedUrl('Library/FAQ/FAQInformation.aspx') + '?strItemId=' + escape(strItemId) + '&strTabFocusId=' + escape('ML.BASE.TAB.ContentReview'), '_FAQInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Document":
            newwindow = window.open(GetCalculatedUrl('Library/Documents/DocumentsInformation.aspx') + '?strItemId=' + escape(strItemId) + '&strTabFocusId=' + escape('ML.BASE.TAB.ContentReview'), '_DocumentInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;

        case "Product":
            newwindow = window.open(GetCalculatedUrl('Library/Products/ProductsInformation.aspx') + '?strItemId=' + escape(strItemId) + '&strTabFocusId=' + escape('ML.BASE.TAB.ContentReview'), '_DocumentInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
            break;


        default:
            break;

    }

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}


function ValidateAndConfirmCheckBoxSelect(TheForm, strPrefix, strAlert, strConfirm) {
    if (!ValidateCheckBoxSelect(TheForm, strPrefix, strAlert)) {
        return false;
    }

    if (!ConfirmCheckBoxSelect(strConfirm)) {
        return false;
    }

    return true;
}

function OneOrMoreItemsLeftValidateAndConfirmCheckBoxSelect(TheForm, strPrefix, strOneOrMoreLeft, strCheckBoxSelect, strConfirmAction) {
    if (strOneOrMoreLeft != '') {
        if (!ValidateOneOrMoreItemsLeft(TheForm, strPrefix, strOneOrMoreLeft)) {
            return false;
        }
    }

    if (strCheckBoxSelect != '') {
        if (!ValidateCheckBoxSelect(TheForm, strPrefix, strCheckBoxSelect)) {
            return false;
        }
    }

    if (strConfirmAction != '') {
        if (!ConfirmCheckBoxSelect(strConfirmAction)) {
            return false;
        }
    }

    return true;
}

//old method - deprecated. leave it in there so existing code doesn't break.
function ValidateAccessApprovalAssignment(strRemoveApproval, strChangeApproval) {
    return ValidateAccessApprovalPathAssignment(strRemoveApproval, strChangeApproval, "You must select an Access Approval Path when Access Approval is required.");
}

function ValidateAccessApprovalPathAssignment(strRemoveApproval, strChangeApproval, strApprovalRequired) {
    var objForm = document.BaseForm;

    var blnYesButtonChecked = false;
    var element, strElementName, j, strName;

    if (objForm.blnHasAccessApproval.value.toString().toUpperCase() == "TRUE") {
        for (i = 0; i < objForm.elements.length; i++) {
            element = objForm.elements[i];
            if ('radio' == element.type) {
                strElementName = element.name;
                j = strElementName.lastIndexOf('$');
                strName = strElementName.substring(j + 1);

                if (strName == 'ACCESS_APPROVAL_REQUIRED' &&
					element.value == 'Y' &&
					element.checked) {
                    //If Yes button is checked then flip the flag.
                    blnYesButtonChecked = true;

                    var blnOneChecked = false;
                    var strCurrentPathId = objForm.CURRENT_APP_PATH_ID.value;
                    var strSelectedPathId = '';
                    var blnPathChanged = false;

                    for (var i = 0; i < document.BaseForm.elements.length; i++) {
                        if (objForm.elements[i].type.toUpperCase() == 'RADIO') {
                            if (objForm.elements[i].getAttribute("onClick") != null) {
                                var strAttribute = objForm.elements[i].getAttribute("onClick").toString();
                                if (strAttribute.indexOf("HandleDataGridRadioButtons") != -1) {
                                    if (objForm.elements[i].checked) {
                                        blnOneChecked = true;
                                        strSelectedPathId = objForm.elements[i].value;
                                        //check if the user is selecting a different path
                                        if (strCurrentPathId != strSelectedPathId) {
                                            blnPathChanged = true;
                                        }
                                    }
                                }
                            }
                        }
                    }

                    if (blnOneChecked) {
                        if (blnPathChanged) {
                            if (!(confirm(strChangeApproval))) {
                                return false;
                            }
                        }
                    }
                    else {
                        alert(strApprovalRequired);
                        return false;
                    }
                }
                else {
                    blnDisplayAlert = false;
                    for (var i = 0; i < document.BaseForm.elements.length; i++) {
                        if (objForm.elements[i].type.toUpperCase() == 'RADIO') {
                            if (objForm.elements[i].getAttribute("onClick") != null) {
                                var strAttribute = objForm.elements[i].getAttribute("onClick").toString();
                                if (strAttribute.indexOf("HandleDataGridRadioButtons") != -1) {
                                    objForm.elements[i].checked = false;
                                    blnDisplayAlert = true;
                                }
                            }
                        }
                    }
                    if (blnDisplayAlert) {
                        if (!(confirm(strRemoveApproval))) {
                            return false;
                        }
                    }
                    return true;
                }
            }
            continue;
        }
    }
    else {
        var blnOneChecked = false;
        for (var i = 0; i < document.BaseForm.elements.length; i++) {
            if (objForm.elements[i].type.toUpperCase() == 'RADIO') {
                element = objForm.elements[i];
                strElementName = element.name;
                j = strElementName.lastIndexOf('$');
                strName = strElementName.substring(j + 1);

                if (strName == 'ACCESS_APPROVAL_REQUIRED' && element.value == 'Y'
				&& element.checked) {
                    //If Yes button is checked then flip the flag.
                    blnYesButtonChecked = true;
                }

                if (objForm.elements[i].getAttribute("onClick") != null) {
                    var strAttribute = objForm.elements[i].getAttribute("onClick").toString();
                    if (strAttribute.indexOf("HandleDataGridRadioButtons") != -1) {
                        if (objForm.elements[i].checked) {
                            blnOneChecked = true
                        }
                    }
                }
            }
        }
        if (!(blnOneChecked) && blnYesButtonChecked) {
            alert(strApprovalRequired);
            return false;
        }
    }
}

function ValidateAndConfirmGlossaryRelatedTermAdd(objForm, strInvalidSelectionMessage) {
    var blnOneChecked = false;
    for (var i = 0; i < document.BaseForm.elements.length; i++) {
        if (objForm.elements[i].type.toUpperCase() == 'RADIO') {
            if (objForm.elements[i].checked) {
                blnOneChecked = true;
            }
        }
    }
    if (!(blnOneChecked)) {
        alert(strInvalidSelectionMessage);
        return false;
    }
}
function ValidateAndConfirmCurriculumActivityAdd(objForm, strMessage, strInvalidSectionMessage) {
    var blnOneChecked = false;
    for (var i = 0; i < document.BaseForm.elements.length; i++) {
        if (objForm.elements[i].type.toUpperCase() == 'RADIO') {
            var strValue = objForm.elements[i].value;
            if (strValue.indexOf("ContentReq") == -1 && strValue.indexOf('ContentOpt') == -1) {
                continue;
            }
            if (objForm.elements[i].checked) {
                strValue = strValue.split('_')[strValue.split('_').length - 1];
                blnOneChecked = true;
                var blnAllSelected = false;
                var blnOthersSelected = false;
                for (var j = 0; j < document.BaseForm.elements.length; j++) {
                    if (objForm.elements[j].type == 'checkbox') {
                        if (objForm.elements[j].name.indexOf(strValue) != -1 && objForm.elements[j].checked) {
                            var strSectionValue = objForm.elements[j].name;
                            strSectionValue = strSectionValue.split('||')[strSectionValue.split('||').length - 1];
                            //							alert(strSectionValue);
                            if (strSectionValue == 'ML.BASE.AllSections') {
                                blnAllSelected = true;
                            }
                            else {
                                blnOthersSelected = true;
                            }
                        }
                    }
                }
                if (blnAllSelected && blnOthersSelected) {
                    alert(strInvalidSectionMessage);
                    return false;
                }
            }
        }
    }
    if (!(blnOneChecked)) {
        alert(strMessage);
        return false;
    }
}


function ConfirmSectionAndWaitlistUserSelected(TheForm, strUserPrefix, strSectionPrefix, strControlSelect, strConfirmAction) {
    if (!(ValidateWaitlistUserAndSectionSelect(TheForm, strUserPrefix, strSectionPrefix, strControlSelect))) {
        return false;
    }
    if (!(ConfirmCheckBoxSelect(strConfirmAction))) {
        return false;
    }
}


function ValidateWaitlistUserAndSectionSelect(TheForm, strUserPrefix, strSectionPrefix, strMessage) {
    var intUser = 0;
    var intSection = 0;

    intCheckbox = -1;
    for (var i = 0; i < TheForm.elements.length; i++) {
        var element = TheForm.elements[i];
        var strElementName = TheForm.elements[i].name;
        if (element.type == 'checkbox' && strElementName.indexOf(strUserPrefix) > 0) {
            if (element.checked) {
                intUser = 1;
                break;
            }
        }
    }
    for (var i = 0; i < TheForm.elements.length; i++) {
        var element = TheForm.elements[i];
        var strId = TheForm.elements[i].id;
        if (element.type == 'checkbox' && strId.indexOf(strSectionPrefix) > 0) {
            if (element.checked) {
                intSection = 1;
                break;
            }
        }
    }

    if (intUser == 0 || intSection == 0) {
        alert(strMessage);
        return false;
    }

    return true;
}
/*
Handles: Save button on SelectPrimaryDomainPage
1)checks to see atleast one domain is selected
2)Confirms if user wants that domain to be his primary domain
*/
function ConfirmPrimaryDomainSelect(TheForm, strPrefix, strMessage1, strConfirmAction) {
    var bDomainSelected = false;
    for (var i = 0; i < TheForm.elements.length; i++) {
        var element = TheForm.elements[i];
        if (element.type == 'radio' && (element.id.indexOf(strPrefix) != -1)) {
            if (element.checked == true) {
                bDomainSelected = true;
                break;
            }
        }
    }
    if (bDomainSelected == false) {
        alert(strMessage1);
        return false;
    }


    if (!(ConfirmCheckBoxSelect(strConfirmAction))) {
        return false;
    }
}
function ConfirmSectionAndUserSelected(TheForm, strUserPrefix, strSectionPrefix, strControlSelect, strConfirmAction) {
    if (!(ValidateUserAndSectionSelect(TheForm, strUserPrefix, strSectionPrefix, strControlSelect))) {
        return false;
    }
    if (!(ConfirmCheckBoxSelect(strConfirmAction))) {
        return false;
    }
}

function ValidateUserAndSectionSelect(TheForm, strUserPrefix, strSectionPrefix, strMessage) {
    var intUser = 0;
    var intSection = 0;

    intCheckbox = -1;
    for (var i = 0; i < TheForm.elements.length; i++) {
        var element = TheForm.elements[i];
        var strElementName = TheForm.elements[i].name;
        if (element.type == 'checkbox' && strElementName.indexOf(strUserPrefix) > 0) {
            if (element.checked) {
                intUser = 1;
                break;
            }
        }
    }
    for (var i = 0; i < TheForm.elements.length; i++) {
        var element = TheForm.elements[i];
        var strId = TheForm.elements[i].id;
        if (element.type == 'radio' && strId.indexOf(strSectionPrefix) > 0) {
            if (element.checked) {
                intSection = 1;
                break;
            }
        }
    }


    if (intUser == 0 || intSection == 0) {
        alert(strMessage);
        return false;
    }

    return true;
}

function ConfirmAppointmentSelected(TheForm, strCheckBoxPrefix, strSelectPrefix, strMessage) {
    var intCGIUser = 0;
    var intAppointmentNotSelected = 0;
    var strId = '';

    intCheckboxSelected = 0;
    for (var i = 0; i < TheForm.elements.length; i++) {
        var chkBox = TheForm.elements[i];
        var strchkBoxName = TheForm.elements[i].name;
        if (chkBox.type == 'checkbox' && strchkBoxName.indexOf(strCheckBoxPrefix) > 0) {
            strId = strchkBoxName.substr(strchkBoxName.lastIndexOf("_") + 1);
            //if a user is selected then check to see if the user is CGI and valid appointment selected.
            if (chkBox.checked) {
                intCheckboxSelected++;
                for (var j = 0; j < TheForm.elements.length; j++) {
                    var slBox = TheForm.elements[j];
                    var strslBoxName = TheForm.elements[j].name;
                    if (slBox.type == 'select-one' && strslBoxName.indexOf(strSelectPrefix) > 0 && strslBoxName.indexOf(strId) > 0) {
                        intCGIUser++;
                        if (slBox.options[slBox.selectedIndex].value == "") {
                            intAppointmentNotSelected = 1;
                            break;
                        }
                    }
                }
            }
        }
    }



    //If no user selected or if user selected and there is atleast one CGI user with no appointment selected then display the alert message.
    if (intCheckboxSelected == 0 || (intCGIUser > 0 && intAppointmentNotSelected == 1)) {
        alert(strMessage);
        return false;
    }

    return true;
}

function ValidateAndConfirmCheckBoxSelect(TheForm, strPrefix, strCheckBoxSelect, strConfirmAction) {
    if (strCheckBoxSelect != '') {
        if (!(ValidateCheckBoxSelect(TheForm, strPrefix, strCheckBoxSelect))) {
            return false;
        }
    }

    if (strConfirmAction != '') {
        if (!(ConfirmCheckBoxSelect(strConfirmAction))) {
            return false;
        }
    }
    return true;
}

function ValidateAndConfirmRadioButtonSelect(TheForm, strPrefix, strRadioButtonSelect, strConfirmAction) {

    if (strRadioButtonSelect != '') {
        if (!(ValidateRadioButtonSelect(TheForm, strPrefix, strRadioButtonSelect))) {
            return false;
        }
    }

    if (strConfirmAction != '') {
        if (!(ConfirmRadioButtonSelect(TheForm, strPrefix, strConfirmAction))) {
            return false;
        }
    }
    return true;
}

function ValidateOneOrMoreItemsLeft(TheForm, strPrefix, strOneOrMoreLeftMessage) {
    var intCheckboxTotal = 0;
    var intCheckboxSelected = 0;
    var blnReturnValue = true;

    for (var i = 0; i < TheForm.elements.length; i++) {
        var strElementName;
        strElementName = TheForm.elements[i].name;
        if (TheForm.elements[i].type == 'checkbox' && strElementName.indexOf(strPrefix) > 0) {
            intCheckboxTotal++;
            if (TheForm.elements[i].checked) {
                intCheckboxSelected++;
            }
        }
    }

    if (intCheckboxTotal == intCheckboxSelected) {
        //		strMessage = "At least one item must remain in the list.";
        alert(strOneOrMoreLeftMessage);
        return false;
    }

    return blnReturnValue;
}

function ValidateCurriculumSectionAdd(objForm, strMessage) {
    var blnAllSelected = false;
    var blnOthersSelected = false;
    for (var j = 0; j < objForm.elements.length; j++) {
        if (objForm.elements[j].type == 'checkbox') {
            if (objForm.elements[j].checked) {
                var strSectionValue = objForm.elements[j].name;
                if (strSectionValue.indexOf('ML.BASE.AllSections') != -1) {
                    blnAllSelected = true;
                }
                else {
                    blnOthersSelected = true;
                }
            }
        }
    }
    if (blnAllSelected && blnOthersSelected) {
        alert(strMessage);
        return false;
    }
}

function SetFileUpload(strValue) {
    strInternalFile = strValue;
    return;
}

function ValidateStartFile(strMessage) {
    var objForm = document.BaseForm;
    var blnStartFileSelected = false;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'radio' && element.name == 'SelectLaunchFile') {
            if (element.checked == true)
                blnStartFileSelected = true;
        }
    }

    if (blnStartFileSelected == false) {
        alert(strMessage);
        return false;
    }
    else {
        return true;
    }

}

function ValidateFileCreation(strEmptyFieldAlert) {
    var blnShowEmptyFieldAlert = false;
    var objForm = document.BaseForm;
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var strElementName = element.name;
        if (strElementName.indexOf('COURSE_PATH') != -1) {
            if (element.value == "" || element.value.length == 0) {
                for (i = 0; i < objForm.elements.length; i++) {
                    var element2 = objForm.elements[i];
                    var strElement2Name = element2.name;
                    if (strElement2Name.indexOf('COURSE_URL') != -1) {
                        if (element2.value == "" || element2.value.length == 0) {
                            blnShowEmptyFieldAlert = true;
                        }
                    }
                }
            }
        }
    }

    if (blnShowEmptyFieldAlert == true) {
        alert(strEmptyFieldAlert);
        return false;
    }
    else {
        return true;
    }
}

function ValidateFileUpload(strMessageUrl, strMessageFile, strEmptyFieldAlert) {
    var objForm = document.BaseForm;
    var boolInternalChecked = false;
    var boolExternalChecked = false;
    var blnShowEmptyFieldAlert = false;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if ('radio' == element.type
			&& element.value == 'INTERNALCOURSE_PATH'
			&& element.checked == true) {
            boolInternalChecked = true;
            break;
        }
        if ('radio' == element.type
			&& element.value == 'EXTERNALFILE_URL'
			&& element.checked == true) {
            boolExternalChecked = true;
            break;
        }
    }
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if ('file' == element.type) {
            var strElementName = element.name;
            var j = strElementName.lastIndexOf('$');
            var strName = strElementName.substring(j + 1);
            if ('COURSE_PATH' == strName) {
                if (true == boolInternalChecked && "" == element.value) {
                    blnShowEmptyFieldAlert = true;
                    break;
                }
            }
        }
        if ('text' == element.type) {
            var strElementName = element.name;
            var j = strElementName.lastIndexOf('$');
            var strName = strElementName.substring(j + 1);
            if ('COURSE_URL' == strName) {
                if (true == boolExternalChecked && "" == element.value) {
                    blnShowEmptyFieldAlert = true;
                    break;
                }
            }
        }
    }

    if (blnShowEmptyFieldAlert == false) {

        if (strInternalFile == "T") {
            if (blnFileRadioButtonEnabled == true) {
                if (!confirm(strMessageFile)) {
                    return false;
                }
                else {
                    return true;
                }
            }
            else {
                if (!confirm(strMessageUrl)) {
                    return false;
                }
                else {
                    return true;
                }
            }
        }
        else {
            return true;
        }

    }
    else {
        alert(strEmptyFieldAlert);
        return false;
    }

}

function ValidateCheckBoxSelect(TheForm, strPrefix, strMessage) {
    var intCheckbox;

    intCheckbox = -1;
    intCount = 0;
    
    for (var i = 0; i < TheForm.elements.length; i++) {
        var strElementName;
        strElementName = TheForm.elements[i].name;
        if (TheForm.elements[i].type == 'checkbox' && strElementName.indexOf(strPrefix) >= 0) {
            intCount++;
            if (TheForm.elements[i].checked) {
                intCheckbox = i;
            }
        }
    }
    
    // Issue 8405 - If there is no checkbox in this name since it was hidden based on configuration, permission etc. exit out of the function w/o firing the JS message.
    if (intCount == 0)
    {
        return true;
    }
    
    if (intCheckbox == -1) {
        alert(strMessage);
        return false;
    }

    return true;
}

function ValidateEmptyTextBox(TheForm, strPrefix, strMessage) {
    var intEmptyTextBox;

    intEmptyTextBox = -1;
    for (var i = 0; i < TheForm.elements.length; i++) {
        var strElementName;
        strElementName = TheForm.elements[i].name;
        if (TheForm.elements[i].type == 'text' && strElementName.indexOf(strPrefix) >= 0) {
            if (TheForm.elements[i].value != '') {
                intEmptyTextBox = i;
            }
        }
    }

    if (intEmptyTextBox == -1) {
        alert(strMessage);
        return false;
    }

    return true;
}

function ValidateRadioButtonSelect(TheForm, strPrefix, strMessage) {
    var intRadioButton;

    intRadioButton = -1;
    for (var i = 0; i < TheForm.elements.length; i++) {
        var strElementId;
        strElementId = TheForm.elements[i].id;
        if (strElementId == '') {
            strElementId = TheForm.elements[i].name;
        }

        if (TheForm.elements[i].type == 'radio' && strElementId.indexOf(strPrefix) != -1) {
            if (TheForm.elements[i].checked) {
                intRadioButton = i;
            }
        }
    }

    if (intRadioButton == -1) {
        alert(strMessage);
        return false;
    }

    return true;
}



function ValidateAllSingleDropDownSelect(TheForm, strPrefix, strMessage) {

    var blnAllSelected;

    blnAllSelected = true;

    for (var i = 0; i < TheForm.elements.length; i++) {

        var strElementId;

        var objElement;

        objElement = TheForm.elements[i];

        strElementId = objElement.id;


        if (objElement.type == 'select-one' && strElementId.indexOf(strPrefix) > 0) {

            if (objElement.selectedIndex == -1) {
                blnAllSelected = false;
            }
            else if (objElement.options[objElement.selectedIndex].value == "") {
                blnAllSelected = false;
            }


        }
    }

    if (!blnAllSelected) {
        alert(strMessage);
    }


    return blnAllSelected;
}



function GoRatingInformation(strItemId) {

    ShowAlert(strItemId);
    newwindow = window.open(GetCalculatedUrl('Library/FAQ/FAQInformation.aspx') + '?strItemId=' + escape(strItemId), '_FAQInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

}

function GoLaunchContent(strItemId, strContentType) {
    switch (strContentType) {
        case "CollaborationSpace":
            self.location.href = (GetCalculatedUrl('CollaborationSpace/CSSpaceSimpleSearch.aspx') + '?strItemId=' + escape(strItemId));
            break;

        default:
            break;

    }
    return true;
    alert("TODO - Create launching content page.  Parameters: Content Id (" + strItemId + ") -  Content Type (" + strContentType + ")");
    return false;
}

function ConfirmPreview(strItemId, strMessage) {
    var objForm = document.BaseForm;
    // Find associated drop-down, see if selected item is lock test.
    var varSelected = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' &&
			element.name.indexOf('ActionsMenu_') != -1 &&
			element.name.indexOf(strItemId) != -1) {
            varSelected = element.value;
        }
    }

    if (varSelected == 'ML.BASE.ACT.Preview') {

        if (!(confirm(strMessage))) {
            return false;
        }
    }
    return true;
}

function ConfirmCheckBoxSelect(strMessage) {
    if (!(confirm(strMessage))) {
        return false;
    }
    return true;
}

function ConfirmRadioButtonSelect(TheForm, strPrefix, strMessage) {
    if (!(confirm(strMessage))) {
        return false;
    }
    return true;
}

function ConfirmAndRedirect(TheForm, strRedirectLink, strMessage) {
    if (!(confirm(strMessage))) {
        return false;
    }
    self.location.href = strRedirectLink;
    return true;
}

function ConfirmClick(strMessage) {
    if (!(confirm(strMessage))) {
        return false;
    }
    return true;
}
///for a section this function checks to see if the new capacity is less that the enrolled user count
//if it is then puts an alert
function CheckSectionMaxCapacity(strMessage) {
    var objForm = document.BaseForm;
    var iSectionMaxCapacity = 0;
    var iEnrolledUser = 0;
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'text' && element.name.indexOf('CRSSECT_MAX_CAPACITY') != -1) {
            iSectionMaxCapacity = element.value;
        }
        if (element.type == 'text' && element.name.indexOf('ENROLL_COUNT') != -1) {
            iEnrolledUser = element.value;
        }
    }
    if (iEnrolledUser > iSectionMaxCapacity) {
        if (!(confirm(strMessage))) {
            return false;
        }
    }
    return true;


}

function EditScoreCheck(strMessage, strCGIMessage, strScoreMessage, strCGIScoreMessage) {
    // Determine if any 'Completed' selected
    var objForm = document.BaseForm;
    var iIndex = 0;
    var blnCompletedSelected = false;
    var blnStatusChange = false;
    var blnScoreInvalid = false;
    var blnScoreChange = false;

    //Check to see if any of the score field is invalid
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'text' && element.name.indexOf('PRG_FINAL_SCORE') != -1) {
            if (element.value.match(/^\d*(\.\d{1,2})?$/) != null) {
                if (strCGIIntegration == 'ON') {
                    //for CGI maxlength is 5
                    if (element.value.length > 5) {
                        blnScoreInvalid = true;
                        break;
                    }
                }
                else {
                    //base maxlength is 9
                    if (element.value.length > 9) {
                        blnScoreInvalid = true;
                        break;
                    }
                }
            }
            else {
                blnScoreInvalid = true;
                break;
            }
        }
    }

    //if one of the score values is invalid then can't submit the form.
    if (blnScoreInvalid) {
        if (strCGIIntegration == 'ON') {
            alert(strCGIScoreMessage);
        }
        else {
            alert(strScoreMessage);
        }
        return false;
    }

    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' && element.name.indexOf('PRG_ALTERNATE_STATUS') != -1) {
            if (strCGIIntegration == 'ON') {
                //Completion statuses for CGI are A, B, C, D and Pass. 
                if ((element.CurrentValue != element.value) && (element.value == 'ML.BASE.DV.CoursewareStatus.A' || element.value == 'ML.BASE.DV.CoursewareStatus.B' || element.value == 'ML.BASE.DV.CoursewareStatus.C' || element.value == 'ML.BASE.DV.CoursewareStatus.D' || element.value == 'ML.BASE.DV.CoursewareStatus.Pass')) {
                    blnCompletedSelected = true;
                    break;
                }
            }
            else {
                //Completion statuses for BASE is Completed. 
                if ((element.CurrentValue != element.value) && element.value == 'ML.BASE.DV.CoursewareStatus.Completed') {
                    blnCompletedSelected = true;
                    break;
                }
            }
        }
    }

    // BASE warning message shows only when completion status is set for the first time or an incomplete status is changed to a complete status.
    if (blnCompletedSelected) {
        if (!(confirm(strMessage))) {
            return false;
        }
    }

    // CGI warning message shows only when there is a status change in one of the drop downs. 
    if (strCGIIntegration == 'ON' && strCGIEventCode != 'ML.BASE.CGI.NOCOST') {
        //Set a flag when there is a change in status.
        for (var i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];

            if (element.type == 'select-one' && element.name.indexOf('PRG_ALTERNATE_STATUS') != -1) {
                if (element.CurrentValue != '' && element.CurrentValue != element.value) {
                    blnStatusChange = true;
                    break;
                }
            }
            if (element.type == 'text' && element.name.indexOf('PRG_FINAL_SCORE') != -1) {
                if (element.CurrentValue != '' && element.CurrentValue != element.value) {
                    blnScoreChange = true;
                    break;
                }
            }
        }

        if (blnStatusChange || blnScoreChange) {
            if (!(confirm(strCGIMessage))) {
                return false;
            }
        }
    }

    return true;
}

function AlertReturnFalse(strMessage) {
    alert(strMessage);
    return false;
}

function DatePicker(strControlId) {

    var elementlist = document.BaseForm.elements;
    for (i = 0; i < elementlist.length; i++) {
        if (elementlist[i].name.indexOf(strControlId + "||MONTH") != -1) {
            if (elementlist[i].disabled) {
                return;
            }
        }
    }



    var strDate = 'START_DATE';
    /*The checkbox(NO_START_DATE or NO_END_DATE should be unchecked when the CalenderICon isclicked in EditActivity page*/
    switch (strControlId) {
        case 'OBJ_ACTIVE_START_DATE':
        case 'OBJ_ACTIVE_END_DATE':
            if (strControlId.indexOf('END_DATE') != -1) {
                strDate = 'END_DATE'
            }
            var objForm = document.BaseForm;
            if (objForm.elements.length > 100) {
                break;
            }
            else {
                for (i = 0; i < objForm.elements.length; i++) {
                    var element = objForm.elements[i];
                    if (element.type == 'checkbox' && element.name.indexOf(strDate) != -1) {
                        element.checked = false;
                        break;
                    }
                }
            }
            break;
        default:
            break;
    }
    newwindow = window.open(GetCalculatedUrl('Utilities/SelectDate.aspx') + '?strControlId=' + escape(strControlId), '_SelectDate', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=255,height=160');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }
}
function SetSelectDomainAdmin(strUserName) {
    if (opener.document.BaseForm == null) {
        self.close();
    }
    var ilength = opener.document.BaseForm.elements.length;
    var objForm = opener.document.BaseForm;
    for (var i = 0; i < ilength; i++) {
        var element = objForm.elements[i];

        if (element.name.indexOf('DM_ADMIN_USER_NAME') != -1) {
            element.value = strUserName;
            break;
        }


    }
    self.close();
}
/*
This function launches the DomainSelectAdmin page
*/
function DomainSelectAdmin() {
    newwindow = window.open(GetCalculatedUrl('Domain/Management/DomainSelectAdmin.aspx'), '_SelectAdmin', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=900,height=620');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }
}


function InputItemAltered() {
    document.BaseForm.blnHasMadeChange.value = true;
    blnHasMadeChange = true;
}

/*
This custom validator is associated with the RecurrenceType DD
it makes sure if Recurrence type other than one day is selected then 
Recurrence Date is not empty
*/
function RecurrenceDateEmptyValidation(source, args) {
    var objForm = document.BaseForm;
    var objElement = document.getElementById(source.controltovalidate);
    var objValue = objElement.value;
    var blnRecurrence = true;
    switch (objValue.toUpperCase()) {
        case "ML.BASE.DV.RECURRENCETYPE.TYPE1ONEDAY":
            blnRecurrence = false;
            break;
        default:
            break;
    }
    //if recurrence is false then Recurrence date cannot be empty
    //if recurrence is set to anything else, recurrence date is disabled
    //so we are good
    if (true == blnRecurrence) {
        var i = 0;
        for (i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];
            if ((element.name.indexOf('EVT_RECURRENCE_END_DATE||MONTH') != -1)
		    || (element.name.indexOf('EVT_RECURRENCE_END_DATE||DAY') != -1)
		    || (element.name.indexOf('EVT_RECURRENCE_END_DATE||YEAR') != -1)) {
                i++;
                if ('' == element.value) {
                    args.IsValid = false;
                    break;
                }
                if (i == 3) {
                    break;
                }
            }
        }
    }
}

/*This function handles the RecurType DropDown in the CalendarAddEvent page
It Enables or Disables the EventDay checkboxlist depending upon the recurrence type selected*/
function RecurTypeDDHandler() {
    var objForm = document.BaseForm;
    var blnEventDayEnabled = true;
    var blnEventWeekEnabled = true;
    var blnRecurrence = true;
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' && element.name.indexOf('EVT_RECURRENCE_TYPE_ID') != -1) {
            switch (element.value.toUpperCase()) {
                case "ML.BASE.DV.RECURRENCETYPE.TYPE1ONEDAY":
                    blnEventDayEnabled = false;
                    blnEventWeekEnabled = false;
                    blnRecurrence = false;
                    break;
                case "ML.BASE.DV.RECURRENCETYPE.TYPE2WORKDAYS":
                    blnEventDayEnabled = false;
                    blnEventWeekEnabled = false;
                    break;
                case "ML.BASE.DV.RECURRENCETYPE.TYPE3DAILY":
                    blnEventDayEnabled = false;
                    blnEventWeekEnabled = false;
                    break;
                case "ML.BASE.DV.RECURRENCETYPE.TYPE4WEEKLY":
                    blnEventDayEnabled = true;
                    blnEventWeekEnabled = false;
                    break;
                case "ML.BASE.DV.RECURRENCETYPE.TYPE5BIWEEKLY":
                    blnEventDayEnabled = true;
                    blnEventWeekEnabled = false;
                    break;
                case "ML.BASE.DV.RECURRENCETYPE.TYPE6MONTHLYBYDATE":
                    blnEventDayEnabled = false;
                    blnEventWeekEnabled = false;
                    break;
                case "ML.BASE.DV.RECURRENCETYPE.TYPE7MONTHLYBYDAY":
                    blnEventDayEnabled = false;
                    blnEventWeekEnabled = true;
                    break;
                case "ML.BASE.DV.RECURRENCETYPE.TYPE8ANNUALLY":
                    blnEventDayEnabled = false;
                    blnEventWeekEnabled = false;
                    break;
                default:
                    blnEventDayEnabled = false;
                    blnEventWeekEnabled = false;
                    break;
            }

            break;
        }
    }
    /*
    var iCount = 0;
    for(i=0;i<objForm.elements.length;i++)
    {
    var element=objForm.elements[i];
    if(element.name.indexOf('EVT_RECURRENCE_END_DATE') != -1)
    {
    //alert(element.value);
    iCount++;
    if(false == blnRecurrence)
    {
    element.disabled = true;
    if(element.name.indexOf('EVT_RECURRENCE_END_DATE||YEAR')!= -1)
    {
    element.value = '';
    }
    if(element.name.indexOf('EVT_RECURRENCE_END_DATE||MONTH')!= -1 || element.name.indexOf('EVT_RECURRENCE_END_DATE||DAY')!= -1)
    {
    element.selectedIndex = 0;
    }
    }
    else
    {
    element.disabled = false;
    }	    
    if(iCount == 4)
    {
    break;
    }
    }
    }
    */
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'checkbox' && element.name.indexOf('EVT_EVENT_DAY_ID') != -1) {
            if (blnEventDayEnabled == true) {
                element.disabled = false;
            }
            else {
                element.disabled = true;
                element.checked = false;
            }
        }
    }

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' &&
				((element.name.indexOf('EVT_EVENT_DAY_ID_1') != -1) || (element.name.indexOf('EVT_EVENT_OCCURTIME_ID') != -1))) {
            if (blnEventWeekEnabled == true) {
                element.disabled = false;
            }
            else {
                element.disabled = true;
                element.selectedIndex = 0;
            }

        }
    }

}
/*
This clientside validation
checks to see for a calendar event if AllDayEvent is not checked
then start and end times are selected
*/
function CheckAllDayEventCheckbox(source, args) {
    var objForm = document.BaseForm;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'checkbox' && element.name.indexOf('EVT_ALLDAYEVENT') != -1) {
            chkElement = element;
            break;
        }
    }


    var blnAllDayEvent = false;
    if (chkElement.checked == true) {
        blnAllDayEvent = true;
    }
    if (false == blnAllDayEvent) {
        for (i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];
            if (element.type == 'select-one') {
                if (element.name.indexOf('EVT_START_DATE||TIME') != -1
				    || element.name.indexOf('EVT_END_DATE||TIME') != -1) {
                    if (element.selectedIndex == 0) {
                        args.IsValid = false;
                        break;
                    }
                }
            }
        }
    }
}
/*This function handles the OnClick event of the AllDayEvent checkbox on the CalendarAddEvent page
when the checkbox is checked the StartTime and EndTime drop downs should be disabled
*/
function AllDayEventCheckBoxHandler() {
    var objForm = document.BaseForm;
    var chkElement = null;
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'checkbox' && element.name.indexOf('EVT_ALLDAYEVENT') != -1) {
            chkElement = element;
            break;
        }
    }
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'select-one') {
            if (element.name.indexOf('EVT_START_DATE||TIME') != -1
				|| element.name.indexOf('EVT_END_DATE||TIME') != -1)
                if (chkElement.checked == true) {
                element.selectedIndex = 0;
                element.disabled = true;
            }
            else {
                element.disabled = false;
            }
        }
    }
}


/*This function handles the onChange event of the checkbox(No_START_DATE
and NO_END_DATE)on the EditActivity page. When the checkbox is checked the Controls(Month, Day, Year)
that show the date should be cleared */
function ActivityCheckBoxHandler(strCheckBoxId) {
    var objForm = document.BaseForm;
    var strDate = 'START_DATE';
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'checkbox' && element.name.indexOf(strCheckBoxId) != -1) {
            if (false == element.checked)
                return
            else {
                if (strCheckBoxId.indexOf('END_DATE') != -1) {
                    strDate = 'END_DATE';
                    break;
                }
            }


        }
    }

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'select-one') {
            if (element.name.indexOf(strDate + '||MONTH') != -1
					|| element.name.indexOf(strDate + '||DAY') != -1) {
                element.selectedIndex = 0;
            }
            else {
                continue;
            }
        }
        else if (element.type == 'text') {
            if (element.name.indexOf(strDate + '||YEAR') != -1) {
                element.value = "";
            }
            else {
                continue;
            }
        }


    }
}

function CollaborationSpaceDisableCustomText()
{
    var objForm = document.BaseForm;

    for (i = 0; i < objForm.elements.length; i++)
    {
        var strName = objForm.elements[i].name;
    
        if (strName.indexOf("CS_HOMEPAGE_TEXT_OPTION") != -1)
        {
            switch (objForm.elements[i].value.toUpperCase())
            {
                case "DESCRIPTION":
                case "NONE":
                    
                    for (k = 0; k < objForm.elements.length; k++)
                    {
                        var strBoxName = objForm.elements[k].name;
                        
                        if (strBoxName.indexOf("CS_HOMEPAGE_TEXT") != -1 &&
							objForm.elements[k].type.toUpperCase() == "TEXTAREA")
						{
                            var objElement = objForm.elements[k];
                        
                            objElement.value = "";
                            objElement.disabled = true;
                        
                            break;
                        }
                    }
                    
                    break;

                case "CUSTOM":
                    
                    for (k = 0; k < objForm.elements.length; k++)
                    {
                        var strBoxName = objForm.elements[k].name;
                    
                        if (strBoxName.indexOf("CS_HOMEPAGE_TEXT") != -1 &&
							objForm.elements[k].type.toUpperCase() == "TEXTAREA")
						{
                            var objElement = objForm.elements[k];
                        
                            objElement.disabled = false;
                        
                            break;
                        }
                    }
                    
                    break;

                default:
                    break;
            }

            break;
        }
    }

    return false;
}

function DocumentsRadioHandler(strRadioId)
{
    var objForm = document.BaseForm;

    for (i = 0; i < objForm.elements.length; i++)
    {
        var element = objForm.elements[i];
        
        if ('file' == element.type)
        {
            var strElementName = element.name;
            var j = strElementName.lastIndexOf('$');
            var strName = strElementName.substring(j + 1);
        
            if ('DOCUMENT_PATH' == strName)
            {
                if ('INTERNALDOC_PATH' == strRadioId)
                {
                    element.disabled = false;
                }
                else if ('EXTERNALFILE_URL' == strRadioId)
                {
                    element.disabled = true;
                }
            }
            
            continue;
        }
        else if ('text' == element.type)
        {
            var strElementName = element.name;
            var j = strElementName.lastIndexOf('$');
            var strName = strElementName.substring(j + 1);
        
            if ('DOCUMENT_URL' == strName)
            {
                if ('INTERNALDOC_PATH' == strRadioId)
                {
                    element.disabled = true;
                }
                else if ('EXTERNALFILE_URL' == strRadioId)
                {
                    element.disabled = false;
                }
            }

            continue;
        }
    }
}

function ConfirmBeforeNavigateAway(userQuestion)
{
    var retVal = true;
    
    if (blnHasMadeChange)
    {
        retVal = confirm(userQuestion);
    }

    return retVal;
}

function GeneralCourseRadioHandler(strRadioId) {
    var objForm = document.BaseForm;
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if ('file' == element.type) {
            var strElementName = element.name;
            var j = strElementName.lastIndexOf('$');
            var strName = strElementName.substring(j + 1);
            if ('COURSE_PATH' == strName) {
                if ('INTERNALCOURSE_PATH' == strRadioId) {
                    element.disabled = false;
                    blnFileRadioButtonEnabled = true;
                }
                else if ('EXTERNALFILE_URL' == strRadioId) {
                    element.disabled = true;
                    blnFileRadioButtonEnabled = false;
                }
            }
            continue;
        }
        else if ('text' == element.type) {
            var strElementName = element.name;
            var j = strElementName.lastIndexOf('$');
            var strName = strElementName.substring(j + 1);
            if ('COURSE_URL' == strName) {
                if ('INTERNALCOURSE_PATH' == strRadioId) {
                    element.disabled = true;
                }
                else if ('EXTERNALFILE_URL' == strRadioId) {
                    element.disabled = false;
                }
            }

            continue;
        }
    }
}

/*
This function creates an XMLHTTP object to be used in AJAX calls
*/
function CreateXMLHTTPRequest()
{
    try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { }
    try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { }
    try { return new XMLHttpRequest(); } catch (e) { }

    alert("XMLHttpRequest not supported");

    return null;
}

/*Given a passed Url use base utility to determine if page as been customized and where to 
redirect to
*/
function GetCalculatedUrl(strUrl)
{
    var strhref = location.href.toLowerCase();
    
    strhref = strhref.substring(0, strhref.indexOf("/kview"));
    
    var strCalculatedUrl = '';

    try
    {
        var objXMLHTTPRequest = CreateXMLHTTPRequest();
    
        //strhref = strhref.replace('https:','http:');
        objXMLHTTPRequest.open("POST", strhref + "/KView/CustomCodeBehind/Base/Utilities/GetCalculatedUrl.aspx", false);

        var strParams = "strUrl=" + strUrl;
    
        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);

        strCalculatedUrl = objXMLHTTPRequest.responseText;
    }
    catch (e)
    {
        var strCalculatedUrl = strhref + '/kview/customcodebehind/base/' + strUrl;
    }

    return strCalculatedUrl;
}

/*
Given any string Id, it returns the localized value of the string corresponding to the Id
strAddlParams contains additional parameters in the format '&param1=value1&...' to be passed to the page.
*/
function GetLocalizedMessage(strMessageId, strAddlParams)
{
    //    alert("In Get Localized Message");
    var objXMLHTTPRequest = CreateXMLHTTPRequest();

    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/GetLocalizedString.aspx"), false);

    if (strAddlParams == null)
    {
        strAddlParams = '';
    }

    var strParams = "strMessageId=" + strMessageId + strAddlParams;

    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    objXMLHTTPRequest.send(strParams);

    var strLocalizedMessage = objXMLHTTPRequest.responseText;

    return strLocalizedMessage;
}

/*
Given a content item Id, return a T/F/AskUser value dictating if a new attempt for that content item
should be allowed or not
*/
function GetNewAttemptLogic(strContentId)
{
    var objXMLHTTPRequest = CreateXMLHTTPRequest();

    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/GetNewAttemptLogic.aspx"), false);

    var strParams = "strContentId=" + strContentId;

    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    objXMLHTTPRequest.send(strParams);

    var strNewAttemptAllowed = objXMLHTTPRequest.responseText;

    return strNewAttemptAllowed;
}

/*
Given a content item Id, return the window features for that content item
*/
function GetContentWindowFeatures(strContentId)
{
    var objXMLHTTPRequest = CreateXMLHTTPRequest();

    objXMLHTTPRequest.open("POST", GetCalculatedUrl("GetContentWindowParameters.aspx"), false);

    var strParams = "strContentId=" + strContentId;

    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    objXMLHTTPRequest.send(strParams);

    var strWindowFeatures = objXMLHTTPRequest.responseText;

    return strWindowFeatures;
}

function RouteContentLaunch(strItemId, strItemType, strWindowFeatures,strLaunchContent,strNewAttempt,strCreateNewAttempt)
{
    // Deeplinking realted vars
    var strDeeplinkingTarget = '';
    var strMessage = '';    
    var strMessageId ='';

    if (strWindowFeatures != null && strWindowFeatures.toUpperCase().indexOf('FROM_DEEPLINKING') > -1)
    {
        strDeeplinkingTarget = strWindowFeatures;
        strWindowFeatures = null;

        if (GetStateVariable("USR_LMS_USER_ID").indexOf('ML.TMPUSR.') > -1)
        {
            strMessage = GetLocalizedMessage("ML.BASE.JSMSG.DL.NotLoggedIn");
        
            alert(strMessage);
        }
    }
    
    if (typeof(strLaunchContent) == 'undefined' &&
        typeof(strNewAttempt) == 'undefined' &&
        typeof(strCreateNewAttempt) == 'undefined')
    {
        strLaunchContent = "T";     //Flag that decides whether or not to Launch content
        strNewAttempt = "";     //Flag that decides whether new attempt is allowed for the content item or not
        strNewAttempt = GetNewAttemptLogic(strItemId);    //Ajax call that returns new attempt logic

        var strCreateNewAttempt = "F";      //Flag that decides if a new attempt should be created 

        if (strNewAttempt.toUpperCase() == "T")
        {
            strLaunchContent = "T";
            strCreateNewAttempt = "T";
            strMessage = GetLocalizedMessage("ML.BASE.JSMSG.LaunchAttemptAlwaysNewAfterCompletion");
        
            alert(strMessage);
        }
        else if (strNewAttempt.toUpperCase() == "ASKUSER")
        {
            // Different, localized messages based on user's assignment status
            if (GetConfigSetting('CGI_INTEGRATION').toUpperCase() == "ON")
            {
                strMessage = GetLocalizedMessage("ML.BASE.JSMSG.CGILaunchNewAttempt", '&source=contentlaunch&cgi=on&strItemId=' + strItemId);            
	            strMessageId = "ML.BASE.JSMSG.CGILaunchNewAttempt";
            }
            else
            {
                strMessage = GetLocalizedMessage("ML.BASE.JSMSG.LaunchNewAttempt", '&source=contentlaunch&strItemId=' + strItemId);
                strMessageId = "ML.BASE.JSMSG.LaunchNewAttempt";
            }        
    	    
	        if (browser.isMozilla && browser.versionMajor <= 2)
            {
                location.href = GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=CUSTOMDIALOGBOX&strActualItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId) + '&strWindowFeatures=' + escape(strWindowFeatures) + '&strLaunchContent=' + escape(strLaunchContent)+ '&strNewAttempt=' + escape(strNewAttempt); 
    			
			    return false;	
            }
            else 
            {
                var res = getModalDialog(strItemId,strMessageId,GetConfigSetting('CGI_INTEGRATION'),"ML.BASE.BTN.CustomDialogBox.OpenCurrentAttempt|ML.BASE.BTN.CustomDialogBox.StartNewAttempt|ML.BASE.BTN.CustomDialogBox.Cancel",560,170);
    	        
	            if (res == 0)
                {        
                    strLaunchContent = "T";
                }
                else if (res == 1)
                {  
                    strLaunchContent = "T";
                    strCreateNewAttempt = "T";
                }
                else if (res == 2 || typeof(res) == 'undefined' || res == null)
                {
                    return;
                }
            }
        }
        else if (strNewAttempt.toUpperCase() == "F")
        {
            strLaunchContent = "T";
            strCreateNewAttempt = "F";
        }
    }

    //    alert("strNewAttempt: " + strNewAttempt);
    //    alert("strLaunchContent: " + strLaunchContent);
    //    alert("strCreateNewAttempt: " + strCreateNewAttempt);
    if (GetConfigSetting('CGI_INTEGRATION').toUpperCase() == "ON" && strCreateNewAttempt == "T")
    {
        var strResetFlag = ResetPreviousAttempt(strItemId);
    
        window.location.replace(window.location.href);
    
        return true;
    }

    ShowAlert("Launch Item: " + "\n\n" + "Item ID: " + strItemId + "\n\n" + "Item Type: " + strItemType);
    
    if (strWindowFeatures == null)
    {
        strWindowFeatures = GetContentWindowFeatures(strItemId);
    }
    
    ShowAlert("Window Features:" + strWindowFeatures);

    var strLaunch = strItemType;
    
    if (strItemType.toUpperCase() == "BLOGADDITIONALSEARCH")
    {
        /*Blog and BlogAdditionalSearch needs to launched in the same window*/
        strLaunch = "Blog";
    }
    
    if (strItemType.toUpperCase() == "GLOSSARYLISTING")
    {
        strLaunch = "Glossary";
    }
    
    if (strDeeplinkingTarget != "" && strDeeplinkingTarget.toUpperCase().indexOf('FROM_DEEPLINKING') > -1)
    {
        switch (strDeeplinkingTarget.toUpperCase())
        {
            case "FROM_DEEPLINKING_LAUNCHINMAINWS":
                switch (strItemType.toUpperCase()) {
                    case "COLLABORATIONSPACE":
                    case "CURRICULUM":
                        //
                        if (strItemType.toUpperCase() == 'COLLABORATIONSPACE') {
                            SetBreadCrumbDL('6408A5DBAF934A64B7DFC97A5CBA5F57');
                        }
                        else {
                            SetBreadCrumbDL('575F48230D1E49C49DB0BF611C4708ED');
                        }
                        //
                        var winP = this;
                        var blnMainWSFound = false;
                        while (winP.opener != null) {
                            winP = winP.opener;
                            blnMainWSFound = true;
                        }
                        winP.location.href = GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId);
                        if (blnMainWSFound) {
                            this.close();
                        }
                        return;
                        break;

                    case "CLASSROOM":
                        SetSiteSearchResultsDL(strItemId);
                        return;
                        break;
                }
                break;
            default:
                strLaunch = "self";  // Launch content in same workspace
                ContentWindow = this;
                break;
        }
    }

    var blnNewWindow = false;
    if (strItemType.toUpperCase() != "DOCUMENT" && strItemType.toUpperCase() != "CURRICULUM" && strItemType.toUpperCase() != 'COLLABORATIONSPACE' && strDeeplinkingTarget.toUpperCase().indexOf("FROM_DEEPLINKING") < 0) {
        if (strItemType.toUpperCase() == "COURSEWARE" ||
            strItemType.toUpperCase() == "GENERALCOURSEWARE" ||
		    strItemType.toUpperCase() == "ASSESSMENT" ||
		    strItemType.toUpperCase() == "TEST") {
            ContentWindow = window.open("", '_' + strLaunch, strWindowFeatures);
        }
        else {
            ContentWindow = window.open("", '_' + strLaunch, strWindowFeatures);
        }

        if (ContentWindow && ContentWindow.open && !ContentWindow.closed) {
            if (strItemType.toUpperCase() != "DOCUMENT" && ContentWindow.location.href == "about:blank") {
                blnNewWindow = true;  // Change location.href
                //ContentWindow.location.href = '/KView/CustomCodeBehind/ContentRouter.aspx?strItemType=' + escape(strItemType) + '&strItemId=' + escape(strItemId);
            }
            else {
                if (strItemType.toUpperCase() != "GLOSSARY" && strItemType.toUpperCase() != "GLOSSARYLISTING") {
                    ContentWindow.close();
                }

            }
        }
    }

    //TODO: Add AJAX call to set strItemType, strItemId in the query string hashtable (so we can avoid passing them along the URL)

    switch (strItemType.toUpperCase()) {
        case "ANNOUNCEMENT":
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);
            SetRefreshTimer();
            break;

        case "HOMEPAGEFEED":
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);
            SetRefreshTimer();
            break;

        case "FAQ":
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);
            SetRefreshTimer();
            break;

        case "SURVEYVIEW":
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);
            break;

        case "SURVEYRATING":
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch + '&strTabFocusId=REVIEW', strWindowFeatures);
            break;

        case "SURVEYSCALE":
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);
            break;

        case "GLOSSARY":
            ContentWindow.location.href = GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId);
            break;

        case "GLOSSARYLISTING":
            ContentWindow.location.href = GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId);
            break;

        case "DOCUMENT":
            // Issue 5078 - AKR - 07/24/07
            //ContentWindow = window.open ('/KView/CustomCodeBehind/ContentRouter.aspx?strItemType=' + escape(strItemType) + '&strItemId=' + escape(strItemId), '_'+ strLaunch, strWindowFeatures);
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);
            
//            if (strDocumentWindowTitle == null) {
//                strDocumentWindowTitle = GetLocalizedMessage("ML.BASE.DocumentWindowTitle");
//                strDocumentFrameName = GetLocalizedMessage("ML.BASE.DocumentFrameName");
//            }
//            var strHTML = '<HTML><HEAD><TITLE>' + strDocumentWindowTitle + '</TITLE></HEAD>';
//            strHTML += '<FRAMESET><FRAME name="' + strDocumentFrameName + '" src="' + GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId) + '">\n</FRAMESET>';
//            strHTML += '</HTML>';
//            ContentWindow.document.write(strHTML);
            SetRefreshTimer();
            break;

        case "COLLABORATIONSPACE":
            window.location.href = GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId);
            break;

        case "SURVEY":
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);
            SetRefreshTimer();
            break;

        case "PREVIEW_SURVEY":
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);
            break;

        //Courseware router pops up in window with different window features since windo remains open during the taking of the course  
        //for SCORM 12 and 2K4.  Thus do NOT want all different types of features on. 
        case "ASSESSMENT":
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=200,height=200');
            SetRefreshTimer();
            break;

        case "GENERALCOURSEWARE":
            // Issue 5078 - AKR - 07/24/07
//            var strGCWindowTitle = GetLocalizedMessage("ML.BASE.GeneralCourseWindowTitle");
//            if (strDocumentFrameName == null) {
//                strDocumentFrameName = GetLocalizedMessage("ML.BASE.DocumentFrameName");
//            }
//            //ContentWindow = window.open ('/KView/CustomCodeBehind/ContentRouter.aspx?strItemType=' + escape(strItemType) + '&strItemId=' + escape(strItemId), '_'+ strLaunch, strWindowFeatures);
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);
//            var strHTML = '<HTML><HEAD><TITLE>' + strGCWindowTitle + '</TITLE></HEAD>';
//            strHTML += '<FRAMESET><FRAME name="' + strDocumentFrameName + '" src="' + GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId) + '">\n</FRAMESET>';
//            strHTML += '</HTML>';
//            ContentWindow.document.write(strHTML);
            SetRefreshTimer();
            break;

        case "COURSEWARE":
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);
            SetRefreshTimer();
            break;

        case "CURRICULUM":
            window.location.href = GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId);
            break;

        case "BLOGADDITIONALSEARCH":
            newwindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemType=' + escape(strItemType), '_' + strLaunch, strWindowFeatures);
            break;

        case "BLOG":
            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);
            SetRefreshTimer();
            break;

        case "IDPSURVEYINSTANCE":

            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);

            //		SetRefreshTimer();

            break;

        case "MESSAGELINK":

            ContentWindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);
            break;

        default:
            newwindow = window.open(GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId), '_' + strLaunch, strWindowFeatures);

            if (newwindow && newwindow.open && !newwindow.closed) {
                newwindow.focus();
            }

            break;
    }

    if (ContentWindow && ContentWindow.open && !ContentWindow.closed)
    {
        ContentWindow.focus();
    }

    return false;
}

function SetSiteSearchResultsDL(strItemId)
{
    var objXMLHTTPRequest = CreateXMLHTTPRequest();

    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/ProcessDeepLinkContent.aspx"), false);

    var strParams = "strDLItemId=" + strItemId + "&strAction=SetSiteSearchResults";

    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    objXMLHTTPRequest.send(strParams);

    var winP = this;
    var blnMainWSFound = false;

    while (winP.opener != null)
    {
        winP = winP.opener;
        blnMainWSFound = true;
    }
    
    winP.location.href = window.location.href = GetCalculatedUrl('GlobalSearch.aspx')
    
    if (blnMainWSFound)
    {
        this.close();
    }
    
    return;
}

function SetBreadCrumbDL(strMenuItemID) {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();

    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/ProcessDeepLinkContent.aspx"), false);
    var strParams = "strMenuItemID=" + strMenuItemID + "&strAction=SetBreadCrumbByID";

    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    objXMLHTTPRequest.send(strParams);

    return;
}

function RouteContentLaunch_InWSpace(strItemId, strItemType, strGridId) {
    var strLaunchContent = "T";     //Flag that decides whether or not to Launch content
    var strNewAttempt = "";     //Flag that decides whether new attempt is allowed for the content item or not

    strNewAttempt = GetNewAttemptLogic(strItemId);    //Ajax call that returns new attempt logic
    var strCreateNewAttempt = "F";      //Flag that decides if a new attempt should be created 

    var strMessage = '';

    if (strNewAttempt.toUpperCase() == "T") {
        strLaunchContent = "T";
        strCreateNewAttempt = "T";
        strMessage = GetLocalizedMessage("ML.BASE.JSMSG.LaunchAttemptAlwaysNewAfterCompletion");
        alert(strMessage);
    }
    else if (strNewAttempt.toUpperCase() == "ASKUSER") {
        // Different, localized messages based on user's assignment status
        strMessage = GetLocalizedMessage("ML.BASE.JSMSG.LaunchNewAttempt", '&source=contentlaunch&strItemId=' + strItemId);
        if (!confirm(strMessage)) {
            strLaunchContent = "T";
        }
        else {
            strLaunchContent = "T";
            strCreateNewAttempt = "T";
        }
    }
    else if (strNewAttempt.toUpperCase() == "F") {
        strLaunchContent = "T";
        strCreateNewAttempt = "F";
    }

    if (strLaunchContent == "T") {

        var blnNewWindow = false;

        window.location.href = GetCalculatedUrl('ContentRouter.aspx') + '?strItemType=' + escape(strItemType) + '&strCreateNewAttempt=' + escape(strCreateNewAttempt) + '&strItemId=' + escape(strItemId) + '&strGridId=' + escape(strGridId);

    }

    return false;
}

function GoSCORMCourseMenu(coursewindow, strInUserIdHash, strInCourseIdHash, strInSessionIdHash, strCourseType, strWindowFeatures, strMode, strCredit) {
    ShowAlert("User ID: " + strInUserIdHash + "\n\n" + "Course ID: " + strInCourseIdHash + "\n\n" + "In Session ID: " + strInSessionIdHash);
    strUserIdHash = strInUserIdHash;
    strCourseIdHash = strInCourseIdHash;
    strSessionIdHash = strInSessionIdHash;

    switch (strCourseType) {
        case "ML.BASE.COURSEWARE.ONLINE.SCORM.12":
            coursewindow = window.open(GetCalculatedUrl('Courseware/SCORM/SCORM12CourseFrame.aspx') + '?strUserId=' + strUserIdHash + '&strCourseId=' + strCourseIdHash + '&strSessionId=' + strSessionIdHash + '&blnValidateCourseLaunch=true', 'SCORMCourseMenu', strWindowFeatures);
            break;

        case "ML.BASE.COURSEWARE.ONLINE.SCORM.2004":
            coursewindow = window.open(GetCalculatedUrl('Courseware/SCORM/SCORMCourseFrame.aspx') + '?strUserId=' + strUserIdHash + '&strCourseId=' + strCourseIdHash + '&strMode=' + strMode + '&strCredit=' + strCredit + '&strSessionId=' + strSessionIdHash + '&blnValidateCourseLaunch=true', 'SCORMCourseMenu', strWindowFeatures);
            break;

        case "ML.BASE.ASSESSMENT.SCORM.12":
            coursewindow = window.open(GetCalculatedUrl('Courseware/SCORM/SCORM12CourseFrame.aspx') + '?strUserId=' + strUserIdHash + '&strCourseId=' + strCourseIdHash + '&strSessionId=' + strSessionIdHash + '&blnValidateCourseLaunch=true', 'SCORMCourseMenu', strWindowFeatures);
            break;

        case "ML.BASE.ASSESSMENT.SCORM.2004":
            coursewindow = window.open(GetCalculatedUrl('Courseware/SCORM/SCORMCourseFrame.aspx') + '?strUserId=' + strUserIdHash + '&strCourseId=' + strCourseIdHash + '&strSessionId=' + strSessionIdHash + '&blnValidateCourseLaunch=true', 'SCORMCourseMenu', strWindowFeatures);
            break;

        default:
            break;

    }

    return coursewindow;
}


function GoCertificate(certificatewindow, strInUserIdHash, strInCourseIdHash, strPath) {
    //	alert("User ID: " + strInUserIdHash + "\n\n" + "Course ID: " + strInCourseIdHash);
    strUserIdHash = strInUserIdHash;
    strCourseIdHash = strInCourseIdHash;

    certificatewindow = window.open(strPath + '/certificates/certificate_data.fdf', 'CERTIFICATE_WINDOW', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480');

    return certificatewindow;

}


function GetAPI() {
    var theAPI = FindAPI(window);

    if ((theAPI == null) && (window.opener != null) && (typeof (window.opener) != "undefined")) {
        theAPI = FindAPI(window.opener);
    }

    if (theAPI == null) {
        alert("Unable to find an API adapter");
    }

    return theAPI
}


function GetAPIHandle() {
    var apiHandle;
    //   if (apiHandle == null)
    //   {
    apiHandle = GetAPI();
    //   }
    return apiHandle;
}


function FindAPI(win) {
    var FindAPITries = 0;

    while ((win.API_1484_11 == null) && (win.parent != null) && (win.parent != win)) {
        FindAPITries++;

        // Note: 100 is an arbitrary number, but should be more than sufficient
        if (FindAPITries > 100) {
            alert("Error finding API -- too deeply nested.");

            return null;
        }

        win = win.parent;
    }

    return win.API_1484_11;
}


function loadXML(strURL) {
    if (window.ActiveXObject) {
        alert("Found implementation");

        var xmlDocument = new ActiveXObject("Microsoft.XMLDOM");

        xmlDocument.load(strURL);
    }

    return xmlDocument;
}


function xmlError(e) {
    alert(e);
}


function CurrentDate() {
    var objCurrentDate = new Date();
    var arrMonth = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
    var arrDay = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    var strDay = arrDay[objCurrentDate.getDay()];
    var strMonth = arrMonth[objCurrentDate.getMonth()];

    //attributes for date
    this.date = objCurrentDate.getDate();
    this.day = objCurrentDate.getDay();
    this.dayname = strDay;
    this.month = objCurrentDate.getMonth();
    this.monthname = strMonth;
    this.year = objCurrentDate.getFullYear();
    this.shortyear = objCurrentDate.getFullYear().toString().substr(2, objCurrentDate.getFullYear().toString().length);
    this.shortDate = objCurrentDate.getMonth() + '/' + objCurrentDate.getDate() + '/' + objCurrentDate.getFullYear().toString().substr(2, objCurrentDate.getFullYear().toString().length);
    this.longDate = strDay + ' ' + strMonth + ' ' + objCurrentDate.getDate() + ', ' + objCurrentDate.getFullYear();
    this.standardDate = strMonth + ' ' + objCurrentDate.getDate() + ', ' + objCurrentDate.getFullYear();
    //attributes for time
    this.time = objCurrentDate.getTime();
    this.hours = objCurrentDate.getHours();
    this.minutes = objCurrentDate.getMinutes();
    this.seconds = objCurrentDate.getSeconds();
    this.milliseconds = objCurrentDate.getMilliseconds();
    this.standardTime = objCurrentDate.getHours() + ':' + objCurrentDate.getMinutes() + ':' + objCurrentDate.getSeconds();
}


function ConvertTotalSeconds(ts) {
    var sec = (ts % 60);
    ts -= sec;
    var tmp = (ts % 3600);  //# of seconds in the total # of minutes
    ts -= tmp;              //# of seconds in the total # of hours
    sec = Math.round(sec * 100) / 100;  // convert seconds to conform to CMITimespan type (e.g. SS.00)
    var strSec = new String(sec);
    var strWholeSec = strSec;
    var strFractionSec = '';
    /*
    moved these variables to the top of the function 
    so that they are not declared multiple times
    */
    var hour = 0;
    var min = 0;

    if (strSec.indexOf('.') != -1) {
        strWholeSec = strSec.substring(0, strSec.indexOf('.'));
        strFractionSec = strSec.substring(strSec.indexOf('.') + 1, strSec.length);
    }

    if (strWholeSec.length < 2) {
        strWholeSec = '0' + strWholeSec;
    }

    strSec = strWholeSec;

    if (strFractionSec.length) {
        strSec = strSec + '.' + strFractionSec;
    }

    if ((ts % 3600) != 0) {
        hour = 0;
    }
    else {
        hour = (ts / 3600);
    }

    if ((tmp % 60) != 0) {
        min = 0;
    }
    else {
        min = (tmp / 60);
    }

    //  if ((new String(hour)).length < 2) {
    //    hour = '0'+hour;
    // }

    //  if ((new String(min)).length < 2) {   
    //    min = '0'+min;
    //  }

    var rtnVal = 'T' + hour + 'H' + min + 'M' + strSec + 'S';

    return rtnVal;
}


function SeperateTextBoxValues(strSeperator, strElementName) {
    var strDisplay;

    for (var i = 0; i < document.BaseForm.elements.length; i++) {
        var strCheckName;

        strCheckName = document.BaseForm.elements[i].name;

        if (strCheckName.indexOf("$" + strElementName) != -1) {
            var strTest = document.BaseForm.elements[i].value;

            if ((strTest.charAt(strTest.length - 1) == ' ') && (LastNonSpaceCharacter(strTest) != strSeperator)) {
                document.BaseForm.elements[i].value = strTest.substring(0, strTest.length - 1) + strSeperator;
            }
        }
    }
}


function LastNonSpaceCharacter(strString) {
    var strLastCharacter;
    var j = strString.length - 1;

    while (j != 0) {
        if (strString.charAt(j) != ' ') {
            strLastCharacter = strString.charAt(j);

            break;
        }

        j--;
    }

    return strLastCharacter;
}


function AddLastCharacter(strSeperator, strElementName) {
    for (var i = 0; i < document.BaseForm.elements.length; i++) {
        var strCheckName;

        strCheckName = document.BaseForm.elements[i].name;

        if (strCheckName.indexOf("$" + strElementName) != -1) {
            var strTest = document.BaseForm.elements[i].value;

            if ((strTest.length != 0) && (LastNonSpaceCharacter(strTest) != strSeperator)) {
                document.BaseForm.elements[i].value = strTest.substring(0, strTest.length) + strSeperator;
            }
        }
    }
}


function trim(s) {
    while (s.substring(0, 1) == ' ') {
        s = s.substring(1, s.length);
    }

    while (s.substring(s.length - 1, s.length) == ' ') {
        s = s.substring(0, s.length - 1);
    }

    return s;
}


/// When launching all content in a pop up mode need to know that this happened.   A session variable would not be viable because it would also
/// be read by the launching window and thus conflict.  In order to fix this issue, all pop up will go in a frameset, the top level frame will store
/// the content type of pop up.  This value will be used when there is knowledge of requiring the value.  For example with collaboration spaces,
/// since there is no need for this when dealing with documents the document will launch in a full window with no popup.
/// This function is called everytime the BaseForm is submitted.
function RetrievePopUpMode() {
    if (top.strContentType != null) {
        //		alert (top.strContentType);
        document.BaseForm.strContentType.value = top.strContentType;
    }
}


function GoViewSurveyComments(strSurveyId, strSectionId, strQuestionId) {
    newwindow = window.open(GetCalculatedUrl('Reports/ManagementReports/SurveyShortAnswerResponses.aspx') + '?strSurveyId=' + strSurveyId + '&strSectionId=' + strSectionId + '&strQuestionId=' + strQuestionId, 'ViewSurveyComments', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=1024,height=768');

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }
}


function WindowLaunchSizePreview() {
    var objForm = document.BaseForm;
    var blnToolbar = false;
    var blnLocation = false;
    var blnDirectories = false;
    var blnStatus = false;
    var blnMenubar = false;
    var blnScrollbars = false;
    var blnResizable = false;
    var intHeight = "";
    var intWidth = "";

    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var strElementName = "";

        if (element.name.indexOf("$") != -1) {
            strElementName = element.name.substring(element.name.lastIndexOf("$") + 1);
            //			alert (strElementName);

            switch (strElementName) {
                case "toolbar":

                    if (element.checked) {
                        blnToolbar = element.value.toLowerCase();
                    }

                    break;

                case "location":

                    if (element.checked) {
                        blnLocation = element.value.toLowerCase();
                    }

                    break;

                case "directories":
                    if (element.checked) {
                        blnDirectories = element.value.toLowerCase();
                    }

                    break;

                case "status":

                    if (element.checked) {
                        blnStatus = element.value.toLowerCase();
                    }

                    break;

                case "menubar":

                    if (element.checked) {
                        blnMenubar = element.value.toLowerCase();
                    }

                    break;

                case "scrollbars":

                    if (element.checked) {
                        blnScrollbars = element.value.toLowerCase();
                    }

                    break;

                case "resizable":

                    if (element.checked) {
                        blnResizable = element.value.toLowerCase();
                    }

                    break;

                case "height":
                    intHeight = element.value.toLowerCase();

                    break;

                case "width":
                    intWidth = element.value.toLowerCase();

                    break;

                default:

                    break;
            }
        }
    }

    var strProperties = 'toolbar=' + blnToolbar + ',location=' + blnLocation + ',directories=' + blnDirectories + ',status=' + blnStatus + ',menubar=' + blnMenubar + ',scrollbars=' + blnScrollbars + ',resizable=' + blnResizable + ',height=' + intHeight + ',width=' + intWidth;

    newwindow = window.open(GetCalculatedUrl('Content/WindowFeaturesInformation.aspx') + '?strProperties=' + escape(strProperties), 'test_pop_up', strProperties);

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}


function RouteSelectedAction(strItemId, strUserId) {
    var objForm = document.BaseForm;

    var blnReturnValue = true;
    var blnLaunchReport = false;
    var strReport = "";

    for (i = 0; i < objForm.elements.length; i++) {
        strElementName = objForm.elements[i].name;

        if (objForm.elements[i].type == 'select-one' && strElementName.indexOf("ActionsMenu") != -1) {
            if (objForm.elements[i].getAttribute("AssocId") != null) {
                if (objForm.elements[i].getAttribute("AssocId") == strItemId) {
                    switch (objForm.elements[i].value) {
                        case 'ML.BASE.ACT.CourseCompletion':
                            strReport = objForm.elements[i].value;
                            blnLaunchReport = true;
                            blnReturnValue = false;

                            break;

                        case 'ML.BASE.ACT.Certificate':
                            strReport = objForm.elements[i].value;
                            blnLaunchReport = true;
                            blnReturnValue = false;

                            break;

                        default:

                            break;
                    }
                }
            }
        }
    }

    if (blnLaunchReport) {
        var strLocaleId = GetStateVariable("LocaleId");
        var strDomainId = GetStateVariable("DomainId");
        var strParams = "";

        var objXMLHTTPRequest = CreateXMLHTTPRequest();
        objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/AJAXUtilities.aspx"), false);
        strParams = "strCall=RemoveStateObjectById&strStateObjectId=UserCertificateData";
        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);

        objXMLHTTPRequest = null;
        objXMLHTTPRequest = CreateXMLHTTPRequest();
        objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/AJAXUtilities.aspx"), false);
        strParams = "strCall=RemoveStateObjectById&strStateObjectId=CourseCertificateData";
        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);

        objXMLHTTPRequest = null;
        objXMLHTTPRequest = CreateXMLHTTPRequest();
        objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/CertificateLibraryCalls.aspx"), false);
        strParams = "strCall=GetArbitratedCertificateUrl&strItemId=" + strItemId;
        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);

        //Tix 8304
        //Fabrice Bonnaire
        //April 1, 2010
        //Check to see if there is a user ID saved in the table of IDs.  If so then use that Id since defines user currently
        //being handled.
        objXMLHTTPRequest = null;
        objXMLHTTPRequest = CreateXMLHTTPRequest();
        objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/AJAXUtilities.aspx"), false);
        strParams = "strCall=GetContentItemIdFromState&strItemIdVariable=strUserId";
        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);
        if (objXMLHTTPRequest.responseText != '') {
            strUserId = objXMLHTTPRequest.responseText;
        }

        var strArbitratedCertificateId = GetStateVariable("strArbitratedCertificateId");
        var strWindowFeatures = GetContentWindowFeatures(strArbitratedCertificateId)

        //newwindow = window.open(GetCalculatedUrl("Utilities/PDFConverter.aspx") + '?blnCalculateCertificate=true&strItemId=' + strArbitratedCertificateId + '&strUserId=' + strUserId + '&strContentItemId=' + strItemId + '&strLocaleId=' + strLocaleId + '&strDomainId=' + strDomainId, '_CERTIFICATE_WINDOW_2', strWindowFeatures);         
        //newwindow = window.open(GetCalculatedUrl("Reports/StudentReports/CourseCertificateFrame.aspx") + '?blnCalculateCertificate=true&strItemId=' + strArbitratedCertificateId + '&strUserId=' + strUserId + '&strContentItemId=' + strItemId + '&strLocaleId=' + strLocaleId + '&strDomainId=' + strDomainId + '&strPDF=T', '_CERTIFICATE_WINDOW_2', strWindowFeatures);
        newwindow = window.open(GetCalculatedUrl("Reports/StudentReports/CourseCertificateFrame.aspx") + '?blnCalculateCertificate=true&strItemId=' + strArbitratedCertificateId + '&strUserId=' + strUserId + '&strContentItemId=' + strItemId + '&strLocaleId=' + strLocaleId + '&strDomainId=' + strDomainId, '_CERTIFICATE_WINDOW_2', strWindowFeatures);
        if (newwindow && newwindow.open && !newwindow.closed) {
            newwindow.focus();
        }
    }

    return blnReturnValue;
}

function RouteSelectedActionForCertificate(strItemId) {
    var objForm = document.BaseForm;

    var blnReturnValue = true;
    var blnLaunchReport = false;
    var strReport = "";

    for (i = 0; i < objForm.elements.length; i++) {
        strElementName = objForm.elements[i].name;

        if (objForm.elements[i].type == 'select-one' && strElementName.indexOf("ActionsMenu") != -1) {
            if (objForm.elements[i].getAttribute("AssocId") != null) {
                if (objForm.elements[i].getAttribute("AssocId") == strItemId) {
                    switch (objForm.elements[i].value) {
                        case 'ML.BASE.ACT.Certificate':
                            strReport = objForm.elements[i].value;
                            blnLaunchReport = true;
                            blnReturnValue = false;

                            break;

                        default:

                            break;
                    }
                }
            }
        }
    }


    if (blnLaunchReport) {
        var strUserId = GetStateVariable("USR_LMS_USER_ID");
        var strLocaleId = GetStateVariable("LocaleId");
        var strDomainId = GetStateVariable("DomainId");
        var strParams = "";

        var objXMLHTTPRequest = CreateXMLHTTPRequest();
        objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/AJAXUtilities.aspx"), false);
        strParams = "strCall=RemoveStateObjectById&strStateObjectId=UserCertificateData";
        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);

        objXMLHTTPRequest = null;
        objXMLHTTPRequest = CreateXMLHTTPRequest();
        objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/AJAXUtilities.aspx"), false);
        strParams = "strCall=RemoveStateObjectById&strStateObjectId=CourseCertificateData";
        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);

        objXMLHTTPRequest = null;
        objXMLHTTPRequest = CreateXMLHTTPRequest();
        objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/CertificateLibraryCalls.aspx"), false);
        strParams = "strCall=GetContentItemIdByAttemptId&strAttemptId=" + strItemId;
        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);

        var strContentItemId = objXMLHTTPRequest.responseText;

        objXMLHTTPRequest = null;
        objXMLHTTPRequest = CreateXMLHTTPRequest();
        objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/CertificateLibraryCalls.aspx"), false);
        strParams = "strCall=GetArbitratedCertificateUrl&strItemId=" + strContentItemId;
        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);
        var strArbitratedCertificateId = GetStateVariable("strArbitratedCertificateId");

        var strWindowFeatures = GetContentWindowFeatures(strArbitratedCertificateId)

        newwindow = window.open(GetCalculatedUrl("Reports/StudentReports/CourseCertificateFrame.aspx") + '?blnCalculateCertificate=true&strItemId=' + strArbitratedCertificateId + '&strUserId=' + strUserId + '&strContentItemId=' + strContentItemId + '&strLocaleId=' + strLocaleId + '&strDomainId=' + strDomainId + '&strAttemptId=' + strItemId, '_CERTIFICATE_WINDOW_2', strWindowFeatures);

        if (newwindow && newwindow.open && !newwindow.closed) {
            newwindow.focus();
        }
    }


    return blnReturnValue;
}

function GoAboutLMS() {
    newwindow = window.open(GetCalculatedUrl('Utilities/AboutPage.aspx'), '_AboutMLMS', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=910,height=480');

    if (null != newwindow) {
        newwindow.focus();
    }

    return false;
}


function GoGlossary() {
    newwindow = window.open(GetCalculatedUrl('Content/Glossary/GlossarySimpleSearch.aspx') + '?blnPopUp=true', '_Glossary', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=800,height=600');

    if (null != newwindow) {
        newwindow.focus();
    }

    return false;
}


function GoSystemHelp(strLocaleId) {
    newwindow = window.open(GetCalculatedUrl('Help/PopupHelp.aspx') + '?strHelpType=SystemHelp', '_SystemHelp', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=720,height=520');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }
    return false;
}


function GoMapAndDirections() {
    var objForm = document.BaseForm;

    for (i = 0; i < objForm.elements.length; i++) {
        strElementName = objForm.elements[i].name;

        if (strElementName.indexOf("USR_STREET_ADDRESS") != -1) {
            var strOriginAddress = objForm.elements[i].value;
        }

        if (strElementName.indexOf("BLDG_STREET_ADDRESS") != -1) {
            var strDestinationAddress = objForm.elements[i].value;
        }

        if (strElementName.indexOf("USR_CITY") != -1) {
            var strOriginCity = objForm.elements[i].value;
        }

        if (strElementName.indexOf("BLDG_CITY") != -1) {
            var strDestinationCity = objForm.elements[i].value;
        }

        if (strElementName.indexOf("USR_STATE_ID") != -1) {
            var strOriginState = objForm.elements[i].value;
        }

        if (strElementName.indexOf("BLDG_STATE_ID") != -1) {
            var strDestinationState = objForm.elements[i].value;
        }

        if (strElementName.indexOf("USR_POSTAL_CODE") != -1) {
            var strOriginZip = objForm.elements[i].value;
        }

        if (strElementName.indexOf("BLDG_POSTAL_CODE") != -1) {
            var strDestinationZip = objForm.elements[i].value;
        }

        if (strElementName.indexOf("USR_COUNTRY_ID") != -1) {
            var strOriginCountry = objForm.elements[i].value;
        }

        if (strElementName.indexOf("BLDG_COUNTRY_ID") != -1) {
            var strDestinationCountry = objForm.elements[i].value;
        }
    }

    newwindow = window.open(GetCalculatedUrl('LearningCenter/LaunchDirections.aspx') + '?strOriginAddress=' + strOriginAddress + '&strDestinationAddress=' + strDestinationAddress + '&strOriginCity=' + strOriginCity + '&strDestinationCity=' + strDestinationCity + '&strOriginState=' + strOriginState + '&strDestinationState=' + strDestinationState + '&strOriginZip=' + strOriginZip + '&strDestinationZip=' + strDestinationZip + '&strOriginCountry=' + strOriginCountry + '&strDestinationCountry=' + strDestinationCountry, 'MapAndDirections', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=1080,height=820');

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}


function HandleDataGridRadioButtons(strValue) {
    var objForm = document.BaseForm;

    for (var i = 0; i < document.BaseForm.elements.length; i++) {
        if (objForm.elements[i].type.toUpperCase() == 'RADIO') {
            if (objForm.elements[i].getAttribute("onClick") != null) {
                var strAttribute = objForm.elements[i].getAttribute("onClick").toString();
                //				alert (strAttribute);

                if (objForm.elements[i].value != strValue && strAttribute.indexOf("HandleDataGridRadioButtons") != -1) {
                    objForm.elements[i].checked = false;
                }
            }
        }
    }
}


function BlogSearchHandler(strMessage) {
    var objForm = document.BaseForm;
    var strPublisherType = '';
    var strAuthorType = '';

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' && element.name.indexOf('POSTSEARCHTYPE') != -1) {
            switch (element.value.toUpperCase()) {
                case "ML.BASE.DV.POSTPUBLISHED":
                    strPublisherType = 'Published';
                    break;

                case "ML.BASE.DV.POSTDRAFT":
                    strPublisherType = 'Draft';
                    break;

                case "ML.BASE.DV.POSTANY":
                    strPublisherType = 'Any';
                    break;
            }
        }

        if ('radio' == element.type && element.name.indexOf('PostAuthorType') != -1 && element.checked == true) {
            strAuthorType = element.value;
        }
    }

    if (strAuthorType == 'All') {
        if (strPublisherType != 'Published') {
            AlertReturnFalse(strMessage);

            return false;
        }
    }

    return true;
}


///////////////////////////////////////////////////////////////////////////////////////////////////
// Description: Launch the FieldCode selector pop-up window.
function GoFieldCodeSelector(strActiveField) {
    newwindow = window.open(GetCalculatedUrl('EmailConsole/SelectFieldCodes.aspx') + '?blnIsValidFunction=true&blnByPassCheck=true&strActiveField=' + strActiveField, 'FieldCodeSelector', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=780,height=620');

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return true;
}


///////////////////////////////////////////////////////////////////////////////////////////////////
// Description: Launch the 'Show Default Managed Email Content' pop-up window.
function GoDefaultManagedEmailContentPreview(strManagedSystemEmailId) {
    newwindow = window.open(GetCalculatedUrl('EmailConsole/ViewManagedEmailContent.aspx') + '?blnIsValidFunction=true&blnByPassCheck=true&strManagedSystemEmailId=' + strManagedSystemEmailId, 'FieldCodeSelector', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=780,height=620');

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return true;
}


function GoCheckSectionEventDates(strSectionId) {
    newwindow = window.open(GetCalculatedUrl('Courseware/Classroom/Management/ClassroomCourseManageSections.aspx') + '?strSectionId=' + strSectionId, 'CheckSectionEventDates', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=no,width=780,height=620');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return true;
}


function insertAtCursor(myField, myValue) {
    //IE support
    if (document.selection) {
        myField.focus();

        sel = document.selection.createRange();
        sel.text = myValue;
    }
    //MOZILLA/NETSCAPE support
    else if (myField.selectionStart || myField.selectionStart == '0') {
        var startPos = myField.selectionStart;
        var endPos = myField.selectionEnd;

        myField.value = myField.value.substring(0, startPos)
		+ myValue
		+ myField.value.substring(endPos, myField.value.length);
    }
    else {
        myField.value += myValue;
    }
}


// Browser Detect  v2.1.6
// documentation: http://www.dithered.com/javascript/browser_detect/index.html
// license: http://creativecommons.org/licenses/by/1.0/
// code by Chris Nott (chris[at]dithered[dot]com)
function BrowserDetect() {
    var ua = navigator.userAgent.toLowerCase();

    // browser engine name
    this.isGecko = (ua.indexOf('gecko') != -1 && ua.indexOf('safari') == -1);
    this.isAppleWebKit = (ua.indexOf('applewebkit') != -1);

    // browser name
    this.isKonqueror = (ua.indexOf('konqueror') != -1);
    this.isSafari = (ua.indexOf('safari') != -1);
    this.isOmniweb = (ua.indexOf('omniweb') != -1);
    this.isOpera = (ua.indexOf('opera') != -1);
    this.isIcab = (ua.indexOf('icab') != -1);
    this.isAol = (ua.indexOf('aol') != -1);
    this.isIE = (ua.indexOf('msie') != -1 && !this.isOpera && (ua.indexOf('webtv') == -1));
    //this.isMozilla = (this.isGecko && ua.indexOf('gecko/') + 14 == ua.length);    
    this.isMozilla     = (this.isGecko && ua.indexOf('mozilla/') != -1);
    this.isFirebird = (ua.indexOf('firebird/') != -1);
    this.isNS = ((this.isGecko) ? (ua.indexOf('netscape') != -1) : ((ua.indexOf('mozilla') != -1) && !this.isOpera && !this.isSafari && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1)));

    // spoofing and compatible browsers
    this.isIECompatible = ((ua.indexOf('msie') != -1) && !this.isIE);
    this.isNSCompatible = ((ua.indexOf('mozilla') != -1) && !this.isNS && !this.isMozilla);

    // rendering engine versions
    this.geckoVersion = ((this.isGecko) ? ua.substring((ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14)) : -1);
    this.equivalentMozilla = ((this.isGecko) ? parseFloat(ua.substring(ua.indexOf('rv:') + 3)) : -1);
    this.appleWebKitVersion = ((this.isAppleWebKit) ? parseFloat(ua.substring(ua.indexOf('applewebkit/') + 12)) : -1);

    // browser version
    this.versionMinor = parseFloat(navigator.appVersion);

    // correct version number
    if (this.isGecko && !this.isMozilla) {
        this.versionMinor = parseFloat(ua.substring(ua.indexOf('/', ua.indexOf('gecko/') + 6) + 1));
    }
    else if (this.isMozilla) {
        //this.versionMinor = parseFloat(ua.substring(ua.indexOf('rv:') + 3));
        if (ua.indexOf('firefox/')!=-1)
            this.versionMinor = parseFloat( ua.substring( ua.indexOf('firefox/') + 8 ) );
        else if(ua.indexOf('thunderbird/')!=-1)
            this.versionMinor = parseFloat( ua.substring( ua.indexOf('thunderbird/') + 11 ) );
        else if(ua.indexOf('seamonkey/')!=-1)
            this.versionMinor = parseFloat( ua.substring( ua.indexOf('seamonkey/') + 9 ) );
        
    }
    else if (this.isIE && this.versionMinor >= 4) {
        this.versionMinor = parseFloat(ua.substring(ua.indexOf('msie ') + 5));
    }
    else if (this.isKonqueror) {
        this.versionMinor = parseFloat(ua.substring(ua.indexOf('konqueror/') + 10));
    }
    else if (this.isSafari) {
        this.versionMinor = parseFloat(ua.substring(ua.lastIndexOf('safari/') + 7));
    }
    else if (this.isOmniweb) {
        this.versionMinor = parseFloat(ua.substring(ua.lastIndexOf('omniweb/') + 8));
    }
    else if (this.isOpera) {
        this.versionMinor = parseFloat(ua.substring(ua.indexOf('opera') + 6));
    }
    else if (this.isIcab) {
        this.versionMinor = parseFloat(ua.substring(ua.indexOf('icab') + 5));
    }

    this.versionMajor = parseInt(this.versionMinor);

    // dom support
    this.isDOM1 = (document.getElementById);
    this.isDOM2Event = (document.addEventListener && document.removeEventListener);

    // css compatibility mode
    this.mode = document.compatMode ? document.compatMode : 'BackCompat';

    // platform
    this.isWin = (ua.indexOf('win') != -1);
    this.isWin32 = (this.isWin && (ua.indexOf('95') != -1 || ua.indexOf('98') != -1 || ua.indexOf('nt') != -1 || ua.indexOf('win32') != -1 || ua.indexOf('32bit') != -1 || ua.indexOf('xp') != -1));
    this.isMac = (ua.indexOf('mac') != -1);
    this.isUnix = (ua.indexOf('unix') != -1 || ua.indexOf('sunos') != -1 || ua.indexOf('bsd') != -1 || ua.indexOf('x11') != -1)
    this.isLinux = (ua.indexOf('linux') != -1);

    // specific browser shortcuts
    this.isNS4x = (this.isNS && this.versionMajor == 4);
    this.isNS40x = (this.isNS4x && this.versionMinor < 4.5);
    this.isNS47x = (this.isNS4x && this.versionMinor >= 4.7);
    this.isNS4up = (this.isNS && this.versionMinor >= 4);
    this.isNS6x = (this.isNS && this.versionMajor == 6);
    this.isNS6up = (this.isNS && this.versionMajor >= 6);
    this.isNS7x = (this.isNS && this.versionMajor == 7);
    this.isNS7up = (this.isNS && this.versionMajor >= 7);

    this.isIE4x = (this.isIE && this.versionMajor == 4);
    this.isIE4up = (this.isIE && this.versionMajor >= 4);
    this.isIE5x = (this.isIE && this.versionMajor == 5);
    this.isIE55 = (this.isIE && this.versionMinor == 5.5);
    this.isIE5up = (this.isIE && this.versionMajor >= 5);
    this.isIE6x = (this.isIE && this.versionMajor == 6);
    this.isIE6up = (this.isIE && this.versionMajor >= 6);

    this.isIE4xMac = (this.isIE4x && this.isMac);
}

var browser = new BrowserDetect();

function MM_findObj(n, d) { //v4.01
    var p, i, x; if (!d) d = document; if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p + 1)].document; n = n.substring(0, p);
    }
    if (!(x = d[n]) && d.all) x = d.all[n]; for (i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++) x = MM_findObj(n, d.layers[i].document);
    if (!x && d.getElementById) x = d.getElementById(n); return x;
}


function MM_showHideLayers() { //v6.0
    var i, p, v, obj, args = MM_showHideLayers.arguments;
    for (i = 0; i < (args.length - 2); i += 3) if ((obj = MM_findObj(args[i])) != null) {
        v = args[i + 2];
        if (obj.style) { obj = obj.style; v = (v == 'show') ? 'visible' : (v == 'hide') ? 'hidden' : v; }
        obj.visibility = v;
    }
}


/*This function unchecks the AllOrganization checkbox on the BatchEnrollment Page, this function is called when 
The any organization is checked in the LMS Organization tree*/
function BatchEnrollmentAllOrganizations(treeId, nodeId, button) {
    var objForm = document.BaseForm;
    if (true == button) {
        for (i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];
            if (element.type == 'checkbox' && element.name.indexOf('CHECKBOX_ALLORGANIZATIONS') != -1) {
                element.checked = false;
                break;
            }
        }
    }
}

var intSelectedCheckbox = -1;
var blnCheckSingleCheckBox = true;
var intCurrentNode = 0;

function SelectSingleCheckBox(treeId, nodeId, button) {
    var objForm = document.BaseForm;
    var objTree = igtree_getTreeById(treeId);
    var objNode = igtree_getNodeById(nodeId);
    var strNodeTag = objNode.getTag();

    var objNodes = objTree.getNodes();

    //	for (var i=intCurrentNode;i<objNodes.length;i++) 
    //	{
    //		var strNextNodeTag = objNodes[i].getTag();
    //		alert (strNextNodeTag);
    //	}
    //		objTree.CancelPostBack = true;

    //	if (blnCheckSingleCheckBox) 
    //	{	
    //		for (var i=intCurrentNode;i<objNodes.length;i++) 
    //		{
    //			var strNextNodeTag = objNodes[i].getTag();
    //			if (strNextNodeTag != strNodeTag) 
    //			{
    //				intCurrentNode = i;
    //				objNodes[i].setChecked(false);
    //			} 
    //		}

    //		if (intCurrentNode == objNodes.length) 
    //		{
    //			blnCheckSingleCheckBox = false;
    //			intCurrentNode = 0;
    //		}
    //	}
    //	else 
    //	{
    //		objNode.setChecked = true;
    //	}
}


/*
This function enables/disables image height / width fields when upload image is selected (not selected) (Test Matching Question - CHOICE)
*/
function ChoiceImageHeightWidthStateHandler() {
    var objForm = document.BaseForm;
    var chkElement = null;
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'file' && element.name.indexOf('QSTNCHC_CHOICE_IMAGE') != -1) {
            chkElement = element;
            break;
        }
    }
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'text') {
            if (element.name.indexOf('QSTNCHC_CHOICE_ALT_TEXT') != -1
				|| element.name.indexOf('QSTNCHC_CHOICE_IMAGE_HEIGHT') != -1
				|| element.name.indexOf('QSTNCHC_CHOICE_IMAGE_WIDTH') != -1)
            // Do not include variables in Grid (name of which is TestQuestionChoices)
                if (element.name.indexOf('TestQuestionChoices') == -1) {
                if (chkElement.value.length > 0) {
                    element.disabled = false;
                }
                else {
                    element.disabled = true;
                }
            }
        }
    }
}


/*
This function enables/disables image height / width fields when upload image is selected (not selected) (Test Matching Question - MATCH)
*/
function MatchImageHeightWidthStateHandler() {
    var objForm = document.BaseForm;
    var chkElement = null;
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'file' && element.name.indexOf('QSTNCHC_MATCH_IMAGE') != -1) {
            chkElement = element;
            break;
        }
    }
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if (element.type == 'text') {
            if (element.name.indexOf('QSTNCHC_MATCH_ALT_TEXT') != -1
				|| element.name.indexOf('QSTNCHC_MATCH_IMAGE_HEIGHT') != -1
				|| element.name.indexOf('QSTNCHC_MATCH_IMAGE_WIDTH') != -1)
            // Do not include variables in Grid (name of which is TestQuestionChoices)
                if (element.name.indexOf('TestQuestionChoices') == -1) {
                if (chkElement.value.length > 0) {

                    element.disabled = false;
                }
                else {
                    element.disabled = true;
                }
            }
        }
    }
}


/*This function handles the OnChange event of the Section Status DDS on the Batch Enrollment page.
When value is Date Range, then date controls are enabled otherwise they are disabled and values are reset to blank.
*/
function BatchEnrollmentSectionSearchStatusHandler() {
    var objForm = document.BaseForm;

    if (objForm.elements.length > 100) {
        return;
    }

    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' && element.name.indexOf('SectionStatus') != -1) {
            var blnEnabled = true;
            if (element.value.toUpperCase() == 'PAST') {
                blnEnabled = false;
            }
            for (j = 0; j < objForm.elements.length; j++) {
                var element = objForm.elements[j];

                if (element.type == 'select-one') {
                    if (element.name.indexOf('OBJ_ACTIVE_START_DATE||MONTH') != -1 ||
						element.name.indexOf('OBJ_ACTIVE_START_DATE||DAY') != -1 ||
						element.name.indexOf('OBJ_ACTIVE_END_DATE||MONTH') != -1 ||
						element.name.indexOf('OBJ_ACTIVE_END_DATE||DAY') != -1) {
                        element.disabled = blnEnabled;
                        if (blnEnabled) {
                            element.value = "";
                        }
                    }
                }
                else {
                    if (element.type == 'text' &&
						(
						element.name.indexOf('OBJ_ACTIVE_START_DATE||YEAR') != -1 ||
						element.name.indexOf('OBJ_ACTIVE_END_DATE||YEAR') != -1
						)) {
                        element.disabled = blnEnabled;
                        if (blnEnabled) {
                            element.value = "";
                        }
                    }
                }
            }
            break;
        }
    }
}


/*This function handles the OnChange event of the Status DDS on the Course Sections page.
When value is Date Range, then date controls are enabled otherwise they are disabled and values are reset to blank.
*/
function SectionSearchStatusHandler() {
    var objForm = document.BaseForm;

    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' && element.name.indexOf('SectionStatus') != -1) {
            var blnEnabled = true;

            if (element.value.toUpperCase() == 'RANGE') {
                blnEnabled = false;
            }

            for (j = 0; j < objForm.elements.length; j++) {
                var element = objForm.elements[j];

                if (element.type == 'select-one') {
                    if (element.name.indexOf('OBJ_ACTIVE_START_DATE||MONTH') != -1 ||
						element.name.indexOf('OBJ_ACTIVE_START_DATE||DAY') != -1 ||
						element.name.indexOf('OBJ_ACTIVE_END_DATE||MONTH') != -1 ||
						element.name.indexOf('OBJ_ACTIVE_END_DATE||DAY') != -1) {
                        element.disabled = blnEnabled;

                        if (blnEnabled) {
                            element.value = "";
                        }
                    }
                }
                else {
                    if (element.type == 'text' &&
						(
						element.name.indexOf('OBJ_ACTIVE_START_DATE||YEAR') != -1 ||
						element.name.indexOf('OBJ_ACTIVE_END_DATE||YEAR') != -1
						)) {
                        element.disabled = blnEnabled;

                        if (blnEnabled) {
                            element.value = "";
                        }
                    }
                }
            }

            break;
        }
    }
}


function ValidateRunReport(intMaxHeadings, strMaxHeadingsMessage, strSkillsGapMessage) {
    var objForm = document.BaseForm;
    var intCounter = 0;

    intMaxHeadings = eval(intMaxHeadings);

    for (var i = 0; i < objForm.elements.length; i++) {
        var objElement = objForm.elements[i];

        if ((objElement.name.indexOf('strOptionalFields') != -1) && (objElement.checked)) {
            intCounter++;
        }
        if (objElement.type == 'select-one' && objElement.name.indexOf('strSkillsGapOperator') != -1) {
            var strSkillsGapOperator = objElement.value;
        }
        if (objElement.type == 'text' && objElement.name.indexOf('strSkillsGapValue') != -1) {
            var strSkillsGapValue = objElement.value;
        }
    }

    if (intCounter > intMaxHeadings) {
        alert(strMaxHeadingsMessage.replace('{intHeadingsCount}', intCounter.toString()));
        return false;
    }
    if ((strSkillsGapOperator == '') && (strSkillsGapValue != '')) {
        alert(strSkillsGapMessage);
        return false;
    }

    return true;
}


function CheckAllDataGridCheckBoxes(strDataGrid) {
    var objForm = document.BaseForm;
    var objElement;
    var strName;
    var blnCheckAll = true;

    for (var i = 0; i < objForm.elements.length; i++) {
        objElement = objForm.elements[i];
        strName = objElement.name;

        if (strName == (strDataGrid + "_SelectAll")) {
            if (objElement.checked) {
                blnCheckAll = true;
            }
            else {
                blnCheckAll = false;
            }
        }
    }

    for (var i = 0; i < objForm.elements.length; i++) {
        objElement = objForm.elements[i];

        if (objElement.type == 'checkbox') {
            strName = objElement.name;

            if (strName.indexOf(strDataGrid) != -1) {
                objElement.checked = blnCheckAll;

            }
        }

    }

    return true;
}

function ToggleDiv(strDivID) {
    if (document.getElementById) {
        // this is the way the standards work
        var style2 = document.getElementById(strDivID).style;
        var butSelect = document.getElementById(strDivID.replace('Div_', 'But_'));
    }
    else if (document.all) {
        // this is the way old msie versions work
        var style2 = document.all[strDivID].style;
        var butSelect = document.all[strDivID.replace('Div_', 'But_')];
        style2.display = style2.display ? "" : "block";
    }
    else if (document.layers) {
        // this is the way nn4 works
        var style2 = document.layers[strDivID].style;
        var butSelect = document.layers[strDivID.replace('Div_', 'But_')];
        style2.display = style2.display ? "" : "block";
    }

    if (style2.display == 'none') {
        style2.display = 'block';
        butSelect.src = butSelect.attributes["MinusImage"].value;
    }
    else {
        style2.display = 'none';
        butSelect.src = butSelect.attributes["PlusImage"].value;
    }
}

function HideFeedbacks() {
    var objReturnFeedback = document.getElementById('ReturnFeedback');
    if (objReturnFeedback != null) {
        objReturnFeedback.innerHTML = '';
    }

    var objNegativeFeedback = document.getElementById('NegativeFeedback');
    if (objNegativeFeedback != null) {
        objNegativeFeedback.innerHTML = '';
    }
}

/////////////////////////////////////////////////////////////////////////////
//  Function: ToggleTOC()
//  Parameters: N/A
//  Returns: N/A
//  Description: Toggles the TOC frame for SCORM 1.2 & 2004 content.
/////////////////////////////////////////////////////////////////////////////
function ToggleTOC()
{
    var defaultClosedTOCFrameSize = m_scormDefaultClosedTOCFramesetDimensions.split(",", 1);
    var tocFrameSize = $("#tocFrame", top.document.getElementsByTagName("frameset")).width();
    
//    alert("ToggleTOC()"
//          + "\n\ttocFrameSize = " + tocFrameSize
//          + "\n\tdefaultClosedTOCFrameSize = " + defaultClosedTOCFrameSize);
    
    if (tocFrameSize > defaultClosedTOCFrameSize)
    {
        HideTOC();        
    }
    else
    {
        ShowTOC();
    }

//    $("#tocFrame", parent.window.document.getElementsByTagName("frameset")).toggle(500);
}

/////////////////////////////////////////////////////////////////////////////
//  Function: ShowTOC()
//  Parameters: N/A
//  Returns: N/A
//  Description: Shows the TOC frame for SCORM 1.2 & 2004 content.
/////////////////////////////////////////////////////////////////////////////
function ShowTOC()
{
//    alert("ShowTOC()" +
//          "\n\tparent.window.document.getElementsByTagName(\"frameset\").item(1).cols = " + parent.window.document.getElementsByTagName("frameset").item(1).cols
//         + "\n\tm_scormLastTOCFramesetCols = " + m_scormLastTOCFramesetCols);     //  CAS 07-06-2010 *** Diag.

    if (!m_scormPrevContButtonClicked) 
    {
        if (m_scormTOCFrameToggleDelay > 0)
        {
            m_scormTOCFrameSizeTracker = $("#tocFrame", top.document.getElementsByTagName("frameset")).width();
            m_scormTOCFrameSizeTrackerStep = CalcScormTOCFrameSizeTrackerStep();

        //        alert("ShowTOC()"
        //                + "\n\tm_scormLastTOCFramesetCols = " + m_scormLastTOCFramesetCols
        //                + "\n\tm_scormTOCFrameSizeTracker = " + m_scormTOCFrameSizeTracker
        //                + "\n\tm_scormTOCFrameSizeTrackerStep = " + m_scormTOCFrameSizeTrackerStep
        //                + "\n\tm_scormTOCFrameToggleDelay = " + m_scormTOCFrameToggleDelay
        //                );
            
            setTimeout(ToggleTOCIncrement, 1);
        }
        else
        {
            if (m_scormLastTOCFramesetCols == "undefined") 
            {
                top.document.getElementsByTagName("frameset").item(1).cols = m_scormDefaultOpenTOCFramesetDimensions;
            }
            else
            {
                top.document.getElementsByTagName("frameset").item(1).cols = m_scormLastTOCFramesetCols;
            }
        }        
        
    //    $("#tocFrame", parent.window.document.getElementsByTagName("frameset")).show(500);
    }

    m_scormPrevContButtonClicked = false;
}

/////////////////////////////////////////////////////////////////////////////
//  Function: HideTOC()
//  Parameters: N/A
//  Returns: N/A
//  Description: Hides the TOC frame for SCORM 1.2 & 2004 content.
/////////////////////////////////////////////////////////////////////////////
function HideTOC()
{
//    alert("HideTOC()"
//         + "\n\ttop.document.getElementsByTagName(\"frameset\").item(1).cols = " + top.document.getElementsByTagName("frameset").item(1).cols
//         + "\n\tm_scormLastTOCFramesetCols = " + m_scormLastTOCFramesetCols
//         + "\n\tscormTOCFrameSizeChanged = " + scormTOCFrameSizeChanged);    

    if (!m_scormPrevContButtonClicked) 
    {
        var tocFrameSize = $("#tocFrame", top.document.getElementsByTagName("frameset")).width();
        var contentFrameSize = "*";

        m_scormLastTOCFramesetCols = tocFrameSize + "," + contentFrameSize;

    //    alert("HideTOC()"
    //            + "\n\tm_scormLastTOCFramesetCols = " + m_scormLastTOCFramesetCols
    //            + "\n\tscormTOCFrameSizeChanged = " + scormTOCFrameSizeChanged);
        
        if (m_scormTOCFrameToggleDelay > 0)
        {
            m_scormTOCFrameSizeTracker = tocFrameSize;
            m_scormTOCFrameSizeTrackerStep = -CalcScormTOCFrameSizeTrackerStep();

    //        alert("HideTOC()"
    //                + "\n\tm_scormLastTOCFramesetCols = " + m_scormLastTOCFramesetCols
    //                + "\n\tm_scormTOCFrameSizeTracker = " + m_scormTOCFrameSizeTracker
    //                + "\n\tm_scormTOCFrameSizeTrackerStep = " + m_scormTOCFrameSizeTrackerStep
    //                + "\n\tm_scormTOCFrameToggleDelay = " + m_scormTOCFrameToggleDelay
    //                );
            
            setTimeout(ToggleTOCIncrement, 1);
        }
        else
        {
           top.document.getElementsByTagName("frameset").item(1).cols = m_scormDefaultClosedTOCFramesetDimensions;
        }

    //    $("#tocFrame", parent.window.document.getElementsByTagName("frameset")).hide(500);
    }
    
    m_scormPrevContButtonClicked = false;
}

/////////////////////////////////////////////////////////////////////////////
//  Function: ToggleTOCIncrement()
//  Parameters: N/A
//  Returns: N/A
//  Description: Shows the Page Header frame for courseware (SCORM 1.2 & 2004).
/////////////////////////////////////////////////////////////////////////////
function ToggleTOCIncrement()
{
    var defaultOpenTOCFrameSize = m_scormDefaultOpenTOCFramesetDimensions.split(",", 1);
    var defaultClosedTOCFrameSize = m_scormDefaultClosedTOCFramesetDimensions.split(",", 1);
    var lastTOCFrameSize = m_scormLastTOCFramesetCols.split(",", 1);
    
    if ((m_scormTOCFrameSizeTrackerStep < 0 && m_scormTOCFrameSizeTracker > 0)                                                                      ||
        (m_scormLastTOCFramesetCols != "undefined" && m_scormTOCFrameSizeTrackerStep > 0 && m_scormTOCFrameSizeTracker < lastTOCFrameSize)          || 
        (m_scormLastTOCFramesetCols == "undefined" && m_scormTOCFrameSizeTrackerStep > 0 && m_scormTOCFrameSizeTracker < defaultOpenTOCFrameSize)   ||
        (m_scormLastTOCFramesetCols == "undefined" && m_scormTOCFrameSizeTrackerStep < 0 && m_scormTOCFrameSizeTracker > defaultClosedTOCFrameSize)   )
    {
        var contentFrameSize = "*";
        
        m_scormTOCFrameSizeTracker += m_scormTOCFrameSizeTrackerStep;
    
        top.document.getElementsByTagName("frameset").item(1).cols = m_scormTOCFrameSizeTracker + "," + contentFrameSize; 
        
        setTimeout(ToggleTOCIncrement, 1);
    }
    
//    alert("ToggleTOCIncrement()"
//            + "\n\tm_scormTOCFrameSizeTracker = " +  m_scormTOCFrameSizeTracker);
}

/////////////////////////////////////////////////////////////////////////////
//  Function: CalcScormTOCFrameSizeTrackerStep()
//  Parameters: N/A
//  Returns: Increment by which to grow/shrink the TOC frame based on set
//           time duration in m_scormTOCFrameToggleDelay;
//  Description: Calculates the increment by which the TOC frame will be 
//               shrunk or expanded for SCORM 1.2 & 2004 content player.
/////////////////////////////////////////////////////////////////////////////
function CalcScormTOCFrameSizeTrackerStep()
{
    var tocFrameSizeTrackerStep = 0;
    
    if (m_scormLastTOCFramesetCols == "undefined") 
    {
        tocFrameSizeTrackerStep = m_scormDefaultOpenTOCFramesetDimensions.split(",", 1) / m_scormTOCFrameToggleDelay; 
    }
    else
    {
        var lastTOCFrameSize = m_scormLastTOCFramesetCols.split(",", 1);
        
        tocFrameSizeTrackerStep = lastTOCFrameSize / m_scormTOCFrameToggleDelay;
    }

//    alert("CalcScormTOCFrameSizeTrackerStep()"
//            + "\n\ttocFrameSizeTrackerStep = " + tocFrameSizeTrackerStep
//            + "\n\tm_scormDefaultOpenTOCFramesetDimensions.split(\",\", 1) = " + m_scormDefaultOpenTOCFramesetDimensions.split(",", 1)
//            + "\n\tm_scormLastTOCFramesetCols = " + m_scormLastTOCFramesetCols
//            + "\n\tm_scormTOCFrameToggleDelay = " + m_scormTOCFrameToggleDelay);
    
    return tocFrameSizeTrackerStep;
}

/////////////////////////////////////////////////////////////////////////////
//  Function: ShowPageHeader()
//  Parameters: N/A
//  Returns: false
//  Description: Shows the Page Header frame for courseware (SCORM 1.2 & 2004).
/////////////////////////////////////////////////////////////////////////////
function ShowPageHeader()
{
//    $("#Navigation", parent.window.document.getElementsByTagName("frameset")).hide();

   top.document.getElementsByTagName("frameset").item(0).rows = "0,0,0,50,*";
    
//    $("#Navigation", parent.window.document.getElementsByTagName("frameset")).slideDown();    
//    $("#Navigation", parent.window.document.getElementsByTagName("frameset")).fadeIn();    
//    $("#Navigation", parent.window.document.getElementsByTagName("frameset")).show(400);    
}

/////////////////////////////////////////////////////////////////////////////
//  Function: HidePageHeader()
//  Parameters: N/A
//  Returns: false
//  Description: Hides the Page Header frame for courseware (SCORM 1.2 & 2004).
/////////////////////////////////////////////////////////////////////////////
function HidePageHeader()
{
//    $("#Navigation", parent.window.document.getElementsByTagName("frameset")).fadeOut();
//    $("#Navigation", parent.window.document.getElementsByTagName("frameset")).hide();
    
    top.document.getElementsByTagName("frameset").item(0).rows = "0,0,0,0,*";
}

/////////////////////////////////////////////////////////////////////////////
//  Function: SwapImage()
//  Parameters: N/A
//  Returns: N/A
//  Description: Swaps button images of nav buttons (SCORM 1.2 & 2004).
/////////////////////////////////////////////////////////////////////////////
var strTransparentGif = '/Skins/Graphics/transparentpixel.gif';
function SwapImage()
{ //v3.0
    var i, j = 0, x, a = SwapImage.arguments;

    document.MM_sr = new Array;

    for (i = 0; i < (a.length - 2); i += 3)
    {
        x = FindObjectByName(a[i], top.Navigation.document);
        
        if (x != null)
        {
            document.MM_sr[j++] = x;
        
            switch (a[i + 2])
            {
                case "strPreviousLink":
                    strLink = top.Navigation.document.GraphicsDefinition.strPreviousLink.value;
                    break;

                case "strNextLink":
                    strLink = top.Navigation.document.GraphicsDefinition.strNextLink.value;
                    break;

                case "strShowHideMenuLink":
                    strLink = top.Navigation.document.GraphicsDefinition.strShowHideMenuLink.value;
                    break;

                case "strAbandonLink":
                    strLink = top.Navigation.document.GraphicsDefinition.strAbandonLink.value;
                    break;

                case "strAbandonAllLink":
                    strLink = top.Navigation.document.GraphicsDefinition.strAbandonAllLink.value;
                    break;

                case "strSuspendLink":
                    strLink = top.Navigation.document.GraphicsDefinition.strSuspendLink.value;
                    break;

                case "strSuspendAllLink":
                    strLink = top.Navigation.document.GraphicsDefinition.strSuspendAllLink.value;
                    break;

                case "strExitLink":
                    strLink = top.Navigation.document.GraphicsDefinition.strExitLink.value;
                    break;

                case "strExitAllLink":
                    strLink = top.Navigation.document.GraphicsDefinition.strExitAllLink.value;
                    break;

                default:
                    strLink = a[i + 2];
                    break;
            }

            x.oSrc = x.src;
            x.src = strLink;
        }
    }
}

/////////////////////////////////////////////////////////////////////////////
//  Function: FindObjectByName()
//  Parameters: strId - id of the object to find; objForm - form to find the 
//              object on.
//  Returns: Object w/id passed as strId.
//  Description: Finds an object w/passed id on the passed form.
/////////////////////////////////////////////////////////////////////////////
function FindObjectByName(strId, objForm)
{
    var x = objForm.getElementById(strId);

    return x;
}

function changeElementAttribute()
{
    var objElement = FindObjectByName(changeElementAttribute.arguments[0], document);
    
    if (objElement != null)
    {
        //		alert (changeElementAttribute.arguments[1]);
        var objAttribute = objElement.attributes["src"];
    
        objAttribute.value = changeElementAttribute.arguments[1];
    }
}

/////////////////////////////////////////////////////////////////////////////
//  Function: ChangeImages()
//  Parameters: Undeclared (accessible through ChangeImages.arguments[] array. 
//              par0 - 
//              par1 -  
//              par2 -      
//  Returns: true
//  Description: ???
/////////////////////////////////////////////////////////////////////////////
function ChangeImages()
{
//    var currentDocument = ChangeImages.arguments[ 2];
//    var currentDocument = top.Navigation;

//    if (currentDocument != null)
//    {
//        if (document.images)
//            alert("ChangeImages()"
//                    + "\n\ttop.Navigation.images = " + top.Navigation.images
//                    + "\n\tChangeImages.arguments.length = " + ChangeImages.arguments.length
//                    + "\n\tChangeImages.arguments[0] = " + ChangeImages.arguments[0]
//                    + "\n\tChangeImages.arguments[1] = " + ChangeImages.arguments[1]
//                    + "\n\ttop.Navigation[ChangeImages.arguments[" + i + "]].src = " + top.Navigation[ChangeImages.arguments[i]].src
//                    + "\n\tChangeImages.arguments[" + i + " + 1] = " + ChangeImages.arguments[i + 1]
//                   );
            
        if (top.Navigation.document.images)
        {        
            for (var i = 0; i < ChangeImages.arguments.length; i += 2)
            {
//            alert("ChangeImages()"
//                    + "\n\tChangeImages.arguments.length = " + ChangeImages.arguments.length
//                    + "\n\tChangeImages.arguments[0] = " + ChangeImages.arguments[0]
//                    + "\n\tChangeImages.arguments[1] = " + ChangeImages.arguments[1]
//                    + "\n\ttop.Navigation.document[ChangeImages.arguments[" + i + "]].src = " + top.Navigation[ChangeImages.arguments[i]].src
//                    + "\n\tChangeImages.arguments[" + i + " + 1] = " + ChangeImages.arguments[i + 1]
//                   );

//                document.BaseForm[ChangeImages.arguments[i]].src = ChangeImages.arguments[i + 1];
                top.Navigation.document.BaseForm[ChangeImages.arguments[i]].src = ChangeImages.arguments[i + 1];
            }

//            currentDocument.BaseForm[ChangeImages.arguments[ 0]].src = ChangeImages.arguments[ 1];
        }
//    }
    
    return true;
}

// DGAJAX : Not used
function DGAjax(strDisplayGridId, strPage, strCurrentSort) {
    blnDGAjaxInProgress = true;

    var strDivID = "DisplayGrid_" + strDisplayGridId;
    var style2;
    if (document.getElementById) {
        // this is the way the standards work
        style2 = document.getElementById(strDivID);
    }
    else if (document.all) {
        // this is the way old msie versions work
        style2 = document.all[strDivID];
    }
    else if (document.layers) {
        // this is the way nn4 works
        style2 = document.layers[strDivID];
    }

    var objXMLHTTPRequest = CreateXMLHTTPRequest();

    objXMLHTTPRequest.open("POST", GetCalculatedUrl("DGAjax.aspx"), false);
    //objXMLHTTPRequest.open ("POST", "/KView/CustomCodeBehind/Test1.asp", false);

    var strParams = "strDisplayGridId=" + strDisplayGridId + "&strPageId=" + strPage + "&strCurrentSort=" + strCurrentSort;

    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    objXMLHTTPRequest.send(strParams);

    var strWindowFeatures = objXMLHTTPRequest.responseText;

    //alert(strWindowFeatures);

    strWindowFeatures = strWindowFeatures.substring(strWindowFeatures.indexOf('<table'));
    strWindowFeatures = strWindowFeatures.substring(0, strWindowFeatures.lastIndexOf('</table>') + 8);

    strWindowFeatures = strWindowFeatures.replace(/ id="/g, ' id="TabMenu_ML_BASE_TAB_Search_');

    //alert(strWindowFeatures);

    style2.innerHTML = strWindowFeatures;

    blnDGAjaxInProgress = false;
}


///////////////////////////////////////////////////////////////////////////////////////////////////
// Description: Launch Text value selector to be used in menu hiearchy creation.
function GoSelectTextValue(strActiveField, strTextItemId) {
    newwindow = window.open(GetCalculatedUrl('Utilities/SelectTextItem.aspx') + '?blnIsValidFunction=true&blnByPassCheck=true&strActiveField=' + strActiveField, 'TextValueSelector', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=780,height=620');

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return true;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
// Description: Launch Text value selector to be used in menu hiearchy creation.
function GoLocalizedTextInput(strActiveField, strTextItemId) {
    var objForm = document.BaseForm;
    var strValueId = "";
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var name = element.name;

        if (name.indexOf(strTextItemId) != -1) {
            strValueId = (element.value);
            break;
        }
    }

    newwindow = window.open(GetCalculatedUrl('Utilities/AddDomainTextItem.aspx') + '?blnIsValidFunction=true&blnByPassCheck=true&strActiveField=' + strActiveField + '&strTextItemId=' + strTextItemId + '&strDomainTextId=' + escape(strValueId), 'TextValueInput', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=780,height=620');

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return true;
}

function ContentSharingTypeHandler() {
    var strURL = location.href;
    if (strURL.toLowerCase().indexOf('domaincontentsharing.aspx') == -1) {
        return;
    }
    var objForm = document.BaseForm;
    var strValueId = "";
    var blnAction = -1;
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var name = element.name;
        if ('radio' == element.type && name.indexOf("SHARED") != -1) {
            strValueId = element.value;
            if (strValueId == 'CONTENT_NOT_SHARED') {
                if (element.checked) // Not shared
                {
                    blnAction = 0;
                }
            }
            if (strValueId == 'CONTENT_SHARED' && element.checked && element.disabled) {
                blnAction = 1;
            }
        }
    }

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var name = element.name;

        if ('checkbox' == element.type && (name.indexOf("ContentShared") != -1 || name.indexOf("ContentPushedOptional") != -1 || name.indexOf("ContentPushedRequired") != -1)) {
            if (blnAction == 0) {
                element.checked = false;
                element.disabled = true;
            }
            else {
                if (blnAction == 1) // Automatically shared content items
                {
                    element.disabled = true;
                }
                else {
                    element.disabled = false;
                }
            }
        }
    }
}

function ContentShareCheckBoxHandler(strID) {
    var objForm = document.BaseForm;
    var v = document.getElementById(strID);
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var name = element.name;
        if (name.indexOf(strID) != -1) {
            v = element;
            break;
        }
    }
    if (v.name.indexOf('ML.BASE.AllDomains') != -1) {
        for (i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];
            var name = element.name;
            if (name.indexOf("ContentShared") != -1) {
                element.checked = v.checked;
            }
            if (v.checked) {
                if (element.name.indexOf('ContentPushedRequired') != -1 || element.name.indexOf('ContentPushedOptional') != -1) {
                    element.checked = false;
                }
            }
        }
    }
    else {
        if (v.checked) {
            for (i = 0; i < objForm.elements.length; i++) {
                var element = objForm.elements[i];
                var name = element.name;
                if (name.indexOf(v.name.replace('ContentShared', 'ContentPushedOptional')) != -1 ||
  	               name.indexOf(v.name.replace('ContentShared', 'ContentPushedRequired')) != -1) {
                    element.checked = false;
                }
            }
        }
    }
}

function ContentPushRequireCheckBoxHandler(strID) {
    var objForm = document.BaseForm;
    var v = document.getElementById(strID);
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var name = element.name;
        if (name.indexOf(strID) != -1) {
            v = element;
            break;
        }
    }
    if (v.checked) {
        for (i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];
            var name = element.name;
            if (name.indexOf(v.name.replace('ContentPushedRequired', 'ContentPushedOptional')) != -1 ||
  	           name.indexOf(v.name.replace('ContentPushedRequired', 'ContentShared')) != -1) {
                element.checked = false;
            }
        }
    }
}

function ContentPushOptionalCheckBoxHandler(strID) {
    var objForm = document.BaseForm;
    var v = document.getElementById(strID);
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var name = element.name;
        if (name.indexOf(strID) != -1) {
            v = element;
            break;
        }
    }
    if (v.checked) {
        for (i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];
            var name = element.name;
            if (name.indexOf(v.name.replace('ContentPushedOptional', 'ContentPushedRequired')) != -1 ||
  	           name.indexOf(v.name.replace('ContentPushedOptional', 'ContentShared')) != -1) {
                element.checked = false;
            }
        }
    }
}

function NodeCheckedEvent(treeId, nodeId, button) {
    var objTree = igtree_getTreeById(treeId);
    var objNode = igtree_getNodeById(nodeId);
    var strNodeTag = objNode.getTag();

    var strCurrentValue = document.BaseForm.CHECK_TRACKING.value;

    document.BaseForm.CHECK_TRACKING.value = strCurrentValue + '|' + (strNodeTag) + '&' + objNode.getChecked();
}

function ValidateAndConfirmSurveyPublish(strInvalidMessage, strConfirmationMessage) {
    var objForm = document.BaseForm;
    var blnInvalidSurvey = false;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        //check to see if the SURVEY has a valid structure and can be published. 
        if (element.name == 'INVALID_SURVEY' && element.value == 'T') {
            blnInvalidSurvey = true;
            break;
        }
    }

    if (blnInvalidSurvey) {
        alert(strInvalidMessage);
        return false;
    }
    else {
        return ConfirmClick(strConfirmationMessage);
    }
}

function ValidateAndConfirmDuplicateCheckBoxSelect(TheForm, strPrefix, strType, strConfirmationMessage) {
    var intCheckbox;
    var strString = '';
    var blnDuplicate = false;

    for (var i = 0; i < TheForm.elements.length; i++) {
        var element = TheForm.elements[i];
        var strElementName;
        strElementName = element.name;

        if (element.type == 'checkbox' && strElementName.indexOf(strPrefix) >= 0) {
            if (element.checked) {
                //get the ID associated with the checkbox    
                var strID = strElementName.substr(strElementName.lastIndexOf("_") + 1);
                //check to see if there is a duplicate checkbox
                if (strString.indexOf(strID) >= 0) {
                    blnDuplicate = true;
                    break;
                }
                strString += strID + '|';
            }
        }
    }

    if (blnDuplicate) {
        if (strType == 'alert') {
            alert(strConfirmationMessage);
            return false;
        }
        else {
            return ConfirmClick(strConfirmationMessage);
        }
    }

    return true;
}

function NavigateFromTreeNode(treeId, nodeId, button) {
    var objTree = igtree_getTreeById(treeId);

    var objNode = igtree_getNodeById(nodeId);
    var strNodeTag = objNode.getTag();

    var strVars = strNodeTag.split('?');
    var strLaunchLink = strVars[0];
    var strBreadCrumb = strVars[1];

    if (strLaunchLink.indexOf('GoAboutLMS') == -1 && strLaunchLink.indexOf('GoGlossary') == -1 && strLaunchLink.indexOf('GoPersonalDashboards') == -1) {
        NavigateFromStepMenu(strBreadCrumb, strLaunchLink);
    }
    else {
        eval(strLaunchLink);
    }
    objTree.CancelPostBack = true;
}


function NavigateFromStepMenu(strBreadCrumb, strItemUrl) {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();
    objXMLHTTPRequest.open("POST", GetCalculatedUrl('Utilities/AJAXUtilities.aspx'), false);

    var strParams = "strCall=RemoveStateObjectById&strStateObjectId=IDTable";
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send(strParams);
    
    objXMLHTTPRequest.open("POST", GetCalculatedUrl('Utilities/AJAXUtilities.aspx'), false);
    strParams = "strCall=SetStateObjectById&strStateObjectId=ValidateNavigation&strStateObjectValue=true";
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send(strParams);
    
    objXMLHTTPRequest.open("POST", GetCalculatedUrl('Utilities/MenuNavigationEvent.aspx'), false);
    strParams = "strUrl=" + escape(strItemUrl) + "&strBreadCrumb=" + escape(strBreadCrumb);
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send(strParams);

    var strCalculatedUrl = objXMLHTTPRequest.responseText;
    self.location.href = strCalculatedUrl;
    return false;
}

var menuids = ["treemenu1"] //Enter id(s) of TopNav UL menus, separated by commas

function buildsubmenus_horizontal() {
    for (var i = 0; i < menuids.length; i++) {
        var ultags = "";
        if (document.getElementById(menuids[i]) != null) {
            var ultags = document.getElementById(menuids[i]).getElementsByTagName("ul")
        }
        for (var t = 0; t < ultags.length; t++) {
            if (ultags[t].parentNode.parentNode.id == menuids[i]) { //if this is a first level submenu
                ultags[t].style.top = ultags[t].parentNode.offsetHeight + "px" //dynamically position first level submenus to be height of main menu item
                ultags[t].parentNode.getElementsByTagName("a")[0].className = "mainfoldericon"
            }
            else { //else if this is a sub level menu (ul)
                ultags[t].style.left = ultags[t - 1].getElementsByTagName("a")[0].offsetWidth + "px" //position menu to the right of menu item that activated it
                ultags[t].parentNode.getElementsByTagName("a")[0].className = "subfoldericon"
            }
            ultags[t].parentNode.onmouseover = function() {
                this.getElementsByTagName("ul")[0].style.visibility = "visible"
            }
            ultags[t].parentNode.onmouseout = function() {
                this.getElementsByTagName("ul")[0].style.visibility = "hidden"
            }
        }
    }
}

if (window.addEventListener) {
    window.addEventListener("load", buildsubmenus_horizontal, false);
}
else {
    if (window.attachEvent) {
        window.attachEvent("onload", buildsubmenus_horizontal);
    }
}

function AICCAUUploadFileValidation(source, arg) {
    var objTempForm = document.BaseForm;
    for (i = 0; i < objTempForm.elements.length; i++) {
        if (objTempForm.elements[i].name.indexOf('AICC_AU') != -1) {
            var strSelectedDocument = objTempForm.elements[i].value;
            if (strSelectedDocument.substring(strSelectedDocument.length - 3).toUpperCase() != ".AU") {
                arg.IsValid = false;
            }
            break;
        }
    }

    if (blnUser508Support && !arg.IsValid) {
        alert(GetLocalizedMessage("ML.BASE.MSG.InvalidAICCAUUploadExtention"));
    }
}

function AICCCRSUploadFileValidation(source, arg) {
    var objTempForm = document.BaseForm;
    for (i = 0; i < objTempForm.elements.length; i++) {
        if (objTempForm.elements[i].name.indexOf('AICC_CRS') != -1) {
            var strSelectedDocument = objTempForm.elements[i].value;
            if (strSelectedDocument.substring(strSelectedDocument.length - 4).toUpperCase() != ".CRS") {
                arg.IsValid = false;
            }
            break;
        }
    }
    if (blnUser508Support && !arg.IsValid) {
        alert(GetLocalizedMessage("ML.BASE.MSG.InvalidAICCCRSUploadExtention"));
    }
}

function AICCCSTUploadFileValidation(source, arg) {
    var objTempForm = document.BaseForm;
    for (i = 0; i < objTempForm.elements.length; i++) {
        if (objTempForm.elements[i].name.indexOf('AICC_CST') != -1) {
            var strSelectedDocument = objTempForm.elements[i].value;
            if (strSelectedDocument.substring(strSelectedDocument.length - 4).toUpperCase() != ".CST") {
                arg.IsValid = false;
            }
            break;
        }
    }
    if (blnUser508Support && !arg.IsValid) {
        alert(GetLocalizedMessage("ML.BASE.MSG.InvalidAICCCSTUploadExtention"));
    }
}

function AICCDESUploadFileValidation(source, arg) {
    var objTempForm = document.BaseForm;
    for (i = 0; i < objTempForm.elements.length; i++) {
        if (objTempForm.elements[i].name.indexOf('AICC_DES') != -1) {
            var strSelectedDocument = objTempForm.elements[i].value;
            if (strSelectedDocument.substring(strSelectedDocument.length - 4).toUpperCase() != ".DES") {
                arg.IsValid = false;
            }
            break;
        }
    }
    if (blnUser508Support && !arg.IsValid) {
        alert(GetLocalizedMessage("ML.BASE.MSG.InvalidAICCDESUploadExtention"));
    }
}

function ValidateSelectBoxDuplicates(objForm, selectBoxNames, strAlertText) {
    var strValidationString;
    var strSelectBoxArray = selectBoxNames.split('|');
    var selectBoxName = "";

    for (i = 0; i < strSelectBoxArray.length; i++) {
        //Check duplicate values for each available select box on a given form or datagrid.
        selectBoxName = strSelectBoxArray[i];
        strValidationString = "";
        for (j = 0; j < objForm.elements.length; j++) {
            strElementName = objForm.elements[j].name;
            strElementValue = objForm.elements[j].value;

            if (objForm.elements[j].type == 'select-one' && strElementName.indexOf(selectBoxName) != -1) {
                if (strValidationString.indexOf('|' + strElementValue + '|') != -1) {
                    alert(strAlertText);
                    return false;
                }
                strValidationString = strValidationString + '|' + strElementValue + '|';
            }
        }
    }
}
/*
This function launches the CertificationType Info page
*/
function ViewCertificationTypeInfo() {
    var TheForm = document.BaseForm;
    for (var i = 0; i < TheForm.elements.length; i++) {

        var strElementId;
        var objElement;
        var strItemId;

        objElement = TheForm.elements[i];
        strElementId = objElement.id;

        if (objElement.type == 'select-one' && strElementId.indexOf("CERT_CERTTYPE_ID") > 0) {
            var strItemId = objElement.options[objElement.selectedIndex].value;
        }
    }
    newwindow = window.open(GetCalculatedUrl('Courseware/CertificationType/CertificationTypeInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

}
function ValidateAndConfirmEvaluationSelectionToJobTitle(objForm, strSelectionMessage, strInvalidSelectionMessage) {

    var blnOneChecked = false;
    var blnTemplateExists = false;
    for (var i = 0; i < objForm.elements.length; i++) {
        if (objForm.elements[i].type.toUpperCase() == 'RADIO') {
            if (objForm.elements[i].id.indexOf("SELECTTEMPLATE") != -1) {
                if (objForm.elements[i].checked == true)
                    blnOneChecked = true;
            }
            if (objForm.elements[i].id.indexOf("CURRENTTEMPLATE") != -1) {
                blnTemplateExists = true;
            }
        }
    }
    if ((blnOneChecked == true)) {
        if ((blnTemplateExists == true)) {
            if (!ConfirmCheckBoxSelect(strSelectionMessage)) {
                return false;
            }

        }

    }
    else {
        alert(strInvalidSelectionMessage);
        return false;
    }
    return true;
}

function RouteActionMenuCallsPreviewIDP(strItemId) {
    newwindow = window.open(GetCalculatedUrl('IDP/PreviewIDP.aspx') + '?strItemId=' + escape(strItemId) + '&strArchived=true', '_PreviewIDP', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}

function RouteActionMenuCallsEvaluation(strItemId) {
    newwindow = window.open(GetCalculatedUrl('PerformanceEvaluation/TakeEvaluation.aspx') + '?strItemId=' + escape(strItemId) + '&strArchived=true', '_ViewPE', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}
function RouteActionMenuCallsManagerEvaluation(strItemId, strType) {
    if (strType == 'ML.BASE.PE.Evaluator.Employee') {
        newwindow = window.open(GetCalculatedUrl('PerformanceEvaluation/TakeEvaluation.aspx') + '?strItemId=' + escape(strItemId) + '&strArchived=true', '_ViewPE', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');

    }
    else {
        newwindow = window.open(GetCalculatedUrl('PerformanceEvaluation/TakeEvaluation.aspx') + '?strItemId=' + escape(strItemId) + '&strArchived=true&strManager=true', '_ViewPE', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');

    }
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}
function ValidateAndConfirmRemoveEvaluationFromJobTitle(objForm, strSelectionMessage, strInvalidSelectionMessage) {

    var blnOneChecked = false;
    var blnTemplateExists = false;
    for (var i = 0; i < objForm.elements.length; i++) {
        if (objForm.elements[i].type.toUpperCase() == 'RADIO') {
            if (objForm.elements[i].id.indexOf("CURRENTTEMPLATE") != -1) {
                if (objForm.elements[i].checked == true)
                    blnOneChecked = true;
            }

        }
    }
    if ((blnOneChecked == true)) {
        if (!ConfirmCheckBoxSelect(strSelectionMessage)) {
            return false;
        }

    }
    else {
        alert(strInvalidSelectionMessage);
        return false;
    }
    return true;
}
function ViewEvaluationScaleInfo() {
    var TheForm = document.BaseForm;
    for (var i = 0; i < TheForm.elements.length; i++) {

        var strElementId;
        var objElement;
        var strItemId;

        objElement = TheForm.elements[i];
        strElementId = objElement.id;

        if (objElement.type == 'select-one' && strElementId.indexOf("ECMP_SCALE_ID") > 0) {
            var strItemId = objElement.options[objElement.selectedIndex].value;
        }
    }
    newwindow = window.open(GetCalculatedUrl('PerformanceEvaluation/EvaluationScaleInformation.aspx') + '?strItemId=' + escape(strItemId), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

}
function ValidateAndConfirmEvaluationPublish(strInvalidMessage, strConfirmationMessage) {
    var objForm = document.BaseForm;
    var blnInvalidEvaluation = false;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        //check to see if the SURVEY has a valid structure and can be published. 
        if (element.name == 'INVALID_EVALUATION' && element.value == 'T') {
            blnInvalidEvaluation = true;
            break;
        }
    }

    if (blnInvalidEvaluation) {
        alert(strInvalidMessage);
        return false;
    }
    else {
        return ConfirmClick(strConfirmationMessage);
    }
}
function DisplayAppropriateWarningMessage(strItemId, strMessageType) {
    newwindow = window.open(GetCalculatedUrl('Utilities/WarningMessage.aspx?') + 'strItemId=' + escape(strItemId) + '&strMessageType=' + escape(strMessageType), '_MenuItemInformation', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }
    return false;
}

function RecurrenceRadioHandler(strRadioId) {
    var objForm = document.BaseForm;
    InputItemAltered();
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var strElementName = element.name;
        var j = strElementName.lastIndexOf('$');
        var strName = strElementName.substring(j + 1);

        if ('RTP_RTP_RECUR_TIME' == strName) {
            if ('RTP_RTP_RADIO_OFF' == strRadioId) {
                //element.disabled = true;
                element.value = "";
            }
            else if ('RTP_RTP_RADIO_ON' == strRadioId) {
                //element.disabled = false;
            }
        }
        if ('RTP_RTP_RECUR_PERIOD' == strName) {
            if ('RTP_RTP_RADIO_OFF' == strRadioId) {
                //element.disabled = true;
                element.value = "";
            }
            else if ('RTP_RTP_RADIO_ON' == strRadioId) {
                //element.disabled = false;
            }
        }

        continue;

    }
}

function InitialDateDynamicRadioHandler(strRadioId) {
    var objForm = document.BaseForm;
    InputItemAltered();
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var strElementName = element.name;
        var j = strElementName.lastIndexOf('$');
        var strName = strElementName.substring(j + 1);

        if ('RTP_ITP_DD_TIME' == strName) {
            if ('RTP_ITP_DATE_OFF' == strRadioId) {
                //element.disabled = true;
                element.value = "";
            }
            else if ('RTP_ITP_DATE_ON' == strRadioId) {
                //element.disabled = false;
            }
        }
        if ('RTP_ITP_DD_PERIOD' == strName) {
            if ('RTP_ITP_DATE_OFF' == strRadioId) {
                //element.disabled = true;
                element.value = "";
            }
            else if ('RTP_ITP_DATE_ON' == strRadioId) {
                //element.disabled = false;
            }
        }

        continue;

    }
}

function InitialDateFixedRadioHandler(strRadioId) {
    var objForm = document.BaseForm;
    InputItemAltered();
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var strElementName = element.name;
        var j = strElementName.lastIndexOf('$');
        var strName = strElementName.substring(j + 1);

        if ('RTP_ITP_DATE_FIXED||DAY' == strName || 'RTP_ITP_DATE_FIXED||MONTH' == strName || 'RTP_ITP_DATE_FIXED||YEAR' == strName) {
            if ('RTP_ITP_DATE_OFF' == strRadioId) {
                //element.disabled = false;
            }
            else if ('RTP_ITP_DATE_ON' == strRadioId) {
                //element.disabled = true;
                element.value = "";

            }
        }
        if ('RTP_ITP_DATE_FLOATING||DAY' == strName || 'RTP_ITP_DATE_FLOATING||MONTH' == strName) {
            if ('RTP_ITP_DATE_OFF' == strRadioId) {
                //element.disabled = true;
                element.value = "";
            }
            else if ('RTP_ITP_DATE_ON' == strRadioId) {
                //element.disabled = false;
            }
        }

        continue;

    }
}

function SetRecurrenceButton() {

    var objForm = document.BaseForm;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var strElementName = element.name;
        var j = strElementName.lastIndexOf('$');
        var strName = strElementName.substring(j + 1);

        if (strName == 'RecurrenceGroup') {
            if (!element.Checked) {
                element.Checked;
            }
        }
        continue;
    }
}

//View any image associated with content item  (e.g. Collaboration space logo)
function GetConfigSetting(strConfigSettingId) {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();
    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/GetCalculatedUrl.aspx"), false);
    var strParams = "strCall=GetConfigSetting&strConfigSettingId=" + strConfigSettingId;
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send(strParams);

    return objXMLHTTPRequest.responseText;
}

//View any image associated with content item  (e.g. Collaboration space logo)
function ViewImage(strItemId, strFunctionType) {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();
    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/GetCalculatedUrl.aspx"), false);
    var strParams = "strCall=ViewImage&strItemId=" + strItemId + "&strFunctionType=" + strFunctionType;
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send(strParams);
    var strImageUrl = objXMLHTTPRequest.responseText;
    newwindow = window.open(strImageUrl, '_ImageUrl', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=200,height=200');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }
    return false;
}

function ValidateProfileDatesAndRecurrence(strMessage, strDateMessage, strRecurMessage) {
    var blnValidateForm = false;
    var blnRecurrenceSet = false;
    var blnDateSet = false;
    var blnReturnValue = true;
    var strFormType = '';
    var objForm = document.BaseForm;
    var blnDateRadioSet = false;
    var blnRecurRadioSet = false;
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var strElementName = element.name;
        var j = strElementName.lastIndexOf('$');
        var strName = strElementName.substring(j + 1);
        if (strName == 'RTP_RTT_TYPE_ID') {
            strFormType = element.value;
        }
        if (element.value == 'RTP_RTP_RADIO_OFF' && element.checked) {
            blnRecurRadioSet = true;
        }
        if (element.value == 'RTP_RTP_RADIO_ON' && element.checked) {
            blnRecurRadioSet = true;
        }
        if (element.value == 'RTP_ITP_DATE_OFF' && element.checked) {
            blnDateRadioSet = true;
        }
        if (element.value == 'RTP_ITP_DATE_ON' && element.checked) {
            blnDateRadioSet = true;
        }

        continue;
    }
    if (!blnDateRadioSet) {
        alert(strDateMessage);
        return false;
    }

    if (!blnRecurRadioSet) {
        alert(strRecurMessage);
        return false;
    }

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var strElementName = element.name;
        var j = strElementName.lastIndexOf('$');
        var strName = strElementName.substring(j + 1);
        if (strName == 'RTP_RTT_TYPE_ID') {
            strFormType = element.value;
        }
        //alert(strName + ': ' + element.value);
        if (strName == 'InitialDate') {
            blnValidateForm = true;

            if (element.value == 'RTP_ITP_DATE_OFF' && element.checked) {
                if (strFormType == 'ML.BASE.RTT.Fixed') {
                    blnDateSet = true;
                    if (!ValidateProfileDate('Fixed', strDateMessage)) {
                        //alert("return false... bad ON date");
                        return false;
                    }
                }
            }

            if (element.value == 'RTP_ITP_DATE_ON' && element.checked) {
                //validate time?
                blnDateSet = true;

                if (strFormType == 'ML.BASE.RTT.Fixed') {
                    if (!ValidateProfileDate('Floating', strDateMessage)) {
                        //alert("return false... bad ON date");
                        return false;
                    }
                } else {
                    if (!ValidateProfileDate('Dynamic', strDateMessage)) {
                        //alert("return false... bad ON date");
                        return false;
                    }
                }

            }
        }


        if (strName == 'RecurrenceGroup') {
            blnValidateForm = true;
            if (element.value == 'RTP_RTP_RADIO_ON' && element.checked) {
                blnRecurrenceSet = true;
                if (!ValidateProfileRecurrence(strRecurMessage)) {
                    return false;
                }
            }
        }

        continue;

    }
    //alert('validate: ' + blnValidateForm + '| dateset: '+ blnDateSet + ' | recur set: '+blnRecurrenceSet);
    if (blnValidateForm) {
        if (!blnDateSet && !blnRecurrenceSet) {
            alert(strMessage);
            blnReturnValue = false;
        }
    }
    return blnReturnValue;
}

function ValidateProfileRecurrence(strRecurMessage) {
    //alert('validate recurrence');
    var blnReturnValue = true;

    var objFormRecur = document.BaseForm;
    var iRecur = 0;
    for (iRecur = 0; iRecur < objFormRecur.elements.length; iRecur++) {
        var elementRecur = objFormRecur.elements[iRecur];
        var strElementNameRecur = elementRecur.name;
        var jRecur = strElementNameRecur.lastIndexOf('$');
        var strNameRecur = strElementNameRecur.substring(jRecur + 1);
        if (strNameRecur == 'RTP_RTP_RECUR_TIME') {
            //alert('recur time: ' + elementRecur.value);
            if (elementRecur.value == '') {
                alert(strRecurMessage);
                return false;
            }
        }
        if (strNameRecur == 'RTP_RTP_RECUR_PERIOD') {
            //alert('recur period: ' + elementRecur.value);
            if (elementRecur.value == '') {
                alert(strRecurMessage);
                return false;
            }
        }

        continue;

    }
    //alert('valid');
    return true;
}

function ValidateProfileDate(strDateType, strDateMessage) {
    //alert('validate initial date');
    var blnReturnValueDate = true;

    var objFormDate = document.BaseForm;
    var iDate = 0;

    for (iDate = 0; iDate < objFormDate.elements.length; iDate++) {
        var elementDate = objFormDate.elements[iDate];

        var strElementNameDate = elementDate.name;
        var jDate = strElementNameDate.lastIndexOf('$');
        var strNameDate = strElementNameDate.substring(jDate + 1);

        if (strNameDate == 'RTP_ITP_DD_TIME' && strDateType == 'Dynamic') {
            //alert('recur time dynamic: ' + elementDate.value);
            if (elementDate.value == '') {
                alert(strDateMessage);
                return false;
            }
        }
        if (strNameDate == 'RTP_ITP_DD_PERIOD' && strDateType == 'Dynamic') {
            //alert('recur period dynamic: ' + elementDate.value);
            if (elementDate.value == '') {
                alert(strDateMessage);
                return false;
            }
        }
        if (strNameDate == 'RTP_ITP_DATE_FIXED||MONTH' && strDateType == 'Fixed') {
            //alert('month fixed: ' + elementDate.value);
            if (elementDate.value == '') {
                alert(strDateMessage);
                return false;
            }
        }
        if (strNameDate == 'RTP_ITP_DATE_FIXED||DAY' && strDateType == 'Fixed') {
            //alert('day fixed: ' + elementDate.value);
            if (elementDate.value == '') {
                alert(strDateMessage);
                return false;
            }
        }
        if (strNameDate == 'RTP_ITP_DATE_FIXED||YEAR' && strDateType == 'Fixed') {
            //alert('year fixed: ' + elementDate.value);
            if (elementDate.value == '') {
                alert(strDateMessage);
                return false;
            }
        }
        if (strNameDate == 'RTP_ITP_DATE_FLOATING||MONTH' && strDateType == 'Floating') {
            //alert('month float: ' + elementDate.value);
            if (elementDate.value == '') {
                alert(strDateMessage);
                return false;
            }
        }
        if (strNameDate == 'RTP_ITP_DATE_FLOATING||DAY' && strDateType == 'Floating') {
            //alert('month day: ' + elementDate.value);
            if (elementDate.value == '') {
                alert(strDateMessage);
                return false;
            }
        }
        continue;
    }
    //alert('valid');
    return true;
}

function GoPreviewEmail() {
    newwindow = window.open(GetCalculatedUrl('RequiredTraining/PreviewEmail.aspx'), '_ViewEmail', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
    //newwindow = window.open(GetCalculatedUrl('/EmailConsole/ViewEmailSummary.aspx?strItemId=ML.BASE.RT.UserAssigned.WithDeadline') ,'_ViewEmail', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}

function ValidateSelectRadioButton(objForm, strInvalidSelectionMessage) {
    var blnOneChecked = false;
    for (var i = 0; i < document.BaseForm.elements.length; i++) {
        if (objForm.elements[i].type.toUpperCase() == 'RADIO') {
            if (objForm.elements[i].checked) {
                blnOneChecked = true;
            }
        }
    }
    if (!(blnOneChecked)) {
        alert(strInvalidSelectionMessage);
        return false;
    }
}

function ValidateSameRowCheckBoxSelect(TheForm, strPrefix, strPrefix1, strAlertMessage) {
    var intCheckbox;
    var strString = 'Link|';
    var blnDuplicate = false;

    for (var i = 0; i < TheForm.elements.length; i++) {
        var element = TheForm.elements[i];
        var strElementName;
        strElementName = element.name;

        if (element.type == 'checkbox' && strElementName.indexOf(strPrefix) >= 0) {
            if (element.checked) {
                //get the ID associated with the checkbox    
                var strID = strElementName.substr(strElementName.lastIndexOf("_") + 1);
                //check to see if there is a duplicate checkbox

                strString += strID + '|';
            }
        }
        if (element.type == 'checkbox' && strElementName.indexOf(strPrefix1) >= 0) {
            if (element.checked) {
                //get the ID associated with the checkbox    
                var strID1 = strElementName.substr(strElementName.lastIndexOf("_") + 1);
                //check to see if a checkbox in the same row is checked
                if (strString.indexOf(strID1) >= 0) {
                    blnDuplicate = true;
                    break;
                }
            }
        }

    }

    if (blnDuplicate) {
        alert(strAlertMessage);
        return false;
    }

    return true;
}
function LaunchEvaluationPreview() {
    newwindow = window.open(GetCalculatedUrl('PerformanceEvaluation/TakeEvaluation.aspx') + '?strPreview=true', '_PopupReport', 'toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}

function LaunchUrl(strUrl) {
    newwindow = window.open(strUrl, '_PopUpUrl', 'toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}

function ShowTermsAndConditions() {
    var strhref = location.href.toLowerCase();
    strhref = strhref.substring(0, strhref.indexOf("/kview"));

    var strUrl = GetCalculatedUrl("ECommerce/ECTerms.aspx");

    newwindow = window.open(strUrl, '_ECTerms', 'toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=960,height=620');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}

function ShowCVCHelp() {
    var strUrl = GetCalculatedUrl("ECommerce/ECCVCHelp.aspx");
    newwindow = window.open(strUrl, '_ECCVCHelp', 'toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}

function NavigateToShoppingCart() {
    location.href = GetCalculatedUrl('ECommerce/ShoppingCart.aspx');
    return false;
}
function ValidateAndConfirmOrder(strConfirmOrder, strAcceptTermsAndConditions) {
    var objForm = document.BaseForm;
    var blnChecked = false;
    for (var i = 0; i < objForm.elements.length; i++) {
        if (objForm.elements[i].name.toUpperCase().indexOf('RO_TERMS_CONDITION') >= 0) {
            if (objForm.elements[i].checked) {
                blnChecked = true;
            }
        }
    }
    if (!(blnChecked)) {
        alert(strAcceptTermsAndConditions);
        return false;
    }
    else {
        var blnChoice = confirm(strConfirmOrder);
        if (blnChoice) {
		ShowLoading('&nbsp;') // Please wait message

        }
        return blnChoice;
    }
}

function PFPCreditCardExpDateValidation(source, args) {
    if (IsRadioButtonChecked('ML.BASE.PMT.PAYFLOWPRO.CREDITCARD') == false) {
        return;
    }

    var objForm = document.BaseForm;
    var strMonth = '';
    var strYear = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        if (objForm.elements[i].name.toUpperCase().indexOf('ENCRYPTED_PI_CREDIT_CARD_EXP_MONTH') >= 0) {
            strMonth = objForm.elements[i].value;
        }
        if (objForm.elements[i].name.toUpperCase().indexOf('ENCRYPTED_PI_CREDIT_CARD_EXP_YEAR') >= 0) {
            strYear = objForm.elements[i].value;
        }
    }

    strYear = '20' + strYear;

    var varExpDate = new Date(strYear, strMonth);
    var varCurrentDate = new Date();

    var blnValid = true;
    if (varCurrentDate.getTime() >= varExpDate.getTime()) {
        blnValid = false;
    }

    args.IsValid = blnValid;

    if (blnUser508Support && !args.IsValid) {
        alert(GetLocalizedMessage("ML.BASE.VAL.PFPExpDateInvalid"));
    }

    return;
}

function IsRadioButtonChecked(strRBId) {
    var objForm = document.BaseForm;
    var blnRetVal = false;
    for (var i = 0; i < objForm.elements.length; i++) {
        if (objForm.elements[i].type == 'radio' &&
                objForm.elements[i].value.toUpperCase().indexOf(strRBId.toUpperCase()) >= 0 &&
                objForm.elements[i].checked) {
            blnRetVal = true;
            break;
        }
    }
    return blnRetVal;
}

function PFPCreditCardValidation(source, args) {
    if (IsRadioButtonChecked('ML.BASE.PMT.PAYFLOWPRO.CREDITCARD') == false) {
        return;
    }

    var objForm = document.BaseForm;
    var strCardType = '';
    var strCardNumber = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        if (objForm.elements[i].name.toUpperCase().indexOf('PI_CREDIT_CARD_TYPE') >= 0) {
            strCardType = objForm.elements[i].value;
        }
        if (objForm.elements[i].name.toUpperCase().indexOf('ENCRYPTED_PI_CREDIT_CARD_NUMBER') >= 0) {
            strCardNumber = objForm.elements[i].value;
        }
    }

    var intRetVal = checkCreditCard(strCardNumber, strCardType);
    var ccErrors = new Array();
    ccErrors[0] = "ML.BASE.ECOM.PFP.UnknownCard";
    ccErrors[1] = "ML.BASE.ECOM.PFP.NoCardNumber";
    ccErrors[2] = "ML.BASE.ECOM.PFP.InvalidCardFormat";
    ccErrors[3] = "ML.BASE.ECOM.PFP.InvalidCardNumber";
    ccErrors[4] = "ML.BASE.ECOM.PFP.InvalidNumberDigits";

    if (intRetVal > -1) {
        args.IsValid = false;
    }

    if (blnUser508Support && !args.IsValid) {
        alert(GetLocalizedMessage("ML.BASE.VAL.PFPInvalidCreditCard"));
    }

    return;
}

// Enable / disable validation on payment information page depending on chosen radio button
function PIEnableDisableValidation(strID) {
    var objForm = document.BaseForm;
    var blnChecked = false;
    var intFirstRB = -1;
    for (var i = 0; i < objForm.elements.length; i++) {
        if (objForm.elements[i].type != null && objForm.elements[i].type == 'radio') {
            if (intFirstRB < 0) {
                intFirstRB = i;
            }
            if (objForm.elements[i].checked) {
                blnChecked = true;
                break;
            }
        }
    }

    // No payment options selection, check first one
    if (!blnChecked && intFirstRB > -1) {
        objForm.elements[intFirstRB].checked = true;
    }

    for (var i = 0; i < objForm.elements.length; i++) {
        if (objForm.elements[i].type != null && objForm.elements[i].type == 'radio') {
            EnableDisableValidation(objForm.elements[i], objForm.elements[i].value);
        }
    }
    return true;
}

// Disable Required validators
function EnableDisableValidation(objRB, strValue) {
    var objForm = document.BaseForm;
    // Credit cards
    if (strValue.indexOf('ML.BASE.PMT.PAYFLOWPRO.CREDITCARD') >= 0) {
        for (var i = 0; i < objForm.elements.length; i++) {
            if (objForm.elements[i].name != null &&
                (objForm.elements[i].name.toUpperCase().indexOf('ENCRYPTED_PI_CREDIT_CARD_NUMBER') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('ENCRYPTED_PI_CREDIT_CARD_CVC_NUMBER') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('PI_BILL_TO_USER_NAME') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('PI_BILL_TO_STREET') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('PI_BILL_TO_CITY') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('PI_BILL_TO_COUNTRY_ID') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('PI_BILL_TO_ZIP') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('PI_BILL_TO_PHONE') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('PI_CREDIT_CARD_TYPE') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('ENCRYPTED_PI_CREDIT_CARD_EXP_MONTH') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('ENCRYPTED_PI_CREDIT_CARD_EXP_YEAR') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('PI_BILL_TO_PROVINCE') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('PI_BILL_TO_STATE_ID') >= 0 ||
                objForm.elements[i].name.toUpperCase().indexOf('PI_BILL_TO_CURRENT') >= 0
                )
               ) {
                objForm.elements[i].disabled = !objRB.checked;
                var strValidatorID = objForm.elements[i].name.replace(/\$/g, '_') + '_REQVALIDATOR';
                if (document.getElementById(strValidatorID) != null) {
                    document.getElementById(strValidatorID).enabled = objRB.checked;
                }
            }
        }
    }
    else if (strValue.indexOf('ML.BASE.PMT.MGLOBAL.ACCOUNTCODE') >= 0) {
        for (var i = 0; i < objForm.elements.length; i++) {
            var strDDLName = strValue.replace('ML.BASE.PMT.MGLOBAL.ACCOUNTCODE', 'ACODE');
            if (objForm.elements[i].name != null &&
                objForm.elements[i].name.toUpperCase().indexOf(strDDLName) >= 0) {
                objForm.elements[i].disabled = !objRB.checked;
                var strValidatorID = objForm.elements[i].name.replace(/\$/g, '_') + '_REQVALIDATOR';
                document.getElementById(strValidatorID).enabled = objRB.checked;
            }
        }
    }

    return true;
}

function PFPCVCValidation(source, args) {
    if (IsRadioButtonChecked('ML.BASE.PMT.PAYFLOWPRO.CREDITCARD') == false) {
        return;
    }

    var objForm = document.BaseForm;
    var strCardType = '';
    var strCVCNumber = '';

    for (var i = 0; i < objForm.elements.length; i++) {
        if (objForm.elements[i].name.toUpperCase().indexOf('PI_CREDIT_CARD_TYPE') >= 0) {
            strCardType = objForm.elements[i].value;
        }
        if (objForm.elements[i].name.toUpperCase().indexOf('ENCRYPTED_PI_CREDIT_CARD_CVC_NUMBER') >= 0) {
            strCVCNumber = objForm.elements[i].value;
        }
    }

    var intRetVal = 0;
    if (strCardType == 'ML.BASE.CREDITCARD.AMEX') {
        if (strCVCNumber.length != 4) {
            intRetVal = 1;
        }
    }
    else {
        if (strCVCNumber.length != 3) {
            intRetVal = 1;
        }
    }

    if (intRetVal > 0) {
        args.IsValid = false;
    }

    if (blnUser508Support && !args.IsValid) {
        alert(GetLocalizedMessage("ML.BASE.VAL.PFPCVCInvalid"));
    }

    return;

}

/*============================================================================*/

/*

This routine checks the credit card number. The following checks are made:

1. A number has been provided
2. The number is a right length for the card
3. The number has an appropriate prefix for the card
4. The number has a valid modulus 10 number check digit if required

If the validation fails an error is reported.

The structure of credit card formats was gleaned from a variety of sources on 
the web, although the best is probably on Wikepedia ("Credit card number"):

http://en.wikipedia.org/wiki/Credit_card_number

Parameters:
cardnumber           number on the card
cardname             name of card as defined in the card list below

Author:     John Gardner
Date:       1st November 2003
Updated:    26th Feb. 2005      Additional cards added by request
Updated:    27th Nov. 2006      Additional cards added from Wikipedia
Updated:    18th Jan. 2008      Additional cards added from Wikipedia

*/

/*
If a credit card number is invalid, an error reason is loaded into the 
global ccErrorNo variable. This can be be used to index into the global error  
string array to report the reason to the user if required:
   
e.g. if (!checkCreditCard (number, name) alert (ccErrors(ccErrorNo);
*/

function checkCreditCard(cardnumber, cardname) {

    // Array to hold the permitted card characteristics
    var cards = new Array();
    var ccErrorNo = 0;
    var blnRetVal = false;

    // Define the cards we support. You may add addtional card types.
    //  Name:      As in the selection box of the form - must be same as user's
    //  Length:    List of possible valid lengths of the card number for the card
    //  prefixes:  List of possible prefixes for the card
    //  checkdigit Boolean to say whether there is a check digit

    cards[0] = { name: "ML.BASE.CREDITCARD.VISA",
        length: "13,16",
        prefixes: "4",
        checkdigit: true
    };
    cards[1] = { name: "ML.BASE.CREDITCARD.MASTERCARD",
        length: "16",
        prefixes: "51,52,53,54,55",
        checkdigit: true
    };
    cards[2] = { name: "ML.BASE.CREDITCARD.DINERS",
        length: "14,16",
        prefixes: "300,301,302,303,304,305,36,38,55",
        checkdigit: true
    };
    cards[3] = { name: "ML.BASE.CREDITCARD.CARTEBLANCHE",
        length: "14",
        prefixes: "300,301,302,303,304,305,36,38",
        checkdigit: true
    };
    cards[4] = { name: "ML.BASE.CREDITCARD.AMEX",
        length: "15",
        prefixes: "34,37",
        checkdigit: true
    };
    cards[5] = { name: "ML.BASE.CREDITCARD.DISCOVER",
        length: "16",
        prefixes: "6011,650",
        checkdigit: true
    };
    cards[6] = { name: "ML.BASE.CREDITCARD.JCB",
        length: "15,16",
        prefixes: "3,1800,2131",
        checkdigit: true
    };
    cards[7] = { name: "ML.BASE.CREDITCARD.ENROUTE",
        length: "15",
        prefixes: "2014,2149",
        checkdigit: true
    };
    cards[8] = { name: "ML.BASE.CREDITCARD.SOLO",
        length: "16,18,19",
        prefixes: "6334, 6767",
        checkdigit: true
    };
    cards[9] = { name: "ML.BASE.CREDITCARD.SWITCH",
        length: "16,18,19",
        prefixes: "4903,4905,4911,4936,564182,633110,6333,6759",
        checkdigit: true
    };
    cards[10] = { name: "ML.BASE.CREDITCARD.MAESTRO",
        length: "16,18",
        prefixes: "5020,6",
        checkdigit: true
    };
    cards[11] = { name: "ML.BASE.CREDITCARD.VISAELECTRON",
        length: "16",
        prefixes: "417500,4917,4913",
        checkdigit: true
    };

    // Establish card type
    var cardType = -1;
    for (var i = 0; i < cards.length; i++) {

        // See if it is this card (ignoring the case of the string)
        if (cardname.toLowerCase() == cards[i].name.toLowerCase()) {
            cardType = i;
            break;
        }
    }

    // If card type not found, report an error
    if (cardType == -1) {
        return 0;
    }

    // Ensure that the user has provided a credit card number
    if (cardnumber.length == 0) {
        ccErrorNo = 1;
        return 1;
    }

    // Now remove any spaces from the credit card number
    cardnumber = cardnumber.replace(/\s/g, "");

    // Check that the number is numeric
    var cardNo = cardnumber
    var cardexp = /^[0-9]{13,19}$/;
    if (!cardexp.exec(cardNo)) {
        ccErrorNo = 2;
        return 2;
    }

    // Now check the modulus 10 check digit - if required
    if (cards[cardType].checkdigit) {
        var checksum = 0;                                  // running checksum total
        var mychar = "";                                   // next char to process
        var j = 1;                                         // takes value of 1 or 2

        // Process each digit one by one starting at the right
        var calc;
        for (i = cardNo.length - 1; i >= 0; i--) {

            // Extract the next digit and multiply by 1 or 2 on alternative digits.
            calc = Number(cardNo.charAt(i)) * j;

            // If the result is in two digits add 1 to the checksum total
            if (calc > 9) {
                checksum = checksum + 1;
                calc = calc - 10;
            }

            // Add the units element to the checksum total
            checksum = checksum + calc;

            // Switch the value of j
            if (j == 1) { j = 2 } else { j = 1 };
        }

        // All done - if checksum is divisible by 10, it is a valid modulus 10.
        // If not, report an error.
        if (checksum % 10 != 0) {
            ccErrorNo = 3;
            return 3;
        }
    }

    // The following are the card-specific checks we undertake.
    var LengthValid = false;
    var PrefixValid = false;
    var undefined;

    // We use these for holding the valid lengths and prefixes of a card type
    var prefix = new Array();
    var lengths = new Array();

    // Load an array with the valid prefixes for this card
    prefix = cards[cardType].prefixes.split(",");

    // Now see if any of them match what we have in the card number
    for (i = 0; i < prefix.length; i++) {
        var exp = new RegExp("^" + prefix[i]);
        if (exp.test(cardNo)) PrefixValid = true;
    }

    // If it isn't a valid prefix there's no point at looking at the length
    if (!PrefixValid) {
        ccErrorNo = 3;
        return 3;
    }

    // See if the length is valid for this card
    lengths = cards[cardType].length.split(",");
    for (j = 0; j < lengths.length; j++) {
        if (cardNo.length == lengths[j]) LengthValid = true;
    }

    // See if all is OK by seeing if the length was valid. We only check the 
    // length if all else was hunky dory.
    if (!LengthValid) {
        ccErrorNo = 4;
        return 4;
    };

    // The credit card is in the required format.
    return -1;
}


function GoViewLastBulkImport(strType) {
    newwindow = window.open(GetCalculatedUrl('Courseware/LastBulkImportInfoDetails.aspx?strType=' + strType), '_ViewEmail', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
    //newwindow = window.open(GetCalculatedUrl('/EmailConsole/ViewEmailSummary.aspx?strItemId=ML.BASE.RT.UserAssigned.WithDeadline') ,'_ViewEmail', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');

    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}

//Ajax call to Kview every 5 minutes to keep the state object alive.
//If call fails and does not return empty value then make call every 1 minute.
//Keep a counter of failed attempts.
var intFailedAttempts = 0;
function KeepStateAlive() {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();
    objXMLHTTPRequest.open("POST", GetCalculatedUrl('Utilities/RefreshPage.aspx'), false);

    var strParams = "";
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    objXMLHTTPRequest.send(strParams);

    if (objXMLHTTPRequest.responseText.length == 0) {
        setTimeout(KeepStateAlive, 60000);
    }
    else {
        setTimeout(KeepStateAlive, 60000);
        intFailedAttempts++;
    }
}
var blnResetOnce = false;
function ResetTextAndFont(strElementName) {

    var blnReturnValue = true;
    var objFormSearch = document.BaseForm;
    var iSearch = 0;
    if (blnResetOnce != true) {
        for (iSearch = 0; iSearch < objFormSearch.elements.length; iSearch++) {
            var elementSearch = objFormSearch.elements[iSearch];
            var strElementNameSearch = elementSearch.name;
            var jSearch = strElementNameSearch.lastIndexOf('$');
            var strNameSearch = strElementNameSearch.substring(jSearch + 1);
            if (strNameSearch == strElementName) {
                blnResetOnce = true;
                elementSearch.value = '';
                elementSearch.style.color = 'black';
                elementSearch.style.fontStyle = 'normal';
                return;
            }
            continue;
        }
    }
    //alert('valid');
    return;
}

function SimpleTestStringAlert(strString) {
    alert(strString);

    return "true";
}


function BreadCrumbNavigation(strCurrentPage, strRedirectUrl, strUniqueId, strHomePage) {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();
    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/GetCalculatedUrl.aspx"), false);
    var strParams = "strCall=NavigateFromBreadcrumb&strCurrentPage=" + strCurrentPage + "&strUniqueId=" + strUniqueId + "&strHomePage=" + strHomePage;
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send(strParams);

    self.location.href = GetCalculatedUrl(strRedirectUrl);

    return false;
}

function LogoutLMS() {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();
    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/GetCalculatedUrl.aspx"), false);
    var strParams = "strCall=LMSLogout";
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send(strParams);

    var strRedirectUrl = objXMLHTTPRequest.responseText;

    self.location.href = strRedirectUrl;

    return false;
}

function ViewSiteIndex() {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();
    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/GetCalculatedUrl.aspx"), false);
    var strParams = "strCall=ViewSiteIndex";
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send(strParams);

    var strRedirectUrl = objXMLHTTPRequest.responseText;

    self.location.href = strRedirectUrl;

    return false;
}
function RemediationLinkClick(strURL) {
    if (strURL.toUpperCase().indexOf('HTTP://') < 0 && strURL.toUpperCase().indexOf('HTTPS://') < 0) {
        strURL = 'http://' + strURL;
    }

    window.open(strURL, 'remediationurl', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=560,height=420');
    return false;
}

function ToggleApplyCreatingDomain() {
    var strURL = location.href;
    var objForm = document.BaseForm;
    var strValueId = "";
    var blnAction = -1;
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var name = element.name;

        if ('radio' == element.type && name.indexOf("DomainSharingOption") != -1) {
            strValueId = element.value;

            if (strValueId == 'CONTENT_NOT_SHARED' && element.checked) {
                blnAction = 0;
                break;
            }
        }
    }

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var name = element.name;

        if ('checkbox' == element.type &&
			(name.indexOf("ContentShared") != -1 ||
			name.indexOf("ContentPushedOptional") != -1 ||
			name.indexOf("ApplyDescendantDomain") != -1)) {

            //			if (blnHasDisabledItems)  
            //			{
            //				alert (GetLocalizedMessage('ML.BASE.JSMSG.UnableToAlterRoleDomainAssignment'));
            //				
            //				return;
            //			}

            if (blnAction == 0) {
                element.checked = false;
                element.disabled = true;
            }
            else {
                if (name.indexOf("ApplyDescendantDomain") != -1) {
                    element.removeAttribute("disabled");
                }
                element.disabled = false;
            }
        }
    }
}


var blnHasDisabledItems = false;
function DisableCheckBoxesOnLoad() {
    var objForm = document.BaseForm;
    var blnActivate = false;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var name = element.name;

        if ('checkbox' == element.type &&
			(name.indexOf("ContentShared") != -1 ||
			name.indexOf("ContentPushedOptional") != -1 ||
			name.indexOf("ApplyDescendantDomain") == -1)) {
            element.disabled = true;
            if (element.checked) {
                blnActivate = true;
            }
        }
    }

    if (blnActivate) {
        for (i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];
            var name = element.name;

            if ('checkbox' == element.type &&
				(name.indexOf("ContentShared") != -1 ||
				name.indexOf("ContentPushedOptional") != -1 ||
				name.indexOf("ApplyDescendantDomain") != -1)) {
                element.disabled = false;
            }

            if (element.type == 'radio' &&
				name.indexOf("DomainSharingOption") != -1 &&
				element.value == "CONTENT_SHARED") {
                element.checked = true;
            }
        }
    }
}

function RouteActionMenuCallsShowHideRole(strRowId, strMessageShow, strMessageHide) {
    var objForm = document.BaseForm;
    // Find associated drop-down, see if selected item is Proxy Login.
    var varSelected = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' &&
			element.name.indexOf('ActionsMenu') != -1) {
            if (element.attributes["AssocId"].value == strRowId) {
                varSelected = element.value;
                break;
            }
        }
    }

    if (varSelected == 'ML.BASE.ACT.ShowRole') {
        return confirm(strMessageShow);
    }
    else {
        if (varSelected == 'ML.BASE.ACT.HideRole') {
            return confirm(strMessageHide);
        }

    }

}

function ResetPreviousAttempt(strContentId) {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();

    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/ResetPreviousAttemptLogic.aspx"), false);

    var strParams = "strContentId=" + strContentId;

    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    objXMLHTTPRequest.send(strParams);

    var strNewAttemptAllowed = "T";

    return strNewAttemptAllowed;
}

//create this function
String.prototype.count = function(s1) {
    return (this.length - this.replace(new RegExp(s1, "g"), '').length) / s1.length;
}

function ValidateFillInTheBlankBrackets(source, args) {
    //fill in the blank should only have one open/close bracket
    var objElement = document.getElementById(source.controltovalidate);
    var objValue = objElement.value;
    var intOpenCurl = objValue.count('{');
    var intCloseCurl = objValue.count('}');
    if (intOpenCurl > 1 && intCloseCurl > 1) {
        //there are more than one of each.
        args.IsValid = false;
    }

    if (blnUser508Support && !args.IsValid) {
        alert(GetLocalizedMessage("ML.BASE.VAL.TestForDuplicateBrackets"));
    }

    return;
}

function LaunchTranscriptPrintVersion() {
    newwindow = window.open(GetCalculatedUrl('Reports/StudentReports/StudentTranscriptPrint.aspx'), '_PopupReport', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');
    newwindow.focus();
    return false;
}

/*This function disables the start and end date fields in activity pages when the activity is set to Inactive*/
function EditActivityDisableDates() {
    var strURL = location.href;
    if (strURL.toLowerCase().indexOf('activity.aspx') == -1) {
        return;
    }

    var objForm = document.BaseForm;
    var blnDisabled = false;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if ('radio' == element.type && element.value == 'F' && element.checked == true) {
            blnDisabled = true;
            break;
        }
    }

    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        //If activity is set to Inactive then disable the date fields
        if (element.type == 'select-one') {
            if (element.name.indexOf('OBJ_ACTIVE_START_DATE||MONTH') != -1 ||
				element.name.indexOf('OBJ_ACTIVE_START_DATE||DAY') != -1 ||
				element.name.indexOf('OBJ_ACTIVE_END_DATE||MONTH') != -1 ||
				element.name.indexOf('OBJ_ACTIVE_END_DATE||DAY') != -1) {
                element.disabled = blnDisabled;
                if (blnDisabled) {
                    element.value = "";
                }
            }
        }
        else {
            if (element.type == 'text' &&
				(
				element.name.indexOf('OBJ_ACTIVE_START_DATE||YEAR') != -1 ||
				element.name.indexOf('OBJ_ACTIVE_END_DATE||YEAR') != -1
				)) {
                element.disabled = blnDisabled;
                if (blnDisabled) {
                    element.value = "";
                }
            }
        }
    }
}

function SetLandingPage(strMessage) {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();

    if (confirm(strMessage)) {
        objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/GetCalculatedUrl.aspx"), false);

        var strParams = "strCall=SelectLandingPage";
        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);

        strCalculatedUrl = objXMLHTTPRequest.responseText;

        alert(GetLocalizedMessage('ML.BASE.JSMSG.ChangeLandingPage'));
        var objIcon = document.getElementById('MG_LandingPageSelect');
        objIcon.attributes["src"].value = objIcon.attributes["AlternateLocation"].value;
        objIcon.attributes["title"].value = objIcon.attributes["AlternateAltText"].value;
        objIcon.attributes["onclick"].value = "javascript:return false;";
    }
    /*	else 
    {
    objXMLHTTPRequest.open ("POST", GetCalculatedUrl("Utilities/RefreshPage.aspx"), false);
					
    var strParams = "strCall=GetCurrentActiveUsers";
    objXMLHTTPRequest.setRequestHeader ("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send (strParams);
		
		alert(objXMLHTTPRequest.responseText);
    }
    */
    return false;
}
function SectionDatesHandler() {
    var objForm = document.BaseForm;

    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];


        if (element.type == 'checkbox' && element.name.indexOf('CRSSECT_SECTION_DNMIC_DATE') != -1) {
            var blnEnabled = false;

            if (element.checked) {
                blnEnabled = true;
            }

            for (j = 0; j < objForm.elements.length; j++) {
                var element = objForm.elements[j];

                if (element.type == 'select-one') {
                    if (element.name.indexOf('CRSSECT_SECTION_START_DATE||MONTH') != -1 ||
						element.name.indexOf('CRSSECT_SECTION_START_DATE||DAY') != -1 ||
						element.name.indexOf('CRSSECT_SECTION_START_DATE||TIME') != -1 ||
						element.name.indexOf('CRSSECT_SECTION_END_DATE||MONTH') != -1 ||
						element.name.indexOf('CRSSECT_SECTION_END_DATE||DAY') != -1 ||
						element.name.indexOf('CRSSECT_SECTION_END_DATE||TIME') != -1) {
                        element.disabled = blnEnabled;

                        if (blnEnabled) {
                            // element.value = "";
                        }
                    }
                }
                else {
                    if (element.type == 'text' &&
						(
						element.name.indexOf('CRSSECT_SECTION_START_DATE||YEAR') != -1 ||
						element.name.indexOf('CRSSECT_SECTION_END_DATE||YEAR') != -1
						)) {
                        element.disabled = blnEnabled;

                        if (blnEnabled) {
                            //element.value = "";
                        }
                    }
                }
            }

            break;
        }
    }

}

function MarkMessages(strPrefix, strAlert, strReadFlag) {
    var objForm = document.BaseForm;

    //Display a warning when no messages are selected.
    if (!ValidateCheckBoxSelect(objForm, strPrefix, strAlert)) {
        return false;
    }

    var intCheckbox;
    var strMessageString = '';

    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var strElementName = element.name;

        //uncheck the Select All checkbox.
        if (element.type == 'checkbox' && strElementName.indexOf("SelectAll") >= 0) {
            if (element.checked) {
                element.checked = false;
            }
        }

        if (element.type == 'checkbox' && strElementName.indexOf(strPrefix) >= 0) {
            if (element.checked) {
                //get the ID associated with the checkbox    
                var strID = strElementName.substr(strElementName.lastIndexOf("_") + 1);
                strMessageString += strID + '|';

                //Bold or Unbold the rows based on the messages that are selected.
                var trtags = document.getElementsByTagName("tr");
                for (var t = 0; t < trtags.length; t++) {
                    if (trtags[t].id != null && trtags[t].id.indexOf(strID) >= 0) {
                        if (trtags[t].className.indexOf("Alt") >= 0) {
                            if (strReadFlag == "T") {
                                trtags[t].className = "DatagridRowsAlt";
                            }
                            else {
                                trtags[t].className = "DatagridRowsAltBold";
                            }
                        }
                        else {
                            if (strReadFlag == "T") {
                                trtags[t].className = "DatagridRows";
                            }
                            else {
                                trtags[t].className = "DatagridRowsBold";
                            }
                        }
                        break;
                    }
                }

                //Swap the read/unread images in the rows that are selected.
                var imgtags = document.getElementsByTagName("img");
                for (var t = 0; t < imgtags.length; t++) {
                    if (imgtags[t].id != null && imgtags[t].id.indexOf("GraphicIcon_UMM_READ_FLAG_" + strID) >= 0) {
                        if (strReadFlag == "T") {
                            imgtags[t].src = imgtags[t].getAttribute('src2');
                            imgtags[t].title = imgtags[t].getAttribute('title2');
                            imgtags[t].alt = imgtags[t].getAttribute('alt2');
                        }
                        else {
                            imgtags[t].src = imgtags[t].getAttribute('src1');
                            imgtags[t].title = imgtags[t].getAttribute('title1');
                            imgtags[t].alt = imgtags[t].getAttribute('alt1');
                        }
                        break;
                    }
                }

                element.checked = false;
            }
        }
    }

    //Make the AJAX call to flip the read flag to T/F on the database side.
    var objXMLHTTPRequest = CreateXMLHTTPRequest();
    objXMLHTTPRequest.open("POST", GetCalculatedUrl('Utilities/MarkMyMessages.aspx'), false);

    var strParams = "strMessageString=" + escape(strMessageString) + "&strReadFlag=" + escape(strReadFlag);
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send(strParams);

    var strCalculatedUrl = objXMLHTTPRequest.responseText;

    //Hide the feedback DIV tag if messages were deleted prior to calling this function.    
    document.getElementById('WorkSpaceFeedbackContainer').style.display = 'none';

    return false;
}

function OpenMessage(strItemId) {
    //Bold or Unbold the rows based on the messages that are selected.
    var trtags = document.getElementsByTagName("tr");
    for (var t = 0; t < trtags.length; t++) {
        if (trtags[t].id != null && trtags[t].id.indexOf(strItemId) >= 0) {
            if (trtags[t].className.indexOf("Alt") >= 0) {
                trtags[t].className = "DatagridRowsAlt";
            }
            else {
                trtags[t].className = "DatagridRows";
            }
            break;
        }
    }

    //Swap the read/unread images in the rows that are selected.
    var imgtags = document.getElementsByTagName("img");

    for (var t = 0; t < imgtags.length; t++) {
        if (imgtags[t].id != null && imgtags[t].id.indexOf("GraphicIcon_UMM_READ_FLAG_" + strItemId) >= 0) {
            imgtags[t].src = imgtags[t].getAttribute('src2');
            imgtags[t].title = imgtags[t].getAttribute('title2');
            imgtags[t].alt = imgtags[t].getAttribute('alt2');

            break;
        }
    }

    //Make the AJAX call to flip the read flag to T/F on the database side.
    var objXMLHTTPRequest = CreateXMLHTTPRequest();
    objXMLHTTPRequest.open("POST", GetCalculatedUrl('Utilities/MarkMyMessages.aspx'), false);

    var strParams = "strMessageString=" + escape(strItemId) + "&strReadFlag=T";
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send(strParams);

    var strCalculatedUrl = objXMLHTTPRequest.responseText;

    var strUrl = GetCalculatedUrl("PersonalHomepage/PersonalHomepageMyMessagesInfo.aspx");
    newwindow = window.open(strUrl + '?strItemId=' + escape(strItemId), strItemId + '_MessageWindow', 'toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    //Hide the feedback DIV tag if messages were deleted prior to calling this function.    
    document.getElementById('WorkSpaceFeedbackContainer').style.display = 'none';

    return false;
}

function copyToClipboard(s) {
    if (window.clipboardData && clipboardData.setData) {
        clipboardData.setData("Text", s);
    }
    /*else
    {
    // You have to sign the code to enable this or allow the action in about:config by changing
    user_pref("signed.applets.codebase_principal_support", true);
    netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

		var clip Components.classes['@mozilla.org/widget/clipboard;[[[[1]]]]'].createInstance(Components.interfaces.nsIClipboard);
    if (!clip) return;

		// create a transferable
    var trans = Components.classes['@mozilla.org/widget/transferable;[[[[1]]]]'].createInstance(Components.interfaces.nsITransferable);
    if (!trans) return;

		// specify the data we wish to handle. Plaintext in this case.
    trans.addDataFlavor('text/unicode');

		// To get the data from the transferable we need two new objects
    var str = new Object();
    var len = new Object();

		var str = Components.classes["@mozilla.org/supports-string;[[[[1]]]]"].createInstance(Components.interfaces.nsISupportsString);

		var copytext=meintext;

		str.data=copytext;

		trans.setTransferData("text/unicode",str,copytext.length*[[[[2]]]]);

		var clipid=Components.interfaces.nsIClipboard;

		if (!clip) return false;

		clip.setData(trans,null,clipid.kGlobalClipboard);	   
    }*/
}

function NavigateToMyMeesages() {
    location.href = GetCalculatedUrl('PersonalHomepage/PersonalHomepageMyMessages.aspx');
    return false;
}

function MM_setTextOfLayer(objId, x, newText) { //v9.0
    with (document) if (getElementById && ((obj = getElementById(objId)) != null))
        with (obj) innerHTML = unescape(newText);
}

function DisplayPasswordToUser() {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();
    objXMLHTTPRequest.open("POST", GetCalculatedUrl('Utilities/RefreshPage.aspx'), false);

    var strParams = "strCall=ResetUserPassword";
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send(strParams);

    var strCalculatedUrl = objXMLHTTPRequest.responseText;

    var objForm = document;
    var objDivTags = objForm.getElementsByTagName("span");
    var strTagId = "";
    for (i = 0; i < objDivTags.length; i++) {
        var name = "";
        if (objDivTags[i].id != null) {
            name = objDivTags[i].id;
        }

        if (name.indexOf("_USR_PASSWORD") != -1) {
            strTagId = name;
            break;
        }
    }

    MM_setTextOfLayer(strTagId, 'x', strCalculatedUrl);
    return false;
}

function ContactAdministrator() {
    var objForm = document.BaseForm;
    blnNoEmail = false;

    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var strElementName = element.name;

        //Check to see if the No Email checkbox is checked.
        if (element.type == 'checkbox' && strElementName.indexOf("NoEmailAddress") >= 0) {
            if (element.checked) {
                blnNoEmail = true;
            }
        }
    }

    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        var strElementName = element.name;

        if (element.type == 'text' && strElementName.indexOf("From") >= 0) {
            //If there is no email then disable the email textbox. otherwise enable it.
            if (blnNoEmail) {
                element.value = "";
                element.disabled = true;
            }
            else {
                element.disabled = false;
            }
        }
        if (element.type == 'checkbox' && strElementName.indexOf("EmailSendCopy") >= 0) {
            //If there is no email then disable the Include Self checkbox. Otherwise disable it.
            if (blnNoEmail) {
                element.disabled = true;
            }
            else {
                element.disabled = false;
            }
        }
    }

}

function CloseLinkingRouter()
{
    if (window.opener != null)
    {
        window.close();
    }
    else
        window.close();
}

function DeepLinkingWSRouter(strItemId, strItemType, strTarget, strButtonName) {
    var objForm = document.BaseForm;
    var blnYesChecked = false;
    if (strButtonName == 'LaunchInMainWS' || strButtonName == 'ViewInSiteSearch') {
        blnYesChecked = true;
    }
    else {
        for (i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];
            if ('radio' == element.type
			    && element.value == 'Yes'
			    && element.checked == true) {
                blnYesChecked = true;
                break;
            }
        }
        if (!blnYesChecked) {
            window.close();
            return;
        }
    }

    if (strTarget == 'ViewInSiteSearch') {
        SetSiteSearchResultsDL(strItemId);
        return false;
    }
    else {
        RouteContentLaunch(strItemId, strItemType, 'From_DeepLinking_' + strTarget);
        return false;
    }
}

function RouteUserImportViewResults(strImportType, strImportId)
{
    var strURL = GetCalculatedUrl('ImportUsers/TestUserRecords.aspx');
    strURL = strURL + '?strImportID=' + strImportId + '&strImportType=' + strImportType;

    window.open(strURL, '_ViewResults', 'toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');
}

function LaunchImportUsersPrintVersion()
{
    newwindow = window.open(GetCalculatedUrl('ImportUsers/TestImportResults.aspx?strResult=Print'), '_PopupReport', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');

    newwindow.focus();

    return false;
}

function RouteActionMenuCallsImportUserResults(strRowId)
{
    var objForm = document.BaseForm;
    // Find associated drop-down, see if selected item is lock test.
    var varSelected = '';

    for (var i = 0; i < objForm.elements.length; i++)
    {
        var element = objForm.elements[i];

        if (element.type == 'select-one' &&
			element.name.indexOf('ActionsMenu_') != -1 &&
			element.name.indexOf(strRowId) != -1)
		{
            varSelected = element.value;
        }
    }
    
    if (varSelected == 'ML.BASE.ACT.ViewImportFile')
    {
        var objXMLHTTPRequest = CreateXMLHTTPRequest();

        objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/ViewUserImportFile.aspx"), false);

        var strParams = "strImportId=" + strRowId;

        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        objXMLHTTPRequest.send(strParams);

        var strURL = objXMLHTTPRequest.responseText;

        newwindow = window.open(strURL, '_PopupReport', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');

        if (newwindow && newwindow.open && !newwindow.closed)
        {
            newwindow.focus();
        
            return false;
        }
    }
    else if (varSelected == 'ML.BASE.ACT.ViewImportResults')
    {
        var strURL = GetCalculatedUrl('ImportUsers/TestImportResults.aspx');
    
        strURL = strURL + '?strImportID=' + strRowId + '&strResult=FromHistory';
    
        newwindow = window.open(strURL, '_ViewResults', 'toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');
    
        if (newwindow && newwindow.open && !newwindow.closed)
        {
            newwindow.focus();
        
            return false;
        }
    }
}

function RequiredHTMLBlock() {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();

    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/CheckinValidators.aspx"), false);
    var strParams = "strCall=CheckInHomepageFeed";

    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    objXMLHTTPRequest.send(strParams);

    var strResponseText = objXMLHTTPRequest.responseText;
    if (strResponseText == "") {
        alert(GetLocalizedMessage('ML.BASE.JSMSG.CheckinErrorHTMLBlock'));
        return false;
    }
    else {
        return ConfirmBeforeNavigateAway(GetLocalizedMessage('ML.BASE.JS.NavigateAway'));
    }

    return true;
}

function RequiredCertificateLaunchFile() {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();

    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/CheckinValidators.aspx"), false);
    var strParams = "strCall=CheckInCertificate";

    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    objXMLHTTPRequest.send(strParams);

    var strResponseText = objXMLHTTPRequest.responseText;
    if (strResponseText == "") {
        alert(GetLocalizedMessage('ML.BASE.JSMSG.CheckinErrorCertificate'));
        return false;
    }
    else {
        return ConfirmBeforeNavigateAway(GetLocalizedMessage('ML.BASE.JS.NavigateAway'));
    }

    return true;
}


function GetStateVariable(strStateVariableId) {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();
    objXMLHTTPRequest.open("POST", GetCalculatedUrl("Utilities/GetCalculatedUrl.aspx"), false);
    var strParams = "strCall=GetStateVariable&strStateVariableId=" + strStateVariableId;
    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    objXMLHTTPRequest.send(strParams);

    return objXMLHTTPRequest.responseText;
}

function CancelAllPostBack() {
    var c = document.getElementsByTagName("body")[0].getElementsByTagName("*");

    for (var x = 0; x < c.length; x++) {
        if (c[x].disable) {
            c[x].disable = true;
        }

    }
}

function GetAJAXUtilityResponse(strCall, strAddlParams) {
    var objXMLHTTPRequest = CreateXMLHTTPRequest();

    objXMLHTTPRequest.open("POST", GetCalculatedUrl("/Utilities/AJAXUtilities.aspx"), false);

    if (strAddlParams == null) {
        strAddlParams = '';
    }

    var strParams = "strCall=" + strCall + strAddlParams;

    objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    objXMLHTTPRequest.send(strParams);

    var strRetVal = objXMLHTTPRequest.responseText;

    return strRetVal;
}

function UserImportProgress(strProgressBarLabel, strTableStyle, strBarColorStyle, strRedirectUrl, strQueryStringValue) {
    // Wait for page / DIV to be loaded (1 second)
    if (intProgressBarPercent == -1) {
        intProgressBarPercent = 0;
        setTimeout('UserImportProgress(\'' + strProgressBarLabel + '\', \'' + strTableStyle + '\', \'' + strBarColorStyle + '\', \'' + strRedirectUrl + '\', \'' + strQueryStringValue + '\')', 1000);
        return;
    }

    var intBalance = 0;
    intProgressBarPercent = GetAJAXUtilityResponse("GetUserImportProgress", null);
    if (intProgressBarPercent == -1 || intProgressBarPercent > 100) {
        intProgressBarPercent = 100;
    }
    intBalance = 100 - intProgressBarPercent;

    var strDivID = 'divProgressBar';
    var strPB = strProgressBarLabel + " " + intProgressBarPercent + "%";
    strPB += "<table cellspacing=0 cellpadding=0 style='" + strTableStyle + "'><tr height=15><td width='" + intProgressBarPercent + "%' style='" + strBarColorStyle + "'></td><td width='" + intBalance + "%' ></td></tr></table>";
    if (document.getElementById) {
        // this is the way the standards work
        document.getElementById(strDivID).innerHTML = strPB;
    }
    else if (document.all) {
        // this is the way old msie versions work
        document.all[strDivID].innerHTML = strPB;
    }
    else if (document.layers) {
        // this is the way nn4 works
        document.layers[strDivID].innerHTML = strPB;
    }
    //
    if (intProgressBarPercent < 100) {
        setTimeout('UserImportProgress(\'' + strProgressBarLabel + '\', \'' + strTableStyle + '\', \'' + strBarColorStyle + '\', \'' + strRedirectUrl + '\', \'' + strQueryStringValue + '\')', 1000);
    }
    else {
        if (strRedirectUrl != null && strRedirectUrl != '') {
            GetAJAXUtilityResponse("SetLatestUserImportHistory", null);
            setTimeout('GenericRedirect(\'' + strRedirectUrl + '\', \'' + strQueryStringValue + '\')', 3000);
        }
    }
}

function GenericRedirect(strUrl, strQueryStringValue) {
    location.href = GetCalculatedUrl(strUrl) + strQueryStringValue;
}

function ExportUserData() {
    var strUrl = 'ImportUsers/ExportUsers.aspx';
    GenericRedirect(strUrl, '');
    return;
}

function ExportBlankTemplate() {
    var strUrl = 'ImportUsers/ExportUsers.aspx';
    GenericRedirect(strUrl, '?BLANK_TEMPLATE=T');
    return;
}

function Keep508cStateTime() {
    if (confirm(GetLocalizedMessage('ML.BASE.JSMSG.PendingSessionExpiration'))) {
        var objXMLHTTPRequest = CreateXMLHTTPRequest();
        objXMLHTTPRequest.open("POST", GetCalculatedUrl('Utilities/RefreshPage.aspx'), false);

        var strParams = "strCall=Keep508cStateTime";
        objXMLHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

        objXMLHTTPRequest.send(strParams);

        if (objXMLHTTPRequest.responseText.length == 0) {
            setTimeout(Keep508cStateTime, intCalculatedWarning);
        }
        else {
            self.location.href = GetCalculatedUrl('Login/Login.aspx');
        }
    }
}

function AccountCodeChangeBalanceValidation(source, args) {
    var objForm = document.BaseForm;
    var strAction = '';
    var strAmount = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        if (objForm.elements[i].name.toUpperCase().indexOf('CHANGEBALANCE') >= 0) {
            strAction = objForm.elements[i].value;
        }
        if (objForm.elements[i].name.toUpperCase().indexOf('ADDREMOVEAMOUNT') >= 0) {
            strAmount = objForm.elements[i].value;
        }
    }
    var blnValid = true;
    if (strAction != '' && strAmount == '') {
        blnValid = false;
    }

    if (strAction == '' && strAmount != '') {
        blnValid = false;
    }

    args.IsValid = blnValid;

    return;
}

function DisableUITSubmitButtons() {
    var strMsg = GetLocalizedMessage('ML.BASE.JSMSG.TestingUserImportRecords');
    YUIShowLoading(strMsg);
    document.BaseForm.submit();
    window.setTimeout("DisableUIButtons()", 0);
}

function DisableUIButtons() {
    var objForm = document.BaseForm;
    for (var i = 0; i < objForm.elements.length; i++) {
        if (objForm.elements[i].name.toUpperCase().indexOf('TESTBUTTON') >= 0 ||
            objForm.elements[i].name.toUpperCase().indexOf('IMPORTBUTTON') >= 0) {
            objForm.elements[i].disabled = true;
        }
    }
}
/*function DisableUsesPerUserTextBoxes()
{
var objForm = document.BaseForm;
var boolUnlimited = false;
var boolMinPurchase = false;
	
for (i =  0; i < objForm.elements.length; i++)
{
var element = objForm.elements[i];
if('radio' == element.type && element.value == 'Unlimited'
&& element.checked == true)
{
boolUnlimited = true;
break;
}
		
}
for (i =  0; i < objForm.elements.length; i++)
{
var element = objForm.elements[i];
if('text' == element.type)
{
var strElementName = element.name;
			
if (strElementName.indexOf('DSC_USES_PER_USR_VAL') != -1)
{
if(true == boolUnlimited )
{
element.disabled = true;
break;
}
else
{
element.disabled = false;
break;
}
				
}
			
}
}
}*/
function DisableUsesPerUserTextBoxes() {
    var objForm = document.BaseForm;
    var boolMinPurchase = false;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if ('radio' == element.type && element.value == 'Unlimited'
			&& element.checked == true) {
            boolMinPurchase = true;
            break;
        }
    }
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if ('text' == element.type) {
            var strElementName = element.name;

            if (strElementName.indexOf('DSC_USES_PER_USR_VAL') != -1) {
                if (true == boolMinPurchase) {
                    element.disabled = true;
                    element.value = "";
                    break;
                }
                else {
                    element.disabled = false;
                    break;
                }

            }
        }
    }
}

function ValidateUsesPerUserValue(source, args) {

    var objForm = document.BaseForm;
    var boolLimited = false;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if ('radio' == element.type && element.value == 'Limited'
			&& element.checked == true) {
            boolLimited = true;
            break;
        }

    }
    var objElement = document.getElementById(source.controltovalidate);
    var objValue = objElement.value;

    if (boolLimited) {
        var strRegExp = /^\d+$/;
        args.IsValid = strRegExp.test(objValue);
        if (objValue == '0') {
            args.IsValid = false;
        }
    }

    // 508c - show alert
    if (blnUser508Support && !args.IsValid) {
        alert(GetLocalizedMessage("ML.BASE.VAL.UsesPerUserValue"));
    }
    return;

}

function DisableMinPurchaseTextBoxes() {
    var objForm = document.BaseForm;
    var boolMinPurchase = false;

    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if ('radio' == element.type && element.value == 'NoMinimum'
			&& element.checked == true) {
            boolMinPurchase = true;
            break;
        }
    }
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];
        if ('text' == element.type) {
            var strElementName = element.name;

            if (strElementName.indexOf('DSC_MIN_PURCH_VAL') != -1) {
                if (true == boolMinPurchase) {
                    element.disabled = true;
                    element.value = "";
                    break;
                }
                else {
                    element.disabled = false;
                    break;
                }

            }
        }
    }
}

function NavigateToTimeZoneUpdate() {
    var strUrl = GetCalculatedUrl('User/UpdateUserTimeZone.aspx');
    newwindow = window.open(strUrl, '_NavigateToTimeZoneUpdate', 'toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
        return false;
    }
    return false;
}

function RoutePageActionMenu(strTabMenuId, strMessage) {
    var objForm = document.BaseForm;
    // Find associated drop-down, see if selected item is Delete.
    var varSelected = '';
    for (var i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        if (element.type == 'select-one' &&
			element.name.indexOf(strTabMenuId) != -1) {
            varSelected = element.value;
        }
    }
    if (varSelected == 'ML.BASE.ACT.ExportUserData') {
        if (confirm(strMessage)) {
            ExportUserData();
        }
        return false;
    }
    if (varSelected == 'ML.BASE.ACT.DownloadTemplate') {
        ExportBlankTemplate();
        return false;
    }

}

function OpenDiscountCodeHelpPage() {
    strUrl = GetCalculatedUrl('ECommerce/DiscountCodeHelp.aspx');
    newwindow = window.open(strUrl, '_PopupReport', 'toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }
    return false;
}

function ShowUnavailableACodes() {
    strUrl = GetCalculatedUrl('ECommerce/UnavailPaymentNumbers.aspx');
    newwindow = window.open(strUrl, '_PopupReport', 'toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=840,height=620');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }
    return false;
}

//  Used by SearchProfile pages (EditMetadata and Wizard) to enable/disable fields based off of Search Results radio button.
function UpdateSearchResultFieldStatuses() {
    var objForm = document.BaseForm;
    var blnKeyword = false;
    //alert('Fired UpdateSearchResultFieldStatuses');
    //  Loop through and get status of 'Search Results' radio button
    for (i = 0; i < objForm.elements.length; i++) {
        var element = objForm.elements[i];

        //alert('Name: ' + element.name + '\nId: ' + element.id + '\nValue: ' + element.value + '\nChecked: ' + element.checked + '\nLabel: ' + element.label );
        if (element.type == 'radio' && element.value == 'ML.BASE.SEARCHRESULT.OPTIONS.Keyword' && element.checked == true) {
            blnKeyword = true;
            break;
        }
    }

    //  If Keyword is not the radio button selected, disable Search Text and Search Type
    for (j = 0; j < objForm.elements.length; j++) {
        var element = objForm.elements[j];

        //  If the element is SRCHPROF_SEARCHFOR Text box, disable and clear value
        if (element.name.lastIndexOf('SRCHPROF_SEARCHFOR') != -1 || element.name.lastIndexOf('PersonalSearchprofile') != -1) {
            if (blnKeyword == false) {
                element.disabled = true;
                element.value = '';
                continue;
            }
            else {
                element.disabled = false;
                continue;
            }
        }

        //  If the element is SRCHPROF_SEARCHTYPE drop down, disable and set selected value back to 'Any words'
        if (element.name.lastIndexOf('SRCHPROF_SEARCHTYPE') != -1) {
            if (blnKeyword == false) {
                element.disabled = true;
                element.value = 'ML.BASE.DV.SearchAnyWords';
                continue;
            }
            else {
                element.disabled = false;
                continue;
            }
        }
        element.name.lastIndexOf('SRCHPROF_SEARCHTYPE') != -1
    }
}

function ShowLoading(strMessage) {
    YUIShowLoading(strMessage);
    setTimeout(DoNothing, 100);
    return true;
}

function YUIShowPreviewMode() {
    YAHOO.namespace("example.container");
    // Initialize the temporary Panel to display while waiting for external content to load
    YAHOO.example.container.wait =
		    new YAHOO.widget.Panel("wait",
			    { width: "200px",
			        height: "30px",
			        fixedcenter: false,
			        close: false,
			        draggable: true,
			        underlay: "none",
			        zindex: 99,
			        modal: true,
			        visible: false
			    }
		    );

    var strWaitImage = '<div style="text-align:center">' + GetLocalizedMessage("ML.BASE.PreviewOnly") + '</div>';

    YAHOO.example.container.wait.setBody(strWaitImage);
    YAHOO.example.container.wait.render(document.body);

    // Show the Panel   
    YAHOO.example.container.wait.show();
}

function YUIShowLoading(strMessage) {
    var strHeader = GetLocalizedMessage("ML.BASE.PleaseWait");

    if (strMessage == null) {
        strMessage = strHeader;
    }

    YAHOO.namespace("example.container");
    // Initialize the temporary Panel to display while waiting for external content to load
    YAHOO.example.container.wait =
		    new YAHOO.widget.Panel("wait",
			    { width: "240px",
			        height: "100px",
			        fixedcenter: true,
			        close: false,
			        draggable: false,
			        underlay: "none",
			        zindex: 999,
			        modal: true,
			        visible: false
			    }
		    );

    var strWaitImage = '<div style="text-align:center">' + strMessage + '<br><br><img height="20" width="200" src="/Skins/YUISkins/rel_interstitial_loading.gif" /></div>';

    YAHOO.example.container.wait.setHeader(strHeader);
    YAHOO.example.container.wait.setBody(strWaitImage);
    YAHOO.example.container.wait.render(document.body);

    // Show the Panel   
    YAHOO.example.container.wait.show();
}

function YUIShowDialog() {
    if (blnUser508Support) {
        return;
    }
    // Instantiate the Dialog
    YAHOO.namespace("example.container");

    // Define various event handlers for Dialog
    var handleYes = function() {
        alert("You clicked yes!");
        this.hide();
    };

    var handleNo = function() {
        this.hide();
    };

    YAHOO.example.container.simpledialog1 =
	new YAHOO.widget.SimpleDialog("simpledialog1",
			 { width: "300px",
			     fixedcenter: true,
			     visible: false,
			     draggable: false,
			     close: true,
			     text: "Do you want to continue?",
			     icon: YAHOO.widget.SimpleDialog.ICON_HELP,
			     constraintoviewport: true,
			     buttons: [{ text: "Yes", handler: handleYes, isDefault: true },
						  { text: "No", handler: handleNo}]
			 });

    YAHOO.example.container.simpledialog1.setHeader("Are you sure?");

    // Render the Dialog
    YAHOO.example.container.simpledialog1.render(document.body);

    YAHOO.example.container.simpledialog1.show();
}

function DoNothing() {
}

function LaunchApproveDenyWindow(strApprovalFlag) {
    newwindow = window.open(GetCalculatedUrl('Content/AccessApproval/BulkApproval.aspx') + '?strApprovalFlag=' + escape(strApprovalFlag), '_BulkApproveDeny', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');
    if (newwindow && newwindow.open && !newwindow.closed) {
        newwindow.focus();
    }

    return false;
}

function CloseApproveDenyWindow() {
    window.opener.location = window.opener.location.href;
    self.close();
}

function ApplyProgressValues(strMessage, strScoreMessage, strCGIScoreMessage, strDoneMessage) {
    var objForm = document.BaseForm;
    var strScore = '';
    var strProgressStatus = '';
    var blnAttendance = false;
    var blnScoreInvalid = false;

    if (ConfirmClick(strMessage)) {
        //Get the values from the main form.
        for (var i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];

            if (element.type == 'text' && element.name.indexOf('USR_SCORE') != -1) {
                if (element.value.match(/^\d*(\.\d{1,2})?$/) != null) {
                    strScore = element.value;
                    if (strCGIIntegration == 'ON') {
                        //for CGI maxlength is 5
                        if (element.value.length > 5) {
                            blnScoreInvalid = true;
                            break;
                        }
                    }
                    else {
                        //base maxlength is 9
                        if (element.value.length > 9) {
                            blnScoreInvalid = true;
                            break;
                        }
                    }
                }
                else {
                    blnScoreInvalid = true;
                    break;
                }
            }

            if (element.type == 'select-one' && element.name.indexOf('USR_PROGRESS_STATUS') != -1) {
                strProgressStatus = element.value;
            }

            if (element.type == 'checkbox' && element.name.indexOf('USR_ATTENDANCE') != -1 && element.checked) {
                blnAttendance = true;
            }
        }

        //if one of the score values is invalid then can't submit the form.
        if (blnScoreInvalid) {
            if (strCGIIntegration == 'ON') {
                alert(strCGIScoreMessage);
            }
            else {
                alert(strScoreMessage);
            }
            return false;
        }

        for (var i = 0; i < objForm.elements.length; i++) {
            var element = objForm.elements[i];

            if (element.type == 'text' && element.name.indexOf('PRG_FINAL_SCORE') != -1) {
                element.value = strScore;
            }

            if (element.type == 'select-one' && element.name.indexOf('PRG_ALTERNATE_STATUS') != -1) {
                element.value = strProgressStatus;
            }

            if (element.type == 'checkbox' && element.name.indexOf('attendance') != -1) {
                if (blnAttendance) {
                    element.checked = true;
                }
                else {
                    element.checked = false;
                }
            }
        }

        alert(strDoneMessage);
    }

    return false;
}
function ValidateAndConfirmCheckBoxSelectAndCount(TheForm, strPrefix, strAlert, strConfirm, strCountAlert) {
    if (!ValidateAndCountCheckBoxSelect(TheForm, strPrefix, strAlert, strCountAlert)) {
        return false;
    }

    return true;
}
function ValidateAndCountCheckBoxSelect(TheForm, strPrefix, strMessage, strCountMessage) {
    var intCheckbox;
    var intSelectCheckboxCount;

    intCheckbox = -1;
    intSelectCheckboxCount = 0;
    for (var i = 0; i < TheForm.elements.length; i++) {
        var strElementName;
        strElementName = TheForm.elements[i].name;
        if (TheForm.elements[i].type == 'checkbox' && strElementName.indexOf(strPrefix) >= 0) {
            if (TheForm.elements[i].checked) {
                intCheckbox = i;
                intSelectCheckboxCount = intSelectCheckboxCount + 1;
            }
        }
    }

    if (intCheckbox == -1) {
        alert(strMessage);
        return false;
    }
    else if (intSelectCheckboxCount > 20) {
        alert(strCountMessage);
        return false;
    }

    return true;
}

function ConfirmPayment(strID, strButtonId, strAlertMessage, strConfirmMessage) {
    var objForm = document.BaseForm;

    if (strButtonId.indexOf('ML.BASE.LBL.Pay') != -1) {
        for (var i = 0; i < objForm.elements.length; i++) {
            if (objForm.elements[i].type == 'select-one' && objForm.elements[i].name.indexOf(strID) >= 0) {
                if (objForm.elements[i].value == '') {
                    alert(strAlertMessage);
                    return false;
                }
                else {
                    return confirm(strConfirmMessage);
                }
            }
        }
    }
}

function LaunchDLContentFromMessage(strURL) {
    var intIndex = strURL.lastIndexOf('?');
    var strContent = strURL.substr(intIndex + 1, strURL.length);

    //Split on '&' in case more parameters are added.
    var strVars = strContent.split('&');
    //Split on '=' to get the key/value array.
    var strVar = strVars[0].split('=');

    var strContentId = strVar[1];

    //Get the windows features for the given content.
    strWindowFeatures = GetContentWindowFeatures(strContentId);

    //Open the URL in a window set to the window features associated with the content.
    window.open(strURL, '_new', strWindowFeatures);
}

function DisableOnSubmit(obj) {
    YUIShowLoading(null);
    document.BaseForm.submit();
    window.setTimeout("DisableButton('" + obj.name + "')", 0);
}

function DisableButton(strID)
{
    var TheForm = document.BaseForm;

    for (var i = 0; i < TheForm.elements.length; i++)
    {
        if (TheForm.elements[i].name.indexOf(strID) >= 0)
        {
            TheForm.elements[i].disabled = true;
        }
    }
}

function getModalDialog(strItemId, strMessageId, cgi, buttons, winWidth, winHeight)
{
    var output = "";
    
    if (browser.isMozilla)
    {
        output = window.showModalDialog(GetCalculatedUrl('CustomDialogBox.aspx') + '?strMessageId=' + strMessageId + "&strItemId=" + strItemId + "&cgi=" + cgi + "&buttons=" + buttons, this, "dialogWidth=" + winWidth + "px;dialogHeight=" + winHeight + "px;dialogTop =300px;dialogLeft=440px;");
    }
    else
    {
        output = window.showModalDialog(GetCalculatedUrl('CustomDialogBox.aspx') + '?strMessageId=' + strMessageId + "&strItemId=" + strItemId + "&cgi=" + cgi + '&buttons=' + buttons, this, 'dialogWidth=' + winWidth + 'px;dialogHeight=' + winHeight + 'px;');
    }
    
    return output;
}

function ServerConnectionStatus()
{
    try
    {
        var objXMLHTTPRequest = CreateXMLHTTPRequest();

        objXMLHTTPRequest.open("POST", GetCalculatedUrl('Utilities/RefreshPage.aspx'), false);

        var strParams = "strCall=GetServerResponse";

        objXMLHTTPRequest.setRequestHeader ("Content-type", "application/x-www-form-urlencoded");

        //  Below statement is in place for this to work in Firefox.
        if (browser.isMozilla)
        {
            objXMLHTTPRequest.onerror = function(){};
        }

        objXMLHTTPRequest.send(strParams);	

        if (objXMLHTTPRequest.status != 200 || objXMLHTTPRequest.responseText != "OK")
        {
            alert(strServerConnectionStatus);

            self.close();
        }
        else if (objXMLHTTPRequest.status == 200)
        {    
            setTimeout(ServerConnectionStatus, 300000);
        }
    }
    catch (err)
    {
        alert(strServerConnectionStatus);

        self.close();
    }
}

function DomainSkinPreview(strItemId, strMessage)
{
    newwindow = window.open(GetCalculatedUrl('PersonalHomepage/PersonalHomepageStart.aspx') + '?strViewMode=Preview&strSkinId=' + escape(strItemId), '_PreviewSkin', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=910,height=480');

    if (newwindow && newwindow.open && !newwindow.closed)
    {
        newwindow.focus();
    }
        
    return false;
}