﻿/*
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Project Name        - FAD
'Class/Form Name	 - Javascript Validations
'Copyright           - 2009 by Health Plan Systems Inc.
'Purpose             - 
'
'Revision History:
'Ver   Date     Time  Developer
'-------------------------------
'$Log: /FINDADR/Development/Version2/WebUI/Scripts/AutoSuggest.js $
'
'5     6/17/10 2:21p Ravi
'Code Updated for index page suggesstion list error
'
'4     2/23/10 7:02p Jayaraj
'Update the changes
'
'3     2/22/10 5:29p Jaladi
'new condition added insted of provider category
'
'2     2/22/10 12:47p Jayaraj
'update the file
'
'1     2/19/10 1:55p Bagyaraj
'New File Added for AutoSuggest
'
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/


var closeTags = "";
var iselDiv = -1;
var keynum = 0;
var suggCount = 0;
var divOpen=false;
var tblval;
var CurrentRow=-1;
var divSugg;
var Page='';
var FromPage=''
function AutoSuggest(txtObj,FieldName,XPos,YPos,objProv) 
{

  if(txtObj==null)
     return false;
  else if(FieldName == "")
     return false; 
  else
  {
     ReqLen = 2;
     this.iselDiv = -1;
     this.keynum = 0;
     this.suggCount = 0;
     divSugg = create_div_dynamic(txtObj,XPos,YPos,FieldName);
     if(IsIE)     txtObj.AUTOCOMPLETE='Off'
     else txtObj.setAttribute("autocomplete","off");
    
     txtObj.onkeydown = function(e){checkKeysDown(e,txtObj,FieldName)}; 
     txtObj.onkeyup = function(e){checkKeysUp(e,txtObj,ReqLen,FieldName,objProv)}; 
     closediv(document.getElementById("div" + txtObj.id));
     closeTags += "div" + txtObj.id + "$$"
   }
  if(document.body != null)
  {
     document.body.onclick = function() {OnClickCloseDiv()}
  }
}
function selText(txtSugg,divSugg,objdivSuggRes,FieldName) //selDentID(obj)
{

  var strValue;
  var rownum;
  var AlertMsg;
      if(objdivSuggRes==null)
      {
        rownum=CurrentRow;
      }
      else
      {
          var crow=objdivSuggRes.id.replace('ctl00_CP_txtSearch','');
		  rownum=crow;
          //rownum =objdivSuggRes.id.substring(objdivSuggRes.id.length-1,objdivSuggRes.id.length);
      }
    if(rownum==-1) return false;
  
    strValue=tblval[rownum];
    
    if(IsIE==true)
        divSugg.style.display = 'none';
    else
       document.getElementById(document.getElementById(divSugg).id).style.display = 'table-row';
       
    divOpen=false;
    
  if(FieldName=="SPECIALITY")
  {
	  var ValArray=strValue.split('$');
	 
      txtSugg.value = ValArray[4];
      document.getElementById('ctl00_CP_hid1').value=ValArray[0]
      document.getElementById('ctl00_CP_hid2').value=ValArray[2]
      AssignVal();
  }
  else
  {
    var ValArray=strValue.split('$');
    txtSugg.value = ValArray[0];
  }
  closediv(document.getElementById(divSugg.id));
  }
function doNext(el)
{

        var f = el.form;
        var els = f.elements;
        var x, nextEl;
        for (var i=0, len=els.length; i<len; i++)
        {
            x = els[i];
            if (el == x && (nextEl = els[i+1]))
            {
            if (nextEl.focus) nextEl.focus();
            
            }
        }
      //el.focus();  
}

  
function highLight(txtSugg,divSugg,SubDiv)//selItem(obj)
{
  	
  if(IsIE==true)
  {
      suggCount = divSugg.getElementsByTagName('div').length - 1
      for(var i=0;i<suggCount;i++)
      {
         document.getElementById(txtSugg.id + i + '').style.backgroundColor='';
      }
  }
  else
  {
    suggCount=0;
      for(var j=0;j< 20;j++)
      {
    
        if(document.getElementById(document.getElementById(txtSugg).id +(j+'')))
        {        
            suggCount+=1;
            document.getElementById(document.getElementById(txtSugg).id +(j+'')).style.backgroundColor='#d3e4f2';
        }
        //document.getElementById("'"+ctlname+"'").style.backgroundColor='';
        
      }
  }  
   //CurrentRow=SubDiv.id.substring(SubDiv.id.length-1,SubDiv.id.length);
   var crow=SubDiv.id.replace('ctl00_CP_txtSearch','');
   CurrentRow=crow;
   
  
   SubDiv.style.backgroundColor='#E2926C';
}
function checkKeysUp(e,txtSugg,ReqLen,FieldName,objProv)
{
    
  if(IsIE)  { this.keynum = event.keyCode;  } //IE
  else { this.keynum = e.which; }    // Netscape/Firefox/Opera
  
  if(this.keynum == 38) 
  { // up
      if(isSuggOpen(document.getElementById("div" + txtSugg.id)))
      {
        iselDiv--;
        if(iselDiv < 0)
        {
          iselDiv = 0;
        }
      }
  }
  else if(this.keynum == 40) 
  { // down
      if(isSuggOpen(document.getElementById("div" + txtSugg.id)))
      {
          iselDiv++;
          if(iselDiv >= suggCount)
          {
              iselDiv = 0;
          }
      }
  }
  else if(this.keynum != 13)
  {
     
     if(txtSugg.id=="txtPayerName")
        ReqLen = 0;
     if(txtSugg.value.length > ReqLen) 
     {
        XmlHttpReq(txtSugg,document.getElementById("div" + txtSugg.id),FieldName,objProv)
     }
     else
     {
       closediv(document.getElementById("div" + txtSugg.id));
     }
  }
  if(isSuggOpen(document.getElementById("div" + txtSugg.id)))
  {
      if(iselDiv > -1)
      {
        divSugg = document.getElementById("div" + txtSugg.id);
        if(IsIE)
            highLight(txtSugg,divSugg,document.getElementById(txtSugg.id + iselDiv + ''))
        else
            highLight(txtSugg.id,divSugg.id,document.getElementById(txtSugg.id + iselDiv + ''))
      }
  }
  return true;
}
function checkKeysDown(e,txtSugg,FieldName)
{
      
  if(IsIE){this.keynum = event.keyCode;}  // IE 
  else {this.keynum = e.which;}    // Netscape/Firefox/Opera
  
  if(this.keynum == 9)
  {
    closediv(document.getElementById("div" + txtSugg.id))
  }
  if(this.keynum == 13 && isSuggOpen(document.getElementById("div" + txtSugg.id))) 
  { 
      if(IsIE)
      {
    
        selText(txtSugg,document.getElementById("div" + txtSugg.id),document.getElementById(txtSugg.id + iselDiv),FieldName);
        window.event.returnValue=false;
      }
      else
      {
        selText(txtSugg,document.getElementById("div" + txtSugg.id).id,document.getElementById(txtSugg.id + iselDiv),FieldName);
        e.preventDefault();
      }
      
  }
  return true;
}
function isSuggOpen(divSugg)
{
     if(IsIE)
        return (divSugg.style.display == '')?true:false;
     else
        return (divSugg.style.display == 'table-row')?true:false;
}
function XmlHttpReq(txtSugg,divSugg,FieldName,objProv)
{ 
var Val;
if(document.getElementById('ctl00_CP_Category_slt_0').checked==true)
            Val=document.getElementById('ctl00_CP_Category_slt_0').value;
    else if(document.getElementById('ctl00_CP_Category_slt_1').checked==true)
            Val=document.getElementById('ctl00_CP_Category_slt_1').value;
    else if(document.getElementById('ctl00_CP_Category_slt_2').checked==true)
            Val=document.getElementById('ctl00_CP_Category_slt_2').value;
    else if(document.getElementById('ctl00_CP_Category_slt_3').checked==true)    
            Val=document.getElementById('ctl00_CP_Category_slt_3').value;
    else if(document.getElementById('ctl00_CP_Category_slt_4').checked==true)
            Val=document.getElementById('ctl00_CP_Category_slt_4').value;
            
   var sURL = "XmlHttpAutoSuggest.aspx?qInputValue="+Val+"&qFieldName="+txtSugg.value;
   if(FromPage=="MEMBER") 	
     sURL = "../XmlHttpAutoSuggest.aspx?qInputValue="+Val+"&qFieldName="+txtSugg.value;
   XMLHttpRequestAutosugg(sURL,txtSugg,divSugg,FieldName);
}
function closediv(divSugg)
{
   divOpen=false;
   divSugg.style.display = 'none';
   CurrentRow=-1;
}

function XMLHttpRequestAutosugg(sURL,txtSugg,divSugg,FieldName)
{

   var parser
   var nodes=null
   var xmlHttp;
   CurrentRow=-1;
   if (window.XMLHttpRequest) //Netcape and IE 7
   {
       xmlHttp=new XMLHttpRequest()
   }
   else if(window.ActiveXObject) //IE5.x and IE 6 only
   {
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")
   }
   xmlHttp.onreadystatechange=function()
   {
      if(xmlHttp.readyState==4)
      {
          try
          {
              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.getElementsByTagName("row");
              }
              else
              {
                  var parser=new ActiveXObject("microsoft.xmldom")
                  parser.async="true" 
                  parser.loadXML(xmlstring) 
                  nodes = parser.documentElement.childNodes
              } 
              if(FieldName=="SPECIALITY")
              {
                    var FirstHeading="Specialty Description";
                    //var SecondHeading="Sub Specilaity Desc";
              }
              
              var HTMLDivs; 
              this.suggCount = nodes.length;
    
              
              
              if(FieldName=="SPECIALITY")
              {
                var BackGroundStyle="'gridrow'"
                
                HTMLDivs ="<table id=tbl1 name=tbl1 cellpadding=1 cellspacing=1 style='width : 100%; height:0%'><tr class=gridheading style='width : 50px' ><td>"+FirstHeading+"</td></tr>";
              }
               else
              {
                var BackGroundStyle="''"
                HTMLDivs ="<table id=tbl1 cellpadding=1 cellspacing=1><tr class=gridheading></tr>";
              }
              
              tblval=new Array();
              for(var i=0;i<nodes.length;i++)
              {
                
                   var sTd="";var sTd1="";
                   
                   var arrTd 
                   if(IsIE==false)
                   {
                        arrTd= nodes[i].attributes[0].textContent.split('$') ;
                        tblval[i]=nodes[i].attributes[0].textContent;
                        
                   }
                   else
                   {
                        arrTd= nodes[i].attributes[0].value.split('$') ;
                        tblval[i]=nodes[i].attributes[0].value;
                   }
                   
                   for(var j=0;j<arrTd.length;j++)
                   {
                      //if(sTd1=="")
						//sTd1 = arrTd[j];
					  //else
						//sTd1 = sTd1+"$"+arrTd[j];
				
                     if(j==4)
                     {
						sTd += "<td>" + arrTd[j] + "</td>" 
						
                     }
                     	
                     //if(j==4)
                     //{
                         //sTd1 += arrTd[j]+",";
                    // }
                     //else
                     //{
                        //sTd += "<td>" + arrTd[j] + "</td>" 
                       // sTd1 += arrTd[j]+",";
                     //}
                   }
                   
                  // tblval[i]=sTd1;
                 
                  
                   if(IsIE==true)
                        HTMLDivs += "<tr class="+BackGroundStyle+" style='cursor: pointer;width : 50px' name = '" + txtSugg.id + i + "' id='" + txtSugg.id + i + "' onmouseover=highLight(" + txtSugg.id + "," + document.getElementById("div" + txtSugg.id).id + ",this) onclick=selText(" + txtSugg.id + "," + document.getElementById("div" + txtSugg.id).id + ",this,'" + FieldName + "') >" + sTd + "</div></tr>";
                   else
                        HTMLDivs += "<tr class="+BackGroundStyle+" style='cursor: pointer;width : 50px' name = '" + txtSugg.id + i + "' id='" + txtSugg.id + i + "' onmouseover=highLight('" + txtSugg.id + "','" + document.getElementById("div" + txtSugg.id).id + "',this) onclick=selText('" + txtSugg.id + "','" + document.getElementById("div" + txtSugg.id).id + "',this,'" + FieldName + "') >" + sTd + "</div></tr>";
              }
              
              HTMLDivs +="</table>";
              HTMLDivs += "<div id='btnclose' style='width : auto'  onclick='closediv(" + divSugg.id + ")' align='right' style='color:Black;cursor:pointer'>close</div>"
              //HTMLDivs += '<!--[if lte IE 6.5]><iframe class="select-freeifrm" src="blank.html"></iframe><![endif]-->'
              HTMLDivs +="<!--[if lte IE 6.0]><iframe scrolling='no' frameborder='0'style='position:absolute;width:313px;height:210px;top:0px;left:0px;border:none;display:inline ;z-index:-1'></iframe><![endif]-->";
              //HTMLDivs += '</iframe>';
              iselDiv = -1;
              if(nodes.length == 0)
              {closediv(divSugg)}
              else
              {
                   divOpen=true; 
                   if(document.activeElement.id)
                   {
                     divSugg.innerHTML = HTMLDivs;
                     
                     if(IsIE==false)
                        divSugg.style.display = "table-row";
                     else
                        divSugg.style.display = '';
                     
                     divSugg.style.height='auto';
                   }
              }
          }
          catch(err)
          {
            txtSugg.onkeydown = null;
            return
          }
       }
    }
    if (window.XMLHttpRequest) //Netcape and IE 7
    {
       xmlHttp.open("GET",sURL,true)
       xmlHttp.send(null)
    }
    else if(window.ActiveXObject) //IE5.x and IE 6 only
    {
       if (xmlHttp)
       {
           xmlHttp.open("GET",sURL,true)
           xmlHttp.send()
       }
    }
}
// call this function from form of html 
function create_div_dynamic(txtObj,XPos,YPos,FieldName)
{
    var t=getAbsolutePos(txtObj);
    dv = document.createElement('div'); 
    dv.setAttribute('id',"div" + txtObj.id);       
    dv.className="DivAutoSugg"; 
    dv.style.position="absolute"; 
    
    
    if(IsIE)
    {
        dv.style.pixelTop = (YPos == null)? (t.y + 18) : parseFloat(YPos) ;
        dv.style.pixelLeft = (XPos == null)? (t.x + 5) : parseFloat(XPos) ;
    }
    else
    {
        dv.style.top = (YPos == null)? (t.y + 18) : parseFloat(YPos)+"px" ;
        dv.style.left = (XPos == null)? (t.x + 5) : parseFloat(XPos)+"px" ;
    }
    //if(FieldName=="DESCRIPTION" || FieldName=="PMSV_NAME")
    {
        dv.style.width = parseFloat(txtObj.style.width.split('px')[0])+ 40 + 'px';
    }
    //else
    //{
      //dv.style.width ='auto';
    //}
    document.aspnetForm.appendChild(dv);
    return dv;
}
function OnClickCloseDiv()
{

for(var i=0 ;i < closeTags.split("$$").length-1;i++)
 closediv(document.getElementById(closeTags.split("$$")[i]));
}
function getAbsolutePos(el) {
	var r = { x: el.offsetLeft, y: el.offsetTop };
	if (el.offsetParent) {
		var tmp = getAbsolutePos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
};
