var httpRequest;     
    var _ms_XMLHttpRequest_ActiveX = ""; // Holds type of ActiveX to instantiate
    var _ajax;                           // Reference to a global XMLHTTPRequest object for some of the samples
    BASE_URL = "/pagecontentservlet"
    var js_context="";    
        var _tests=[];
    var _portions=[];
    
    if (!window.Node || !window.Node.ELEMENT_NODE) {
        var Node = { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5,
                      ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, 
                  DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 };
    }

    /*
     * AJAXRequest: An encapsulated AJAX request. To run, call
     * new AJAXRequest( method, url, async, process, data )
     *
     */

    function executeReturn( AJAX ) {        
        if (AJAX.readyState == 4) {
            if (AJAX.status == 200) {
               
                if ( AJAX.responseText ) {
                    //alert("here4");
                    //alert(AJAX.responseText);
                eval(AJAX.responseText);
            }
                processTestResults(AJAX);
                processPortionResults(AJAX);
                if(document.getElementById("RowClassifications"))
                    document.getElementById("RowClassifications").style.display="none";
                
               
        }
        }
    }

    function AJAXRequest( method, url, data, process, async, dosend) 
    {
       
        var self = this;

        // check the dom to see if this is IE or not
        if (window.XMLHttpRequest) {
        // Not IE
            self.AJAX = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
        // Hello IE!
            // Instantiate the latest MS ActiveX Objects
            if (_ms_XMLHttpRequest_ActiveX) {
                self.AJAX = new ActiveXObject(_ms_XMLHttpRequest_ActiveX);
            } else {
            // loops through the various versions of XMLHTTP to ensure we're using the latest
            var versions = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
                            "Microsoft.XMLHTTP"];

                for (var i = 0; i < versions.length ; i++) {
                    try {
                // try to create the object
                // if it doesn't work, we'll try again
                // if it does work, we'll save a reference to the proper one to speed up future instantiations
                        self.AJAX = new ActiveXObject(versions[i]);

                        if (self.AJAX) {
                            _ms_XMLHttpRequest_ActiveX = versions[i];
                            break;
                        }
                    }
                    catch (objException) {
                    // trap; try next one
                    } ;
                }

                ;
            }
        }
        
        // if no callback process is specified, then assing a default which executes the code returned by the server
        if (typeof process == 'undefined' || process == null) {
            process = executeReturn;
        }

        self.process = process;

        // create an anonymous function to log state changes
        self.AJAX.onreadystatechange = function( ) {
            //logger("AJAXRequest Handler: State =  " + self.AJAX.readyState);
            self.process(self.AJAX);
        }

        // if no method specified, then default to POST
        if (!method) {
            method = "POST";
        }

        method = method.toUpperCase();

        if (typeof async == 'undefined' || async == null) {
            async = true;
        }
        
        self.AJAX.open(method, url + data, async);

        if (method == "POST") {
            self.AJAX.setRequestHeader("Connection", "close");
            self.AJAX.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            self.AJAX.setRequestHeader("Method", "POST " + url + "HTTP/1.1");
        }

        // if dosend is true or undefined, send the request
        // only fails is dosend is false
        // you'd do this to set special request headers
        if ( dosend || typeof dosend == 'undefined' ) {
            if ( !data ) data=""; 
            self.AJAX.send(data);
        }
        return self.AJAX;
    }

    
    function getSelectData( dataset, key, target, processHandler ) 
    {   
		/*var js_context = "";*/
		if(document.forms[0].context){
			js_context = document.forms[0].context.value;
		}
	
        return new AJAXRequest("GET", js_context+"/pagecontentservlet", "?actionid=" + dataset + "&key=" + key + "&target=" + target + "&timeStamp=" + new Date().getTime(), processHandler);
    }
    
    function getStates( target ) 
    {
        return getSelectData( "312","", target, executeReturn);
    }
    
    function getAccounts( iStateCode, target ) 
    {
        //if(iStateCode != 'XX')
         
        	if(document.getElementById("NonSSNRow"))    	
	        	document.getElementById("NonSSNRow").style.display = "none";
	        if(document.getElementById("SSNRow")) 	
        		document.getElementById("SSNRow").style.display = "none";
        	if(document.getElementById("SSNRowMsg"))
        		document.getElementById("SSNRowMsg").style.display = "none";
        	if(document.getElementById("NonSSNRowMsg"))
	        	document.getElementById("NonSSNRowMsg").style.display = "none";               
        return getSelectData( "313", iStateCode, target);
    }
    
    function getAccountLicenses( iAccountId, mode)    
    {
        // Note: if mode is 'testlink it will process the results and populate the licenses as links otherwise it will process the results and populate as radio buttons.        
        //if(parseInt(iAccountId) > 0)
        //{
            if(mode == 'testlink')
                return getSelectData( "314", iAccountId, "" , processTestLinkResults );
            else
                return getSelectData( "314", iAccountId, "" , processTestResults );
        //}
    }
    
    function getAccountClassifications( iAccountId, target, mode) 
    {
        //if(parseInt(iAccountId) > 0)
        //{
            if(mode == 'testlink')
                return getSelectData( "315", iAccountId, target, processTestLinkResults);
            else
                return getSelectData( "315", iAccountId, target, processTestResults);
        //}
    }
            
    function getClassificationLicenses( iClassificationId, mode) 
    {
//      Note: if mode is 'testlink it will process the results and populate the licenses as links otherwise it will process the results and populate as radio buttons.
        //if(parseInt(iClassificationId) > 0)
        //{
            if(mode == 'testlink')
                return getSelectData( "316", iClassificationId, "", processTestLinkResults );
            else
                return getSelectData( "316", iClassificationId, "", processTestResults );
        //}
            
    }
    
    function getPortions(iTestId)
    {
        if(parseInt(iTestId) > 0)
            return getSelectData( "317", iTestId, "" , processPortionResults );
    }
    
    function processTestResults(AJAX) 
    { 
        
        //alert("processResults");
        if (AJAX.readyState == 4) 
        { 
            if(AJAX.status == 200) 
            { 
                //alert(AJAX.responseText)
                licTabObj = document.getElementById('LicenseTable'); 
                if(licTabObj != null && licTabObj != 'undefined')
                {
                    deleteAllRecords('LicenseTable');
                
                    if ( AJAX.responseText ) 
                    {                                       
                        eval(AJAX.responseText);                                        
                    }
                   // var _tests = [[1, "Test 1"], [2, "Test 2"], [3, "Test 3"]];
                    //alert(_tests.length);
                   
                    if(_tests)
                    {
                        if(_tests != 'undefined' && _tests != null)
                        {
                            if(_tests.length)
                            {
                                for( var i=0; i < _tests.length; i++ ) 
                                {                                
                                    populateLicensesTable(_tests[i][0], _tests[i][1], 0);
                                }
                            }
                            else
                                populateLicensesTable('','','LicenseTable', 1);
                        }
                    } 
                }
            }
        }
        processPortionResults(AJAX);
    }
    
    function processPortionResults(AJAX) 
    { 
        
        //alert("processResults");
        if (AJAX.readyState == 4) 
        { 
            if(AJAX.status == 200) 
            { 
                //alert(AJAX.responseText)
                portionTabObj = document.getElementById('PortionTable'); 
                if(portionTabObj != null && portionTabObj != 'undefined')
                {
                    deleteAllRecords('PortionTable');
                
                    if ( AJAX.responseText ) 
                    {                                       
                        eval(AJAX.responseText);                                        
                    }                
                    //var _portions = [ [1, "Portion 1", "Mandatory"], [2, "Portion 2", "Optional"], [3, "Portion 3", "Mandatory"]];
                    //alert(_portions.length);
                    if(_portions)
                    {
                        if(_portions != 'undefined' && _portions != null)
                        {
                            if(_portions.length)
                            {
                                for( var i=0; i < _portions.length; i++ ) 
                                {                                
                                    populatePortionsTable(_portions[i][0], _portions[i][1],_portions[i][2], 0);
                                    //alert(i);
                                }
                            }
                            else
                                populatePortionsTable('','','', 1);
                        }
                    }
                }
            }
        }        
    }
    
    function processTestLinkResults(AJAX)
    {
        //alert("processResults");
        if (AJAX.readyState == 4) 
        { 
            if(AJAX.status == 200) 
            { 
                //alert(AJAX.responseText)
                if ( AJAX.responseText ) 
                {                                       
                    eval(AJAX.responseText);                        
                }
                
                licTabObj = document.getElementById('LicenseTable');
                if(licTabObj != null && licTabObj != 'undefined')
                {
                    deleteAllRecords('LicenseTable');
                                      
                    if(_tests)
                    {
                        if(_tests != 'undefined' && _tests != null)
                        {
                            //alert(_tests.length);
                            if(_tests.length)
                            {
                                for( var i=0; i < _tests.length; i++ ) 
                                {                                
                                    populateLicensesLinkTable(_tests[i][0], _tests[i][1],_tests[i][2],'LicenseTable', 0);
                                }
                            }
                            else
                                populateLicensesLinkTable('','','false','LicenseTable', 1);
                        }
                    }                                        
                }
                
                PTTabObj = document.getElementById('PracticeTestTable');
                if(PTTabObj != null && PTTabObj != 'undefined')
                {
                    deleteAllRecords('PracticeTestTable');                                                                             
                    if(_practicetests)
                    {
                        if(_practicetests != 'undefined' && _practicetests != null)
                        {
                            //alert(_practicetests.length);
                            if(_practicetests.length)
                            {
                                for( var i=0; i < _practicetests.length; i++ ) 
                                {                                
                                    populateLicensesLinkTable(_practicetests[i][0], _practicetests[i][1],_practicetests[i][2],'PracticeTestTable', 0);
                                }
                            }
                            else
                                populateLicensesLinkTable('','','true','PracticeTestTable', 1);
                        }
                    }
                }
            }
        }
    }
    
    function deleteAllRecords(tableName)
    {
        tableObj = document.all[tableName];
        for(i=tableObj.rows.length-1;i>=1;i--)
        {           
                tableObj.deleteRow(i);                           
        }
    }
    
    function populateLicensesTable(testId, testName, noRecords)
    {
        var trRef,sumTableSize,newRow,newCell;
        trRefObj = document.getElementById('refLicenseTable');       
        trRef=trRefObj.rows[0];
        tableObj = document.getElementById('LicenseTable');
        sumtableSize=tableObj.rows.length-1;
        newRow=tableObj.insertRow(sumtableSize+1);      
        newRow.rowId = sumtableSize;
        
        if(parseInt(noRecords) == 0)
        {
            // radio button Box
                                              
            newCell=newRow.insertCell(0);                       
            newCell.innerHTML = trRef.cells[0].innerHTML;
            newCell.firstChild.firstChild.name="testid";
            newCell.firstChild.firstChild.value=testId;
                            
            // Test Name            
            var cellLeft = newRow.insertCell(1);
            var textNode = document.createTextNode(testName);
            cellLeft.appendChild(textNode);            
        }
        else
        {
            var cellRight = newRow.insertCell(0);
            var textNode = document.createTextNode("");
            cellRight.appendChild(textNode);           
            
            var cellLeft = newRow.insertCell(1);
            var textNode1 = document.createTextNode("No Licenses found.");
            cellLeft.appendChild(textNode1);            
        }
    }
    
    function populateLicensesLinkTable(testId, testName, isPracticeTest,tableName, noRecords)
    {
        //alert(tableName + "  " + isPracticeTest + "  " + noRecords);
        var trRef,sumTableSize,newRow,newCell;
        trRefObj = document.getElementById('refLicenseLinkTable');       
        trRef=trRefObj.rows[0];
        tableObj = document.getElementById(tableName);
        if(tableName == 'PracticeTestTable')
        {
            if(document.getElementById('ptRow1'))
                document.getElementById('ptRow1').style.display = '';
            if(document.getElementById('ptRow2'))
                document.getElementById('ptRow2').style.display = '';
            if(document.getElementById('ptRow3'))
                document.getElementById('ptRow3').style.display = '';
        }
        
        sumtableSize=tableObj.rows.length-1;
        newRow=tableObj.insertRow(sumtableSize+1);      
        newRow.rowId = sumtableSize;
        
        if(parseInt(noRecords) == 0)
        {
            // radio button Box
                                              
            var cellLeft = newRow.insertCell(0);
            var textNode = document.createTextNode('');
            cellLeft.appendChild(textNode); 
                            
            // Test Name            
            newCell=newRow.insertCell(1);                       
            newCell.innerHTML = trRef.cells[1].innerHTML;
            
            var licenseType = "Live"; 
            
            if(isPracticeTest != 'true')
            {                
                newCell.firstChild.href = newCell.firstChild.href + testId; 
            }
            else
            {
                newCell.firstChild.href = js_context+"/practicetest/practicetest_portionselection.jsp?testid=" + testId + "&practicetestid=" + testId;
                licenseType = "Practice";
            }
            var textNode = document.createTextNode(testName);
            newCell.firstChild.appendChild(textNode); 
            
//            var cellRight = newRow.insertCell(2);
//            var textNode = document.createTextNode(licenseType);
//            cellRight.appendChild(textNode); 
        }
        else
        {
            var cellRight = newRow.insertCell(0);
            var textNode = document.createTextNode("");
            cellRight.appendChild(textNode);           
            
            var cellLeft = newRow.insertCell(1);
            var textNode1 = '';
            if(isPracticeTest != 'true')
            {
                if(document.getElementById("RowClassifications"))
                {
                   if(document.getElementById("RowClassifications").style.display=="")
                       textNode1 = document.createTextNode("Please select any license classification.");
                   else
                       textNode1 = document.createTextNode("No Licenses found.");
                }
                else
                    textNode1 = document.createTextNode("No Licenses found.");
            }
            else
            {
                textNode1 = document.createTextNode("No Practice Tests found.");
            }
                
            cellLeft.appendChild(textNode1);
            
//            var cellRight = newRow.insertCell(2);
//            var textNode = document.createTextNode("");
//            cellRight.appendChild(textNode);
        }
        
        if(tableName=='PracticeTestTable' && parseInt(noRecords) == 1)
        {
            if(document.getElementById('ptRow1'))
                document.getElementById('ptRow1').style.display = 'none';
            if(document.getElementById('ptRow2'))
                document.getElementById('ptRow2').style.display = 'none';
            if(document.getElementById('ptRow3'))
                document.getElementById('ptRow3').style.display = 'none';
        }
        
    }
    
    function populatePortionsTable(portionid, portionName, portionType, noRecords)
    {
        var trRef,sumTableSize,newRow,newCell;
        trRefObj = document.getElementById('refPortionTable');        
        trRef=trRefObj.rows[trRefObj.rows.length-1];

        tableObj = document.getElementById('PortionTable');

        sumtableSize=tableObj.rows.length-1;
        newRow=tableObj.insertRow(sumtableSize+1);      
        newRow.rowId = sumtableSize;        
        if(parseInt(noRecords) == 0)
        {
            // check Box
             newCell=newRow.insertCell(0);
             newCell.innerHTML = trRef.cells[0].innerHTML;
             newCell.firstChild.firstChild.name="portionid";
             newCell.firstChild.firstChild.value=portionid;                          
             if(portionType == 'Mandatory')
             {                 
                 newCell.firstChild.firstChild.checked=true;
                 newCell.firstChild.firstChild.disabled=true;
             }
    
            // Portion Name
             var cellMiddle = newRow.insertCell(1);
             var textNode = document.createTextNode(portionName);
             cellMiddle.appendChild(textNode);
             
             //Portion Type
             var cellLeft = newRow.insertCell(2);
             var textNode1 = document.createTextNode(portionType);
             cellLeft.appendChild(textNode1);             
        }
        else
        {
            var cellRight = newRow.insertCell(0);
            var textNode = document.createTextNode('');
            cellRight.appendChild(textNode);
            
            var cellMiddle = newRow.insertCell(1);
            var textNode1 = document.createTextNode('No Portions found.');
            cellMiddle.appendChild(textNode1);
            
            // Portion Type
             var cellLeft = newRow.insertCell(2);
             var textNode2 = document.createTextNode('');
             cellLeft.appendChild(textNode2);
        }
    }
    
    function returnSelectedTextInCombo(obj, val)
    {

        var selText = "";
        if (obj.type.substring(0,3) == 'sel')
        {
            for (j = 0; j < obj.options.length; j++)
            {
                if(obj.options[j].value.toUpperCase()  == val.toUpperCase())
                {
                    selText = obj.options[j].text;
                }
            }
        }
        return selText;
    }
    
    function setCandidateIDType(obj)
    {
    
        var inForm = obj.form;
        inForm.candidateIDType.value = getCandidateIDType(obj.value);
        
        
        return inForm.candidateIDType.value;
    }
    
    function getCandidateIDType(iAccountId)
    {
    	if(parseInt(iAccountId) > 0)
    	{
    	   return getSelectData( "318", iAccountId, '', processCandidateIdType );
        }
        else {    
        	if(document.getElementById("NonSSNRow"))    	
	        	document.getElementById("NonSSNRow").style.display = "none";
	        if(document.getElementById("SSNRow")) 	
        		document.getElementById("SSNRow").style.display = "none";
        	if(document.getElementById("SSNRowMsg"))
        		document.getElementById("SSNRowMsg").style.display = "none";
        	if(document.getElementById("NonSSNRowMsg"))
	        	document.getElementById("NonSSNRowMsg").style.display = "none";
        }
    }
    function processCandidateIdType(AJAX)
    {
    	if (AJAX.readyState == 4) 
        { 
            if(AJAX.status == 200) 
            {
            	
            	var CDIdType = AJAX.responseText;            	
            	if(CDIdType != 'SSN')
            	{
            		NonSSNRowObj = document.getElementById("NonSSNRow");
            		if(NonSSNRowObj)
            		{            			
            			document.getElementById("SSNRow").style.display = "none";
            			NonSSNRowObj.style.display = "";
            			if(document.getElementById("AgencyName"))
	            			document.getElementById("AgencyName").innerText = returnSelectedTextInCombo(document.forms[0].agency, document.forms[0].agency.value);
	            		if(document.getElementById("CDIdType"))
	            		{
	           				document.getElementById("CDIdType").innerText = CDIdType;
	           				
	           				if(document.getElementById("candidateIDType"))
	           				{
	           				  document.getElementById("candidateIDType").value = CDIdType;
	           				}
	           		    }
            		}
            		NonSSNRowMsgObj = document.getElementById("NonSSNRowMsg");            		
            		if(NonSSNRowMsgObj)
            		{            			
            			document.getElementById("SSNRowMsg").style.display = "none";
            			NonSSNRowMsgObj.style.display = "";
            			document.getElementById("AgencyMsg").innerText = CDIdType;
            			
            			if(document.getElementById("candidateIDType"))
	           			{
	           			 document.getElementById("candidateIDType").value = CDIdType;
	           			}
            		}
            	}
            	else
            	{
            		SSNRowObj = document.getElementById("SSNRow");
            		if(SSNRowObj)
            		{            			
            			SSNRowObj.style.display = "";
            			document.getElementById("NonSSNRow").style.display = "none";
            		}
            		SSNRowMsgObj = document.getElementById("SSNRowMsg");            		
            		if(SSNRowMsgObj)
            		{            			
            			SSNRowMsgObj.style.display = "";
            			document.getElementById("NonSSNRowMsg").style.display="none";            			
            		}
            		
            		if(document.getElementById("candidateIDType"))
	           		{
	           		   document.getElementById("candidateIDType").value = CDIdType;
	           		}
            	}
            	document.getElementById("candidateidtype").value = CDIdType;
            	
            }
        }
     }
    function  Validatepagecontentform(obj)
{
 
	var State = document.forms[0].statecode.value;
	var SelectedStatename = returnSelectedTextInCombo(document.forms[0].statecode,document.forms[0].statecode.value);
	var Accountid = document.forms[0].agency.value;
	var Accname = returnSelectedTextInCombo(document.forms[0].agency,document.forms[0].agency.value);

	if(document.forms[0].statecode.value == "XX")
	{
		alert(" Please select the state");
		return false;
	}
    if(document.forms[0].agency.value == "XX")
    {
    
        alert("Please select licensing agencey");
        return false;
    } 
  	obj.href = obj.href +"/catalog/fti_displayagencylicenses.jsp?statecode="+State+"&Statename="+SelectedStatename+"&Accountid="+Accountid+"&AccountName="+Accname;
   
}
         