var bWhichCenter = 0 //
var bCheckOverides = false
var bSessionsAvailable = false
var oldSessionObj = null;
var bMultiSession = false;

function loadPage(inForm, SPage)
{
	var iMonth = inForm.month.options[inForm.month.selectedIndex].value;
	var iYear = inForm.year.options[inForm.year.selectedIndex].value;
	var iTestRegistrationID = inForm.testregistrationid.value;
	var iScheduleID = inForm.scheduleid.value;
	var iTestId = inForm.testid.value;
	var iTestCenterId = inForm.testcenterid.value;
	var iDuration = inForm.duration.value;
	var SSelectedPortionID = inForm.selectedportionid.value;
	var SMode = inForm.mode.value;
	var SOverRide = inForm.over_ride_scheduling_rules.value;
	var SSchedulingMode=454;

	if(inForm.schedulingmode)
	{
		SSchedulingMode=inForm.schedulingmode.value;
	}
	// if selected month is lesser than current month assume that user wants to select
	//next year month so increment year by one
	CurDate = new Date();
	iCurmonth = CurDate.getMonth();
	iCurYear = CurDate.getYear();
	if(iMonth < iCurmonth)
	{
		if(iYear <= iCurYear)
		{
			iYear = parseInt(iYear) +1;
		}
	}

	window.name="schedule";
	window.open(SPage+"&mode="+SMode+"&selectedportionid="+SSelectedPortionID+"&duration="+iDuration+"&testcenterid="+iTestCenterId+"&cid="+inForm.cid.value+"&id_type="+inForm.id_type.value+"&regn_id="+inForm.regn_id.value+"&testid="+iTestId+"&month="+iMonth+"&year="+iYear+"&testregistrationid="+iTestRegistrationID+"&scheduleid="+iScheduleID+"&over_ride_scheduling_rules="+SOverRide+"&schedulingmode="+SSchedulingMode, "schedule");
}
function getTestCenterSessions(inForm, SSelectedDate, SActionName, SActionPage)
{
    document.forms[0].selecteddate.value = SSelectedDate;
    document.forms[0].actionname.value = SActionName;

	document.forms[0].action = SActionPage;
	document.forms[0].submit();
}
function validateSchedule(inForm)
{
	var bSelected = false;

    bPortionIsSelected = validateCheckBox(MSG_SELECT_A_PORTION_TO_SCHEDULE,inForm.index);
    if(bPortionIsSelected == false)
    {
        return false;
    }
    // Now check whether candidate is blocked or not
    if(inForm.candidate_blocked)
    {
    	if(trim(inForm.candidate_blocked.value) == 'true')
    	{
    		bOverRideCandidateStatus = confirm('Candidate is blocked. Do you still want to schedule for the test?');
    		if(bOverRideCandidateStatus)
    		{
    			if(inForm.over_ride_candidate_status)
    			{
    				inForm.over_ride_candidate_status.value = 'true';
    			}
    		}
    		else
    		{
    			return false;
    		}
    	}
    }
	var bSelected = false;
	if (document.forms[0].sessiondate.length)
	{
		for (i=0;i<document.forms[0].daily_scheduleid.length;i++)
		{
			if (document.forms[0].sessiondate[i].checked && document.forms[0].daily_scheduleid[i].selectedIndex != 0)
			{
				bSelected = true;
				document.forms[0].dailyscheduleid.value = document.forms[0].daily_scheduleid[i].value;
				document.forms[0].selecteddate.value = document.forms[0].Session_Date[i].value;
				break;
			}
		}
		if (!bSelected)
		{
			alert(sMessageArr[MSG_SESSION_NOT_SELECTED]);
			return false;
		}
	}
	else
	{
		if (document.forms[0].daily_scheduleid.selectedIndex == 0)
		{
			alert(sMessageArr[MSG_SESSION_NOT_SELECTED]);
			return false;
		}
		document.forms[0].dailyscheduleid.value = document.forms[0].daily_scheduleid.value;
		document.forms[0].selecteddate.value = document.forms[0].Session_Date.value;
	}

	return true;
}

function selectTestCenter(inForm, iIndex)
{
	if (parseInt(inForm.testcentercount.value) <= 1)
	{
		inForm.testcenterid.checked = true;
	}
	else
	{
		inForm.testcenterid[iIndex].checked = true;
	}
}

function selectSessionDate(inForm, iIndex)
{
	if (inForm.sessiondate.length)
	{
		inForm.sessiondate[iIndex].checked = true;
	}
	else
	{
		inForm.sessiondate.checked = true;
	}
}

function validateTestSelection(obj, pageAction)
{
	var inForm = obj.form
	var tmpObj = getSelectedObject(inForm.registrationid);
    if (tmpObj == null)
    {
        alert(sGlobalMessageArr[MSG_TEST_NOT_SELECTED]);
        return false;
    }

    inForm.testregistrationid.value = tmpObj.value;

    var statusobj=inForm.testregistrationid.value+"_status";
    var testobj=inForm.testregistrationid.value+"_test";
    var scheduleobj = inForm.testregistrationid.value+"_scheduleid";

    if(document.getElementById(statusobj))
    {
        inForm.status.value=(document.getElementById(statusobj)).value;

        if(inForm.status.value=='CSS2')
        {
           inForm.isrescheduling.value='true';
        }
    }

    if(document.getElementById(testobj))
    {
        inForm.testid.value=(document.getElementById(testobj)).value;
    }

    if(document.getElementById(scheduleobj) && inForm.status.value !='CSRS4'  && inForm.status.value !='CSS2')
    {
        inForm.scheduleid.value=(document.getElementById(scheduleobj)).value;
    }
    if(inForm.status.value =='CSS2')
    {
        inForm.prevscheduleid.value=(document.getElementById(scheduleobj)).value;
        inForm.isrescheduling.value='true';
    }

    if (pageAction != null) inForm.action = pageAction
    if (inForm.regn_id) inForm.regn_id.value = getSelectedObject(inForm.registrationid).value

	return true;
}

function validateScheduleSelection(obj, pageAction)
{
	var inForm = obj.form
	var tmpObj = getSelectedObject(inForm.registrationid);
    if (tmpObj == null)
    {
        alert(sGlobalMessageArr[MSG_TEST_NOT_SELECTED]);
        return false;
    }

    inForm.testregistrationid.value = tmpObj.value;

    var statusobj=inForm.testregistrationid.value+"_status";
    var testobj=inForm.testregistrationid.value+"_test";
    var scheduleobj = inForm.testregistrationid.value+"_scheduleid";
    inForm.licenseagency.value = document.getElementById(inForm.testregistrationid.value+"_licenseagency").value;
    inForm.testname.value = document.getElementById(inForm.testregistrationid.value+"_testname").value;

    if(document.getElementById(statusobj))
    {
        inForm.status.value=(document.getElementById(statusobj)).value;

        if(inForm.status.value=='CSS2')
        {
           //inForm.isrescheduling.value='true';
        }
    }

    if(document.getElementById(testobj))
    {
        inForm.testid.value=(document.getElementById(testobj)).value;
    }

    if(document.getElementById(scheduleobj) && inForm.status.value !='CSRS4'  && inForm.status.value !='CSS2')
    {
        inForm.scheduleid.value=(document.getElementById(scheduleobj)).value;
    }
    if(inForm.status.value =='CSS2')
    {
        inForm.prevscheduleid.value=(document.getElementById(scheduleobj)).value;
        //inForm.isrescheduling.value='true';
    }

    if (pageAction != null) inForm.action = pageAction
    if (inForm.regn_id) inForm.regn_id.value = getSelectedObject(inForm.registrationid).value
    obj.disabled = true;
    inForm.submit();
	
}



function validateScheduleTestSelection(inForm)
{
	var bSelected = false;
	var bNoErrorExists = true;
    document.forms[0].target = "";

	if (parseInt(inForm.testcount.value) <= 1)
	{
		if (inForm.testscheduleid.checked == false)
		{
			if(eval(document.all.item("button_clicked")) && trim(document.forms[0].button_clicked.value) != '4')
			{
				alert('Select a schedule to do the operation');
				return false;
			}
			else if(!eval(document.all.item("button_clicked")))
			{
			    alert(sGlobalMessageArr[MSG_TEST_NOT_SELECTED]);
				return false;
			}
		}
		else
		{
			inForm.scheduleid.value = inForm.testscheduleid.value;
		}
	}
	else
	{
		// start with 0, then if atlease one selected set increment one
		iSelectedCount = 0;
		for (i=0;i<inForm.testscheduleid.length;i++)
		{
			if (inForm.testscheduleid[i].checked == true)
			{
				inForm.scheduleid.value = inForm.testscheduleid[i].value;
				bNoErrorExists = true;
				iSelectedCount++;
			}
		}
		if (iSelectedCount == 0)
		{
			if(eval(document.all.item("button_clicked")) && trim(document.forms[0].button_clicked.value) != '4')
			{
				alert('Select a schedule to do the operation');
				bNoErrorExists = false;
			}
			else if(!eval(document.all.item("button_clicked")))
			{
			    alert(sGlobalMessageArr[MSG_TEST_NOT_SELECTED]);
				return false;
			}
		}
	}
	var bCancelIt =true;
	if(bNoErrorExists)
	{
		if(document.forms[0].button_clicked)
		{
			//this variable gets the context root 
			var ctxtRoot = inForm.context_root.value;
			if(trim(inForm.button_clicked.value) == '1')
			{
				inForm.action=ctxtRoot+'/schedule/scheduled_test_details.jsp';
			}
			else if(trim(inForm.button_clicked.value) == '2')
			{
				//document.forms[0].action='/schedule/schedule_test_testcenter.jsp';
                //alert("setting the values");
				inForm.action=ctxtRoot+'/schedule/post_schedule.jsp';
                		inForm.actionname.value = 303;

                	/*	var rdbObj = document.all.item("testscheduleid")
				if (rdbObj.length)
				{
				    for(i=0;i<rdbObj.length;i++)
				    {
					if (rdbObj[i].checked)
					{
					    document.forms[0].scheduleid.value = rdbObj[i].value;
					}
				    }
				 } else {
					    document.forms[0].scheduleid.value = rdbObj.value;
                 		} */
			}
			else if(trim(document.forms[0].button_clicked.value) == '3')
			{
				bCancelIt =false;

				bCancelIt = confirm('Are you sure you want to cancel the schedule?');
				if(bCancelIt)
				{
					document.forms[0].action=ctxtRoot+'/schedule/post_cancel_schedule.jsp';
				}
				return bCancelIt;
			}
			else if(trim(document.forms[0].button_clicked.value) == '4')
			{
                //popup a new window, that would show pdf doc
                document.forms[0].target = "_new";
                document.forms[0].action = ctxtRoot+'/contentdisplay';
				return bCancelIt;
			}
		}
		else
		{
			document.forms[0].action=ctxtRoot+'/schedule/scheduled_test_details.jsp';
		}
	}
	return bNoErrorExists;
}

function setButtonClicked(whichOne)
{
	if(document.forms[0].button_clicked)
	{
		document.forms[0].button_clicked.value = whichOne;
	}
}

function cancelSchedule()
{	
	var bCancelIt = false;
	var ctxtRoot = document.forms[0].context_root.value;
	bCancelIt = confirm('Are you sure you want to cancel the schedule?');
	if(bCancelIt)
	{
		document.forms[0].action=ctxtRoot+'/schedule/post_cancel_schedule.jsp';
	}
	return bCancelIt;
}

function callReschedulingFlow(inForm,actionname)
{
    	inForm.actionname.value=actionname;
    	//this variable gets the context root 
	var ctxtRoot = inForm.context_root.value;
	inForm.action=ctxtRoot+'/schedule/post_schedule.jsp';
	return true;
}

function goBackToCandidateList(inForm, SAction)
{
	SQueryString = "?dummy=" + (new Date());
	SQueryString = SQueryString + '&actionname=' + SAction;
	//this variable gets the context root 
	var ctxtRoot = inForm.context_root.value;
	if (inForm.candidateid)
	{
		SQueryString = SQueryString +
			'&candidateid=' + inForm.candidateid.value;
	}
	if (inForm.candidateidtype)
	{
		SQueryString = SQueryString + '&candidateidtype=' + inForm.candidateidtype.value;
	}
	window.name = "search";
	window.open(ctxtRoot+"/candidate/search_results.jsp" + SQueryString, "search");
}

function goBackToTestCenterList(inForm, iRegnID)
{
	 window.name = "search";
	//this variable gets the context root 
	var ctxtRoot = inForm.context_root.value;
	var SMode = inForm.mode.value;
	var SOverRide = inForm.over_ride_scheduling_rules.value;
	var iScheduleID = inForm.scheduleid.value;
	var testId = inForm.testid.value;
	
	window.open(ctxtRoot+"/schedule/schedule_test_testcenter.jsp?scheduleid="+iScheduleID+"&mode="+SMode+"&over_ride_scheduling_rules="+SOverRide+"&testregistrationid="+iRegnID+"&testid="+testId, "search");
}

function fnCheckTestingMode(obj)
{
    varCandidateTestingMode = Schedule.txtTestingMode.value;
    varTestCenterTestingMode = obj.parentElement.parentElement.attTestingMode;
    if (obj.checked && varTestCenterTestingMode == 502 && varCandidateTestingMode != varTestCenterTestingMode)
        alert(sMessageArr[MSG_PAPER_PENCIL_TESTMODE_ONLY]);
}

function fnGenerateForm(obj)
{
    if (obj.checked)
        updateActionName(obj.form, obj.value)
    else
        updateActionName(obj.form, obj.reval)
}

function testCenterSelect(obj)
{
	inForm = obj.form
	if(!validateTestCenterSelection(inForm))
	{
		alert('please select a test center');
		return false;
	}

	if(inForm.selecttestcenterid.length)
	{
		var itestcenterlength=inForm.selecttestcenterid.length;
		for(i=0;i<itestcenterlength;i++)
		{
			if(inForm.selecttestcenterid[i].checked)
			{
				inForm.testcenterid.value = inForm.selecttestcenterid[i].value;
			}
		}
	}
	else
	{
		if(inForm.selecttestcenterid.checked)
		{
			inForm.testcenterid.value = inForm.selecttestcenterid.value;
		}
	}
	obj.disabled = true;
	inForm.submit();
}

function validateTestCenterSelection(inForm)
{
	var testcenterselected = false;
	if(inForm.selecttestcenterid.length)
	{
		var itestcenterlength = inForm.selecttestcenterid.length;

		for(i=0;i<itestcenterlength;i++)
		{
			if(inForm.selecttestcenterid[i].checked)
			{
				testcenterselected = true;
				break;
			}
		}
	}
	else
	{
		if(inForm.selecttestcenterid.checked)
		{
			testcenterselected = true;
		}
	}
	return testcenterselected;
}

function fnGetSessions(obj)
{
	frm = obj.form
	
	var tableObj = document.getElementById('testcenterdetailsTable');
    if(tableObj)
    {
        if(tableObj.rows.length > 0)
        {
            for( i=1;i<tableObj.rows.length;i++)
            {
				if(tableObj.rows[i].cells[0].innerText == 'No TestCenters found for the selected test portions.')
				{
					alert("No Testcenters found.");
                    return false;
				}
            }
        }
    }
	
	if(!validateTestCenterSelection(frm))
	{
		alert('please select a test center');
		return false;
	}

    if (getSelectedObject(frm.selectportion) == null)
    {
        alert(sMessageArr[MSG_SELECT_A_PORTION_TO_SCHEDULE]);
        return false;
    }
	frm.testcenterid.value = getSelectedObject(frm.selecttestcenterid).value

	frm.portionids.value = ""
	if (frm.selectportion.length)
	{
	    for (iRow = 0; iRow < frm.selectportion.length; iRow++)
	        if (frm.selectportion[iRow].checked) frm.portionids.value = "" + frm.portionids.value + frm.selectportion[iRow].value + ","
    }
    else
        frm.portionids.value = "" + frm.selectportion.value

    if (frm.portionids.value.substring(frm.portionids.value.length-1) == ",")
        frm.portionids.value = frm.portionids.value.substring(0, frm.portionids.value.length-1)

	obj.disabled = true;
	frm.submit();
}

function fnCheckPortion(obj)
{
    fnShowTestCenters(obj)
}

function checkPortion(obj)
{
    showTestCenters(obj)
}

function fnHideTestCentersOnLoad(val)
{
    fnShowTestCenters(null, val)
}

function fnOverRideSchedulingRules(obj)
{
    var inForm = obj != null ? obj.form : schedule_test
    if (!bSessionsAvailable && inForm.over_ride_scheduling_rules && !inForm.over_ride_scheduling_rules.checked)
    {
        //alert("No TestCenters found for the selected test portions.")
        return false
    }
	
	//this variable gets the context root 
	var ctxtRoot = inForm.context_root.value;

	inForm.actionname.value = inForm.txtCurrentActionName.value;
    inForm.action = ctxtRoot+"/schedule/post_schedule.jsp";

    inForm.method = "post"
	inForm.submit();
}


function fnGetTestCenters(obj, val)
{
    var inForm = obj != null ? obj.form : schedule_test
    if (!bSessionsAvailable && inForm.over_ride_scheduling_rules && !inForm.over_ride_scheduling_rules.checked)
    {
        //alert("No TestCenters found for the selected test portions.")
        return false
    }
    if (!inForm.over_ride_scheduling_rules || bCheckOverides == inForm.over_ride_scheduling_rules.checked)
    {
        var tmpSelectedObj = getSelectedObject(inForm.selecttestcenterid)
        if (tmpSelectedObj != null) tmpSelectedObj.checked = false

        fnShowTestCenters(obj, val)
        return;
    }

    if (inForm.txtWhichTestCenter) inForm.txtWhichTestCenter.value = val
    //alert(inForm.txtWhichTestCenter.value)
    inForm.btnOtherTestCenter.disabled = true
    inForm.btnTestCenter.disabled = true
    
    //this variable gets the context root 
	var ctxtRoot = inForm.context_root.value;

	inForm.actionname.value = inForm.txtCurrentActionName.value;
    inForm.action = ctxtRoot+"/schedule/post_schedule.jsp";

    inForm.method = "post"
	inForm.submit();
}

function fnShowTestCenters(obj, val)
{
    var iTotalDuration = 0;
    if (obj == null && document.all.item("selectportion").length) obj = document.all.item("selectportion")[0]
    else if (obj == null) obj = document.all.item("selectportion")
    var arrObj = document.all.item(obj.name)
    var iExtTime = parseInt(obj.form.txtExtraTimeRequired.value)
    var bOtherCenters = false

    for (k = 0; k < arrObj.length; k++)
    {
        iTotalDuration = iTotalDuration + (arrObj[k].checked ? parseInt(arrObj[k].pduration) : 0)
    }
    iTotalDuration = iTotalDuration + iExtTime

    for (m = 2; m < tblTestCenter.rows.length; m++)
    {
        if (tblTestCenter.rows(m).id == "trNotReqd")
        {
            bOtherCenters = (val == null ? bWhichCenter : val == 1);
            tblTestCenter.rows(m).style.display = bOtherCenters ? "none" : ""
            continue;
        }
        tblTestCenter.rows(m).style.display = (parseInt(tblTestCenter.rows(m).maxduration) >= iTotalDuration) ? bOtherCenters ? "none" : "" : "none"
    }
    bWhichCenter = (val == null) ? bWhichCenter : val
}

function showTestCenters(obj, val)
{
    var iTotalDuration = 0;
    if (obj == null && document.all.item("selectportion").length) obj = document.all.item("selectportion")[0]
    else if (obj == null) obj = document.all.item("selectportion")
    var arrObj = document.all.item(obj.name)
    var iExtTime = parseInt(obj.form.txtExtraTimeRequired.value)
	var testcentersNotAvailableCount = 0;

    for (k = 0; k < arrObj.length; k++)
    {
        iTotalDuration = iTotalDuration + (arrObj[k].checked ? parseInt(arrObj[k].pduration) : 0)
    }
    iTotalDuration = iTotalDuration + iExtTime

    var tableObj = document.getElementById('testcenterdetailsTable');
    if(tableObj)
    {

	    for (m = 1; m < tableObj.rows.length; m++)
	    {
			if(!(parseInt(tableObj.rows(m).maxduration) >= iTotalDuration))
			{
				testcentersNotAvailableCount++;
			}
			tableObj.rows(m).style.display = (parseInt(tableObj.rows(m).maxduration) >= iTotalDuration) ? "" : "none"
	    }

		if(tableObj.rows.length == (testcentersNotAvailableCount+1))
		{
			addNewTestCenterDetailsRow();
		}
	}
}

function addNewTestCenterDetailsRow()
{
	var table = document.getElementById("testcenterdetailsTable") ;
	var tableSize = table.rows.length;
	var row = table.insertRow( tableSize) ; 
	row.style.backgroundColor = "#FFFFFF";
	row.style.align="left";

	// Cells
	var cellLeft = row.insertCell(0) ;
	cellLeft.setAttribute("colSpan","4");
	cellLeft.setAttribute("className","tips");
	cellLeft.innerText = 'No TestCenters found for the selected test portions.'
	
}

function loadSchedulePage(inForm, SPage, actionType)
{
	inForm.actionname.value = actionType;
	inForm.action = SPage;
	inForm.submit();
}

function backToTestCenterList(inForm, SPage, actionType)
{
	inForm.actionname.value = actionType;
    inForm.action = SPage;

    inForm.method = "post"
	inForm.submit();
}

function fnOnLoad(frm)
{
    if (frm == null) frm = schedule_test
    bCheckOverides = (frm.over_ride_scheduling_rules) ? frm.over_ride_scheduling_rules.checked : false
    fnHideTestCentersOnLoad(parseInt(frm.txtWhichTestCenter.value))
    if (!bSessionsAvailable)
    {
        tblTestCenter.rows(0).style.display = "none"
        tblTestCenter.rows(1).style.display = "none"
        //tblTestCenter.rows(tblTestCenter.rows.length - 1).style.display = ""
        if (document.all.item("tipsTD"))
            document.all.item("tipsTD").innerText = "No TestCenters found for the selected test portions."
        if (document.all.item("testcenterTR"))
            document.all.item("testcenterTR").style.display = "none"
    }
}

function fnSessionOnLoad(frm)
{
    if (iSelMonth != -1)
    {
        if (frm.month)
        {
            for (i = 0; i < frm.month.options.length; i++)
            {
                if (parseInt(frm.month.options[i].value) == iSelMonth)
                {
                    frm.month.options[i].selected = true
                    break;
                }
            }
        }
        if (frm.year)
        {
            for (i = 0; i < frm.year.options.length; i++)
            {
                if (parseInt(frm.year.options[i].value) == iSelYear)
                {
                    frm.year.options[i].selected = true
                    break;
                }
            }
        }
        //frm.schedulestartdate.value = (parseInt(frm.month.value) + 1) + "/01/" + frm.year.value
    }

    frm.portionids.value = ""
    frm.extendedtime.value = ""
    frm.portionduration.value = ""

    if (frm.actualschedulestartdate && frm.actualschedulestartdate.value == "")
        frm.actualschedulestartdate.value = frm.schedulestartdate.value

	for (iRow = 0; iRow < portionTable.rows.length; iRow++)
	{
	    frm.portionids.value = "" + frm.portionids.value + portionTable.rows(iRow).pId + ((iRow < portionTable.rows.length-1) ? "," : "")
	    frm.extendedtime.value = "" + frm.extendedtime.value + portionTable.rows(iRow).extendedtime + ((iRow < portionTable.rows.length-1) ? "," : "")
	    frm.portionduration.value = "" + frm.portionduration.value + portionTable.rows(iRow).portionDuration + ((iRow < portionTable.rows.length-1) ? "," : "")
    }
}

function setSessionDate(obj)
{
    if (oldSessionObj != null && oldSessionObj != obj) oldSessionObj.options[0].selected = true
    obj.parentElement.parentElement.cells(0).children(0).checked = (obj.options.selectedIndex != 0)
    oldSessionObj = obj;

    obj.form.dailyscheduleid.value = (obj.options.selectedIndex != 0) ? obj.value : "";
    obj.form.selecteddate.value = (obj.options.selectedIndex != 0) ? obj.parentElement.parentElement.sessiondate : "";
}

function fnSchedule(obj)
{
	var frm = obj.form
	if (frm.dailyscheduleid.value == "")
	{
        alert(sMessageArr[MSG_SESSION_NOT_SELECTED]);
	    return false;
	}

    if(document.getElementById("candidate_blocked"))
    {
    	if(trim(document.getElementById("candidate_blocked").value) == 'true')
    	{
    		var bOverRideCandidateStatus = confirm('Candidate is blocked. Do you still want to schedule for the test?');
    		if(!bOverRideCandidateStatus)
    		    return false;

            if(frm.over_ride_candidate_status)
                frm.over_ride_candidate_status.value = 'true';
    	}
    }

	obj.disabled = true
	frm.submit();
	return true;
}

function fnRadio(obj)
{
    if (oldSessionObj != null) oldSessionObj.options[0].selected = true
}

function validateScheduleRequest(inForm, SJSPAction, SAction, SMsg)
{
    var bSelected = true;
    var bConfirmation = true;
    var rdbObj = document.all.item("requestid")
    if (rdbObj.length)
    {
        for(i=0;i<rdbObj.length;i++)
        {
            if (rdbObj[i].checked)
            {
                inForm.schedulerequestid.value = rdbObj[i].value;
                break;
            }
            else
            {
                bSelected = false;
            }
        }
     }
     else
     {
        if(rdbObj.checked)
        {
            inForm.schedulerequestid.value = rdbObj.value;
        }
        else
        {
            bSelected = false;
        }
     }
     if(bSelected == false)
     {
        alert("select atleast one schedule to "+SMsg+" the details ");
        return false;
     }
     if (SMsg == 'cancel')
     {
        bConfirmation = confirm("Are you sure you want to cancel the schedule?");
        if(!bConfirmation) return false;
     }
     //alert("bSelected : " + bSelected + " bConfirmation : " +bConfirmation);
     if (bSelected == true && bConfirmation == true)
     {
        inForm.actionname.value = SAction;
        inForm.action = SJSPAction;
        inForm.submit();
     }
}

function validatePaymentApproved(inForm)
{
    if(inForm.amount_received.value == "")
    {
        alert("Amount Received should not be null");
        inForm.amount_received.focus();
        return false;
    }
    if(isNaN(parseFloat(inForm.amount_received.value)))
    {
        alert("Please enter a numeric value for Amount Received ");
        inForm.amount_received.value="";
        inForm.amount_received.focus();
        return false;
    }

    if(parseFloat(inForm.amount_received.value) <  parseFloat(inForm.total_calculated_fee.value))
    {
        var dueAmount = formatToDecimal(inForm.total_calculated_fee.value - inForm.amount_received.value , 2);
        var confirmation = confirm("Amount received is less than the total amount that needs to be paid. Due is $"+dueAmount+ ". Do you want to weive the fee ?");
        if (confirmation == true)
        {
            inForm.is_fee_amount_waived.value = "true";
            inForm.amount_waived.value = dueAmount;
        }
        else
        {
            return false;
        }
    }
    inForm.submit();
}

function validateCreateScheduleRequest(inForm,SJSPAction,SAction)
{
    var bSelected = true;
    rdbObj = document.all.item("rdbRegnID");

    if (rdbObj.length)
    {
        for(i=0;i<rdbObj.length;i++)
        {
            if (!rdbObj[i].checked)
            {
                bSelected = false;
            }
        }
     }
     else
     {
        if(!rdbObj.checked)
        {
            bSelected = false;
        }
     }

     if (bSelected == true)
     {
		if(inForm.prevscheduleid.length)
		{
            for (i=0;i<inForm.prevscheduleid.length;i++)
            {
                    inForm.scheduleid.value = inForm.prevscheduleid[i].value;
            }
        }
        else
        {
                    inForm.scheduleid.value = inForm.prevscheduleid.value;
        }

        inForm.actionname.value = SAction;
        inForm.action = SJSPAction;
        inForm.submit();
     }
     else
     {
        alert("Record not selected to create schedule request");
        return false;
     }
}

function fnOverridRules(obj, act)
{
    var frm = obj.form
    frm.actionname.value = act;
    obj.disabled = true
    frm.submit()
}

function formatToDecimal(number,X)
{
    // rounds number to X decimal places, defaults to 2
    X = (!X ? 2 : X);
    //return (Math.round(number*Math.pow(10,X))/Math.pow(10,X)).toFixed(X);

    //if (parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("MSIE ")+("MSIE ").length, 4)) >= 5.5)
    //    return (Math.round(number*Math.pow(10,X))/Math.pow(10,X)).toFixed(X);
    //else
        return toFixedDecimal(Math.round(number*Math.pow(10,X))/Math.pow(10,X), X)
}


function toFixedDecimal(num, digits)
{
    if (digits == null) digits = 2;
    var T, S=new String(Math.round(num * Math.pow(10, digits)))
    while (S.length<digits) S='0'+S
    return S.substr(0, T=(S.length-digits)) + '.' + S.substr(T, digits)
}

function checkForPortionSelection(scheduleform)
{
    var bNotSelected=true;
    if(scheduleform.portionid.length)
    {
        for(var i=0; i < scheduleform.portionid.length; i++)
        {
            if(scheduleform.portionid[i].checked)
            {
                bNotSelected=false;
                break;
            }
        }
    }

    if(bNotSelected)
    {
        alert("Portion not selected for scheduling");
        return false;
    }
    //scheduleform.submit.disabled = true;
    return true;
}

function validateScheduleDates(btnObj, actionid)
{
    var inForm = btnObj.form;
    if(inForm.schedulestartdate.value == "")  
    {
        alert("select the schedule start date");
        return false;
    }
    else if(inForm.scheduleenddate.value == "")
    {
        alert("select the schedule end date");
        return false;
    }
     
    var d = new Date();
    var curDate = d.getMonth() + 1 + "/" + d.getDate() + "/" + d.getYear();
    if(checkDates(inForm.schedulestartdate.value, curDate) < 0)
    {
        alert("schedule start date cannot be older than current date");
        return false;
    }
    
    if(inForm.isRuleEngineDeterminedStartDate.value = "true")
    {
        if(checkDates(inForm.RuleEngineDeterminedStartDate.value, inForm.schedulestartdate.value) > 0)
        {
            alert("As per rule, your schedule start date is determined as " + inForm.RuleEngineDeterminedStartDate.value + ". \nThe selected schedule start date can not be earlier than the rule determined schedule start date.");
            inForm.schedulestartdate.value = inForm.RuleEngineDeterminedStartDate.value;
            return false;
        }
        
        if(checkDates(inForm.scheduleenddate.value, inForm.RuleEngineDeterminedEndDate.value) > 0)
        {
            alert("As per rule, your schedule end date is determined as " + inForm.RuleEngineDeterminedEndDate.value + ". \nPlease select the schedule end date earlier than the rule determined schedule end date.");            
            return false;
        }
    }
    
    if(checkDates(inForm.schedulestartdate.value, inForm.scheduleenddate.value) > 0)
    {
        alert("schedule start date cannot be later than schedule end date");
        return false;
    }
   if(actionid > 0)
       inForm.actionname.value=actionid; 
   btnObj.disabled = true;
   inForm.submit();
}

function validateSessionSelection(btnObj)
{
    var inForm = btnObj.form;
    var selected = false;    
    if(inForm.editdailyscheduleid)
    {
        //alert(inForm.editdailyscheduleid.length);
        if(inForm.editdailyscheduleid.length)
        {
            for( i=0;i<inForm.editdailyscheduleid.length; i++)
            {
                if(inForm.editdailyscheduleid[i].checked == true)
                {
                    selected= true;                    
                    inForm.dailyscheduleid.value = inForm.editdailyscheduleid[i].value;
                    inForm.testcenterid.value=inForm.edittestcenterid[i].value;
                    inForm.TestCenterName.value=inForm.edittestcentername[i].value;
                    inForm.TestCenterState.value=inForm.edittestcenterstate[i].value;
                    inForm.selecteddate.value=inForm.editscheduledate[i].value;
                    inForm.selectedsession.value=inForm.editsession[i].value; 
                    break;
                }
            }
        }
        else
        {
            if(inForm.editdailyscheduleid.checked == true)
            {
                selected = true;
                inForm.dailyscheduleid.value = inForm.editdailyscheduleid.value;
                inForm.testcenterid.value=inForm.edittestcenterid.value;
                inForm.TestCenterName.value=inForm.edittestcentername.value;
                inForm.TestCenterState.value=inForm.edittestcenterstate.value;
                inForm.selecteddate.value=inForm.editscheduledate.value;
                inForm.selectedsession.value=inForm.editsession.value;
            }
        }
    }
    if(!selected)
    {
        alert("please select the session");
        return false;
    }
       
    inForm.portionids.value = ""
    inForm.extendedtime.value = ""
    inForm.portionduration.value = ""       

    for (iRow = 0; iRow < portionTable.rows.length; iRow++)
    {
        inForm.portionids.value = "" + inForm.portionids.value + portionTable.rows(iRow).pId + ((iRow < portionTable.rows.length-1) ? "," : "")
        inForm.extendedtime.value = "" + inForm.extendedtime.value + portionTable.rows(iRow).extendedtime + ((iRow < portionTable.rows.length-1) ? "," : "")
        inForm.portionduration.value = "" + inForm.portionduration.value + portionTable.rows(iRow).portionDuration + ((iRow < portionTable.rows.length-1) ? "," : "")
    }                   
    
    if(inForm.candidate_blocked)
    {
        if(inForm.candidate_blocked.value == 'true')
        {
            bOverRideCandidateStatus = confirm('Candidate is blocked. Do you still want to schedule for the test?');
            if(bOverRideCandidateStatus)
            {
                if(inForm.over_ride_candidate_status)
                {
                    inForm.over_ride_candidate_status.value = 'true';
                }
            }
            else
            {
                return false;
            }
        }
    }
    
    bConfirmSchedule = confirm("Selected test center: " + inForm.TestCenterName.value +", " + inForm.TestCenterState.value 
            + "\n\nSchedule date: " + inForm.selecteddate.value + "\n\nSelected session: " + inForm.selectedsession.value + "\n\nClick 'Ok' button to confirm this schedule.");
    if(bConfirmSchedule)
    {
        btnObj.disabled = true;
        inForm.submit();
    }
    else
        return false;
}


function validateScheduledActivity(obj, action, actionpage)
{

    var inForm = obj.form
    var selected = false;
    if(inForm.editregistrationid)
    {
        if(inForm.editregistrationid.length)
        {
            for(i=0;i<inForm.editregistrationid.length; i++)
            {
                if(inForm.editregistrationid[i].checked)
                {
                    selected = true;
                    inForm.testregistrationid.value = inForm.editregistrationid[i].value;
                    inForm.regn_id.value = inForm.editregistrationid[i].value;
                    inForm.scheduleid.value = inForm.editscheduleid[i].value;
                    inForm.status.value = inForm.editstatus[i].value;
                    inForm.testid.value=inForm.edittestid[i].value;
                    inForm.testname.value = inForm.edittestname[i].value;
                    inForm.licenseagency.value = inForm.editlicenseagency[i].value;                    
                    break;
                }
            }
        }
        else
        {
            if(inForm.editregistrationid.checked)
            {
                selected = true;
                inForm.testregistrationid.value = inForm.editregistrationid.value;
                inForm.regn_id.value = inForm.editregistrationid.value;
                inForm.scheduleid.value = inForm.editscheduleid.value; 
                inForm.status.value = inForm.editstatus.value;
                inForm.testid.value=inForm.edittestid.value;
                inForm.testname.value = inForm.edittestname.value;
                inForm.licenseagency.value = inForm.editlicenseagency.value; 
            }
        }
        if(!selected)
        {
            alert("please select a scheduled record");
            return false;
        } 
        
        inForm.actionname.value = action;
        if(action == '303')
        {
            inForm.isrescheduling.value = 'true';      
          
            inForm.action = actionpage;
            inForm.target = "_self";
            obj.disabled = true;  
             inForm.submit();
        }
        
        //inForm.actionname.value = action;
        if(action == '311')
        {        
            var confirmcancel = confirm("Are you sure you want to cancel the schedule?");
            if(confirmcancel)
                inForm.action = actionpage;
            else
                return false;
            inForm.target = "_self";
          obj.disabled = true;
           inForm.submit();
        }
        if(action == '321')
        {
        	//this variable gets the context root 
	    	var ctxtRoot = inForm.context_root.value;
         	//inForm.action = actionpage;
        	//inForm.target = "_new";
        	var regid = inForm.regn_id.value;        	
        	window.open(ctxtRoot+'/contentdisplay?actionname=321&regn_id='+regid,'','scrollbars=yes,resizable=yes,width=700,height=500,top=30');
        }
        if(action == '322')
        {
            //this variable gets the context root 
	    var ctxtRoot = inForm.context_root.value;
            inForm.isrescheduling.value = true;
            inForm.action=ctxtRoot+'/schedule/view_testschedule_details.jsp';
            inForm.target = "_self";
            //inForm.action='/schedule/scheduled_test_details.jsp';
            obj.disabled = true;
             inForm.submit();
        }
        
       
       
      
    }    
}


function validateCDTestCentersSelection(btnObj)
{
    var inForm = btnObj.form;
    var selectedtestcenters = "";
    var tableObj = document.getElementById('testcenterdetailsTable');
    if(tableObj)
    {
        if(tableObj.rows.length > 0)
        {
            for( i=1;i<tableObj.rows.length;i++)
            {
				if(tableObj.rows[i].cells[0].innerText == 'No test centers found.')
				{
					alert("No Testcenters found.");
                    return false;
				}
                else
                {
                    if(tableObj.rows[i].cells[0].firstChild.checked)
                    {                 
                        selectedtestcenters = selectedtestcenters + tableObj.rows[i].cells[0].firstChild.value + ",";                       
                    }
                }
            }
        }
    }
    if(selectedtestcenters == "")
    {
           alert("Please select atleast one test center");
           return false;
    }
    inForm.selectedtestcenters.value = selectedtestcenters;
    
    if (getSelectedObject(inForm.selectportion) == null)
    {
        alert(sMessageArr[MSG_SELECT_A_PORTION_TO_SCHEDULE]);
        return false;
    }
    
    inForm.selectedportions.value = ""
        if (inForm.selectportion.length)
        {
            for (iRow = 0; iRow < inForm.selectportion.length; iRow++)
                if (inForm.selectportion[iRow].checked) inForm.selectedportions.value = "" + inForm.selectedportions.value + inForm.selectportion[iRow].value + ","
        }
        else
            inForm.selectedportions.value = "" + inForm.selectportion.value

        if (inForm.selectedportions.value.substring(inForm.selectedportions.value.length-1) == ",")
            inForm.selectedportions.value = inForm.selectedportions.value.substring(0, inForm.selectedportions.value.length-1)
            
       if(inForm.isRuleEngineDeterminedStartDate.value = "true")
       {                        
            if(checkDates(inForm.scheduleenddate.value, inForm.RuleEngineDeterminedEndDate.value) > 0)
            {                
                inForm.scheduleenddate.value = inForm.RuleEngineDeterminedEndDate.value;                
            }
       }   
    btnObj.disabled = true;
    inForm.submit();
}

function validateTestCentersSelection(btnObj)
{
    var inForm = btnObj.form;
    var selectedtestcenters = "";
    var tableObj = document.getElementById('TestCenterTable');
    if(tableObj)
    {
        if(tableObj.rows.length > 0)
        {
            for( i=1;i<tableObj.rows.length;i++)
            {                              
                if(tableObj.rows[i].cells[0].innerText == 'Out of State Test Centers' || tableObj.rows[i].cells[1].innerText == 'No test centers found.')
                {
                    if(tableObj.rows[i].cells[1])
                    {    
                        if(tableObj.rows[i].cells[1].innerText == 'No test centers found.')
                        {
                            alert("No Testcenters found.");
                            return false;
                        }
                    }
                }
                else
                {
                    if(tableObj.rows[i].cells[0].firstChild.checked)
                    {                 
                        selectedtestcenters = selectedtestcenters + tableObj.rows[i].cells[0].firstChild.value + ",";                       
                    }
                }
            }
        }
    }
    if(selectedtestcenters == "")
    {
           alert("Please select atleast one test center");
           return false;
    }
    inForm.selectedtestcenters.value = selectedtestcenters;
    
    if (getSelectedObject(inForm.selectportion) == null)
    {
        alert(sMessageArr[MSG_SELECT_A_PORTION_TO_SCHEDULE]);
        return false;
    }
    
    inForm.selectedportions.value = ""
        if (inForm.selectportion.length)
        {
            for (iRow = 0; iRow < inForm.selectportion.length; iRow++)
                if (inForm.selectportion[iRow].checked) inForm.selectedportions.value = "" + inForm.selectedportions.value + inForm.selectportion[iRow].value + ","
        }
        else
            inForm.selectedportions.value = "" + inForm.selectportion.value

        if (inForm.selectedportions.value.substring(inForm.selectedportions.value.length-1) == ",")
            inForm.selectedportions.value = inForm.selectedportions.value.substring(0, inForm.selectedportions.value.length-1)
            
       if(inForm.isRuleEngineDeterminedStartDate.value = "true")
       {                        
            if(checkDates(inForm.scheduleenddate.value, inForm.RuleEngineDeterminedEndDate.value) > 0)
            {                
                inForm.scheduleenddate.value = inForm.RuleEngineDeterminedEndDate.value;                
            }
       }   
    btnObj.disabled = true;
    inForm.submit();
}

function validateFindTestDateTestCenters(btnObj)
{
    var inForm = btnObj.form;
    var selectedtestcenters = "";
    var tableObj = document.getElementById('testcenterdetailsTable');
    if(tableObj)
    {
        if(tableObj.rows.length > 0)
        {
            for( i=1;i<tableObj.rows.length;i++)
            {
				if(tableObj.rows[i].cells[0].innerText == 'No test centers found.')
				{
					alert("No Testcenters found.");
                    return false;
				}
                else
                {
                    if(tableObj.rows[i].cells[0].firstChild.checked)
                    {                 
                        selectedtestcenters = selectedtestcenters + tableObj.rows[i].cells[0].firstChild.value + ",";                       
                    }
                }
            }
        }
    }
    if(selectedtestcenters == "")
    {
           alert("Please select atleast one test center");
           return false;
    }
    inForm.selectedtestcenters.value = selectedtestcenters;
    btnObj.disabled = true;
    inForm.submit();
}

/**
 * added to set the appropriate values on page submition.
 * 
 * @since 1.50.0.1 (CAPP-Release)
 */
function validateTestDateForm(btnObj)
{	var inForm = btnObj.form;
	var selectedportions = "";
	var portionslist = document.getElementById('PortionTable');
	var endsize;
	if(portionslist.rows[1].cells[1].innerHTML == 'No Portions found.')
		endsize = portionslist.rows.length-2;
	else
		endsize = portionslist.rows.length-1;
	var portions;
	if(portionslist)
	{	for(var i=0; i<endsize;i++)
		{	var port = document.getElementById('ck'+i);
			var ispchk;
			var browser = getBrowser();
			if(browser.indexOf('msie')!=-1)
			{	ispchk = port.getAttribute('defaultChecked');
				if(ispchk)
				{	portions = port.value.split("^");
					if(i<endsize-1)
						selectedportions = selectedportions.concat(portions[3],',');
					else
						selectedportions = selectedportions.concat(portions[3],'');
				}
			}
			else
			{	ispchk = port.getAttribute('checked');
				if(ispchk && ispchk.indexOf('true')!=-1)
				{	portions = port.value.split("^");
					if(i<endsize-1)
						selectedportions = selectedportions.concat(portions[3],',');
					else
						selectedportions = selectedportions.concat(portions[3],'');
				}	
			}
		}
	}

   if(selectedportions == "")
   {	alert("Please select atleast one portion");
        return false;
   }
   inForm.selectedportions.value = selectedportions;
   inForm.testid.value = portions[0];
   inForm.testname.value = portions[1];
   inForm.licenseagency.value = portions[2];
   
   btnObj.disabled = true;
   inForm.submit();
}


function validateFindTestDateForm(btnObj)
{       
    var inForm = btnObj.form;
    var selectedportions = "";
    var selected = false;     
    var tableObj1 = document.getElementById('LicenseTable');
    if(tableObj1)
    {
        if(tableObj1.rows.length > 0)
        {
            for( i=1;i<tableObj1.rows.length;i++)
            {                                              
                if(tableObj1.rows[i].cells[1].innerHTML != 'No Licenses found.')
                {                   
                    if(tableObj1.rows[i].firstChild.firstChild.firstChild.checked == true)
                    {                 
                       inForm.testname.value = tableObj1.rows[i].cells[1].innerHTML; 
                       selected = true;
                       break;
                    }
                }
                else
                {
                    alert("No Licenses found.");
                    return false;
                }
            }
        }
    }
    if(!selected)
    {
        alert("Please select the license");
        return false;
    }
    
   var tableObj = document.getElementById('PortionTable');
   if(tableObj)
   {
       if(tableObj.rows.length > 0)
       {
           for( i=1;i<tableObj.rows.length;i++)
           {               
               if(tableObj.rows[i].cells[1].innerHTML != 'No Portions found.')
               {
                   if(tableObj.rows[i].firstChild.firstChild.firstChild.checked)
                   {                 
                       selectedportions = selectedportions + tableObj.rows[i].firstChild.firstChild.firstChild.value + ",";                       
                   }
               }
               else
               {
                   alert("No Portions found.");
                   return false;
               }
           }
       }
   }
   if(selectedportions == "")
   {
          alert("Please select atleast one portion");
          return false;
   }
   inForm.selectedportions.value = selectedportions;   
   
   inForm.licenseagency.value = returnSelectedTextInCombo(inForm.accountid, inForm.accountid.value);  
   btnObj.disabled = true;
   inForm.submit();
}

function fnDisplayTestCenters(mode)
{        
    if(document.getElementById('trNotReqd'))        
    {
        var elements = getElementsByClass('hiddentcrow', null, 'tr');
        if(elements.length)
        {
            for(i=0;i<elements.length; i++)
            {
                if(mode == '1')
                {
                    elements[i].style.display = "";
                }
                else
                {
                    elements[i].style.display = "none";
                    if(elements[i].firstChild.firstChild.type=='checkbox')
                        elements[i].firstChild.firstChild.checked = false;
                }
            }            
        }
        if(mode == '1')
            location.href="#OutOfState";
    }
}

function getElementsByClass(searchClass,node,tag) {    
    var classElements = new Array();
    if (node == null)
      node = document;
    if (tag == null)
      tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
      if (pattern.test(els[i].className) ) {
        classElements[j] = els[i];
        j++;
      }
    }
    return classElements;
  }
function validateRegnAndPaymentPendingForm(obj, action,actionname, params)
{

    var inForm = obj.form;
    inForm.action = action + params;
    inForm.actionname.value = actionname;
    obj.disabled = true;
    inForm.submit();
}

