

//Global variables for XMLHttp
var xmlhttp, xmlparser, xmlnodes
var gsXMLDelim ="$A#" //Delimiter used to split the data received via XML Http
function vfnPopuluateInsID(sEventType,objInsId,txtInsCompany,txtInsAddress1,txtInsAddress2,txtInsCity,selInsState,txtInsZip,txtInsCounty,hidPayerStatus)
{
    var sURL =  "XMLCodeCheck.asp?Code=" + objInsId.value + "&msg=EDI_INS_ID"
    
    if(objInsId.value!="")
	{

		var nodes = vfnXMLHttpRequest(sURL,"N")
		
		if (vfnGetNodeValue(nodes, 0)=="NA")
		{
		
		     vfnAlertFocus(sEventType, objInsId, "EDI Insurance Company ID not available in the list.");
		            objInsId.focus();
		            objInsId.select();
    	            return false;
				
		}
		else
		{
			txtInsCompany.value   = vfnGetNodeValue(nodes, 0)
			txtInsAddress1.value   = vfnGetNodeValue(nodes, 1)
			txtInsCity.value   = vfnGetNodeValue(nodes, 2)
			selInsState.value  = vfnGetNodeValue(nodes, 3)
			txtInsZip.value   = vfnGetNodeValue(nodes, 4)
			if(txtInsCounty) 
			txtInsCounty.value = vfnGetNodeValue(nodes, 5)
			return true
		}		 
	}
	else
		return true
}
function vfnPopuluateZip(sEventType,objZip,objCity,objState,objCounty,objZipStatus,sLabel,sLayerName)
{
    
	  var sURL =  "XMLCodeCheck.asp?Code=" + escape(objZip.value) + "&msg=ZIP"
	if(objZip.value!="" && vfnFindZipChanged(objZip, objZipStatus))
	{
		//Assign objects to Global Variables
		gObjField1 = objZip; gObjField2 = objCity; gObjField3 = objState; gObjField4 = objCounty; gObjZipStatus=objZipStatus;
		gsEventType = sEventType;
		gsLabel = sLabel; gsLayerName = sLayerName
		var nodes = vfnXMLHttpRequest(sURL,"N")
		if (vfnGetNodeValue(nodes, 0)=="NA")
		{
		    if((IsIE || sEventType=="click" || sEventType=="submit"))
	        {
        	    //To focus the cursor in the same field if cancel is pressed
		        if(confirm("Zip Code is not on file. Do you want to manually update?")==false)
		        {
		            if(sLayerName) 
		            {
			            vfnLayerFocus(sLayerName);
		            }
		            objZip.focus();
		            objZip.select();
		            return false;
		        }
		        else
		        {
		            objState.selectedIndex=0;
        		    objCity.value="";
        		    if(objCity.disabled==false)
        		    {
        		        objCity.focus();
        		    }
		            gObjZipStatus.value="AVAILABLE$$"+objZip.value;
		            return true;
		        }    
	        }
	        else
	        {
	            gObjZipStatus.value="NOT_AVAILABLE";
	        }	
	
	 		//objCity.value=""
			//objState.value=""
			//objCounty.value=""				
		}
		else
		{
			gObjZipStatus.value="AVAILABLE"				
			objCity.value   = vfnGetNodeValue(nodes, 0)
			objState.value  = vfnGetNodeValue(nodes, 1)				
			
			if(objCounty) 
			objCounty.value = vfnGetNodeValue(nodes, 2)
			return true
		}		 
	}
	else
		return true
}



function vfnFindZipChanged(objZip, gObjZipStatus)
{
    var sZipStatusValue = gObjZipStatus.value;
    var arZipStatus = sZipStatusValue.split("$$");
    if(arZipStatus.length>1)
    {
        if(arZipStatus[1].substring(0,4)==objZip.value.substring(0,4)) //Check for First 5 Digit only
            return false;
        else
            return true;
    }
    else
    {
        return true;
    }
    
}

function vfnCheckPayerId(sEventType,objPayerId,objPayerIdStatus,sLabel,sLayerName)
{

	var sURL =  "XMLCodeCheck.asp?Code=" + objPayerId.value + "&msg=PAYER_ID_CH_EXISTS"
	if(objPayerId.value!="")
	{
		//Assign objects to Global Variables
		gObjField1 = objPayerId;//gObjZipStatus=objZipStatus;
		gsEventType = sEventType;
		//gsLabel = sLabel; gsLayerName = sLayerName
		var nodes = vfnXMLHttpRequest(sURL,"N")
		if (vfnGetNodeValue(nodes, 0)=="NA")
		{

			objPayerIdStatus.value="NOT_AVAILABLE";
			vfnAlertFocus(sEventType, objPayerId, "EDI Insurance Company ID not available in the list.")
			return false
		}
		else
		{
		    objPayerIdStatus.value="AVAILABLE";
			return true
		}		 
	}
	else
	    objPayerIdStatus.value="AVAILABLE";
		return true
}



function vfnCheckZipSubmit(objZip, objZipStatus, sLabel, sLayerName)
{
    if(objZipStatus.value=="NOT_AVAILABLE" && objZip.value!="")
	{
		var sLabelNew=""
		if(sLabel) sLabelNew = sLabel + ":\n\n" //Default Value	
		//vfnAlertFocusStr("click", objZip, sLabelNew + "Zip Code not available in the list.", sLayerName)
		if(confirm("Zip Code is not on file. Do you want to manually update?")==false)
		{
		    if(sLayerName) 
            {
	            vfnLayerFocus(sLayerName);
            }
        		    
		    objZip.focus();
		    objZip.select();
    		return false;
        }
        else
        {
		   gObjZipStatus.value="AVAILABLE$$"+objZip.value;;
		   return true;
        }
	}
	else
	return true;
}

function vfnCheckCodeSubmit(objCode, objCodeStatus, sLabel, sLayerName)
{
	if(objCodeStatus.value=="NOT_AVAILABLE" && objCode.value!="")
	{
		var sLabelNew="", sFieldCaption=""
		//if(sLabel) sLabelNew = sLabel + ":\n\n" //Default Value			
		if(sLabel) sFieldCaption = sLabel + " "
		if(sFieldCaption=="") sFieldCaption="Code "		
		vfnAlertFocusStr("click", objCode, sFieldCaption + "not available in the list.", sLabel, sLayerName)
		return false;
	}
	else
	return true;
}


//sType='P' - Parser, 'N' - Node 
function vfnXMLHttpRequest(sURL,sType)
{
    
	var parser
	var nodes=null
	if (window.XMLHttpRequest) //Netcape and IE 7
	{
	    xmlhttp=new XMLHttpRequest()
		xmlhttp.open("GET",sURL,false)
		xmlhttp.send(null)
		
	}
	else if(window.ActiveXObject) //IE5.x and IE 6 only
	{
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
		if (xmlhttp)
		{
			xmlhttp.open("GET",sURL,false)
			xmlhttp.send()
		}
	}
	
    	
	if (xmlhttp.readyState==4)
	{
		
			var xmlstring=xmlhttp.responseText
			
			if (xmlhttp.status!=200)
			{
				alert(sMsgXMLErr)
				xmlstring="<answer>NA</answer>"
			}
			
			if (window.XMLHttpRequest && IsIE==false) //For IE7 - It should use ActiveX
			{
				var domparser = new DOMParser();
				parser = domparser.parseFromString(xmlstring, "text/xml");
				nodes=parser.documentElement.childNodes;
			}
			else
			{
				var parser=new ActiveXObject("microsoft.xmldom")
				parser.async="false"				
				parser.loadXML(xmlstring)
				if(xmlstring.indexOf("Index.aspx")>0)
				{
				    alert('Session Expired');
				    xmlstring="<answer>NA</answer>";
				    parser.loadXML(xmlstring);
				}
				nodes = parser.documentElement.childNodes
				
			}			

		//if(nodes.length>
		//alert(nodes.item(0).nodeValue)
		
		if(sType=="P")
			return parser
		else
			return nodes
		
		
	}
}


function vfnGetNodeValue(nodes, iPos)
{
	if(nodes.item(iPos).firstChild)
		return nodes.item(iPos).firstChild.nodeValue;
	else
		return "";
}




/*---------------------------------------------------------------------------------------------------------------------
UDF:
FUNCTION NAME	-	vfnXMLCheckAvailability
PURPOSE			-   To find the code existis in db 
ARGUMENTS		-	Object of the Code, Object of description, string
RETURN VALUE	-   Nil
---------------------------------------------------------------------------------------------------------------------*/

function vfnXMLCheckAvailability(e, objCode,sMsg,alertMsg,sOldCode, objStatus)
{
	//sOldCode - for custom code, in edit mode to avoid the checking
	if(objCode.value!="")
	{
	if (sOldCode==null) sOldCode=""
	
	//location.href="XMLCodeCheck.asp?Code=" + escape(objCode.value) + "&msg=" + sMsg + "&qOldCode=" + sOldCode
	//return;
		var sURL
		sURL="XMLCodeCheck.asp?Code=" + escape(objCode.value) + "&msg=" + sMsg + "&qOldCode=" + sOldCode
		//location.href=sURL
		//return
		nodes=vfnXMLHttpRequest(sURL,"N")		
		//alert(vfnGetNodeValue(nodes, 0)=="NA")
		if(vfnGetNodeValue(nodes, 0)=="NA") 
		{
			objStatus.value="CODE_EXISTS"
			
			if(alertMsg==null)
				vfnAlertFocus(e,objCode,"Code not available in the list.")
			else
				vfnAlertFocus(e,objCode,alertMsg)
		}
		else
		{
			objStatus.value="CODE_NOT_EXISTS"
		}
		
	}
}

function vfnPopulatePatientSubscriber(objSubscriber,objPatient,PatientId,InsType)
{
	//var sURL =  "XML_LoadPatientInsurance.asp.asp?Code=" + escape(objZip.value) + "&msg=ZIP"
	var sURL ="XML_LoadPatientInsurance.asp?qPatientId="+PatientId+"&qInsType="+InsType;
	if(PatientId!="")
	{
		var nodes = vfnXMLHttpRequest(sURL,"N")
		if (vfnGetNodeValue(nodes, 0)=="NA")
		{
			return false
		}
		else
		{
			objSubscriber.value= vfnGetNodeValue(nodes, 0);
			if(objPatient!=null)
			{
			    objPatient.value=vfnGetNodeValue(nodes, 1);
			}
			return true
		}		 
	}
	else
		return true
}



// Function for Populating data onBlur Subscriber Details

function vfnPopulateDataBackUp(sEventType, sFieldInfo, sQryStr, sFieldLabel, sFocusField)
{

//txtSubscriberID~~MEMBER_ID~~txtSubLastName~~LAST_NAME

    var sURL =  "XMLLoadData.aspx?" + sQryStr; //123548796A
    
		var xmlObj = vfnXMLHttpRequest(sURL,"P")
		//alert(xmlObj.xml)
		
		var resultNodes = xmlObj.getElementsByTagName("answer")
		
		var status;
		status=resultNodes(0).childNodes(0).xml;
		if(status=="NA")
		{
		    //alert(sFieldLabel + ' is not found. Do you want add manually?');
		    return status;
		}
		else if(status=="MORE_RECORDS")
		{
		    return status;
		}
        else        		
        {
		    var datarow = xmlObj.getElementsByTagName("DataRow")
		    var FieldValue;
		    FieldValue=sFieldInfo.split('~~');
		    
		    for(i=0;i<FieldValue.length;i=i+2)
		    {
		        document.getElementById(FieldValue[i]).value=datarow(0).getAttribute(FieldValue[i+1]);
		    }
		}
}

function vfnPopulateData(sEventType, sFieldInfo, sQryStr, sFieldLabel, sFocusField)
{
    var sURL =  "XMLLoadData.aspx?" + sQryStr; //123548796A
	var xmlObj = vfnXMLHttpRequest(sURL,"P")
	var resultNodes = xmlObj.getElementsByTagName("answer")
	var status;
	status=resultNodes(0).childNodes(0).xml;
	if(status=="NA")
	{
	    //alert(sFieldLabel + ' is not found. Do you want add manually?');
	    return status;
	}
	else if(status=="MORE_RECORDS")
	{
	    return status;
	}
    else        		
    {
	    var datarow = xmlObj.getElementsByTagName("DataRow")
	    var FieldValue;
	    FieldValue=sFieldInfo.split('~~');
	    for(i=0;i<FieldValue.length;i=i+2)
	    {
	            var type=document.getElementById(FieldValue[i]).type;
	            if(type==null)
	            {
	                type=document.getElementById(FieldValue[i]+'_0').type;
	                if(type=='checkbox')
	                    vfnSelectCheckBoxSpecific(FieldValue[i],FieldValue[i+1],datarow(0).getAttribute(FieldValue[i+1]));
	                if(type=='radio')
	                    vfnSelectCheckBoxSpecific(FieldValue[i],FieldValue[i+1],datarow(0).getAttribute(FieldValue[i+1]));
	            }
                if(type=='text'|| type=='hidden' )
	                document.getElementById(FieldValue[i]).value=datarow(0).getAttribute(FieldValue[i+1]);
	            else if(type=='select-one')
	                vfnSelectListItem(document.getElementById(FieldValue[i]),datarow(0).getAttribute(FieldValue[i+1]))
	            //else if(type=='checkbox')
	    }
	}
}

function vfnGetDataRow(sEventType, sFieldInfo, sQryStr, sFieldLabel, sFocusField)
{
    var sURL =  "XMLLoadData.aspx?" + sQryStr; //123548796A
	var xmlObj = vfnXMLHttpRequest(sURL,"P")
	var resultNodes = xmlObj.getElementsByTagName("answer")
	var status;
	status=resultNodes(0).childNodes(0).xml;
	if(status=="NA")
	{
	    //alert(sFieldLabel + ' is not found. Do you want add manually?');
	    return status;
	}
	else if(status=="MORE_RECORDS")
	{
	    return status;
	}
    else        		
    {
	    var datarow = xmlObj.getElementsByTagName("DataRow");
	    return datarow;
	}
}

function vfnAssignDataRow(datarow,fieldinfo)
{
    var FieldValue;
    FieldValue=fieldinfo.split('~~');
    for(i=0;i<FieldValue.length;i=i+2)
    {
            var type=document.getElementById(FieldValue[i]).type;
            if(type==null)
            {
                type=document.getElementById(FieldValue[i]+'_0').type;
                if(type=='checkbox')
                    vfnSelectCheckBoxSpecific(FieldValue[i],FieldValue[i+1],datarow(0).getAttribute(FieldValue[i+1]));
                if(type=='radio')
                    vfnSelectCheckBoxSpecific(FieldValue[i],FieldValue[i+1],datarow(0).getAttribute(FieldValue[i+1]));
            }
            if(type=='text'|| type=='hidden' )
                document.getElementById(FieldValue[i]).value=datarow(0).getAttribute(FieldValue[i+1]);
            else if(type=='select-one')
                vfnSelectListItem(document.getElementById(FieldValue[i]),datarow(0).getAttribute(FieldValue[i+1]))
            //else if(type=='checkbox')
    }
}

function vfnXmlFetchValue(obj1,obj2,obj3,qCV)
{
sObj1=obj1
sObj2=obj2
sObj3=obj3
	if(obj1.value!="")
	{
		qryString="XMLLoadData.aspx?MN=Fetchvalue"+"&CV="+qCV
		//for Netscape broweser		
		if(document.implementation && document.implementation.createDocument)
		{
		NSparser = document.implementation.createDocument("", "doc", null)    
		NSparser.onload=fnNSFetchValue;
		NSparser.load(qryString);				
		}
	 else if(window.ActiveXObject) // for IE 
	{		
		var parser=new ActiveXObject("Microsoft.XMLDOM")		
		parser.async="false"
		parser.load(qryString)		
		if (parser.parseError.reason=="")
		{
		 nodes = parser.documentElement.childNodes
		 if (nodes.item(0).text!="N/A")
			{			
				var value=nodes.item(0).text
				var city = value.substring(0,value.indexOf('_'))
				var state  = value.substring(value.indexOf('_')+1)
				obj2.value=city
				obj3.value=state
				return true				
			}
		  else
			{
				obj2.value=""
				obj3.value=""
				alert("Zip Code not available in the list")
				obj1.focus()
				obj1.select()
				return false
			}
		}
	}	
	}
	else
	{
			obj2.value=""
			obj3.value=""
			
			return false
			
	}	
}