/************************************************************************************************************/
/*   Author : Manmeet Kaur
     Date   : 3rd may. 07
     Desc   : This file contains functions to populate the auto-fill options using Ajax.

     Functions Description:
     Function Name               Description                                              Event(when function called)
     get_focus()         function would call when putting the curson on the input field.         onFocus
     lost_focus()        function would call when input field losts the focus.                   onBlur
     populate_values()   function to bring the values through Ajax                               onKeyUp
     fnEnd()             function to be called after ajax function return the values               ----
     changeStyle()       function to change the style of the div selected                        onMouseOver
     changePreviousStyle() function to recover the previous style of the div when focus lost     onMouseOut
     scroll_keys()        function to facilitate the up/down arrow keys to move on the populated onKeyDown
                          values.

// Updated by sudhanshu On 18th Nov.2008 
/***********************************************************************************************************/

var lastRowVal = 1;

var optArrTest 		= new Array();
var prodArrTest 	= new Array();
var orderArrTest	= new Array();
var optionTxt		= new Array();

var selectedDivId = 0;
var previousDivId = 0;
var divcount = 0;
var eFlag = 0;
var id    = 0;
var kn;
var backgroundColor = "#0e879f"; // Use on changeStyle function
var sel;
var sel1
/* Function to be called when the input field gets focused */

function get_focus(divid,caption)
{
	eval("document.getElementById('"+divid+"')").style.visibility="visible";
    eval("document.getElementById('"+divid+"')").innerHTML="Type to select a "+caption;
}
/* Function to be called when the input field losts focus */
function lost_focus(divid,uname,type)
{
	//alert("Div: "+divid+" uname : "+uname+" Type:"+type);
    eval("document.getElementById('"+divid+"')").style.visibility="hidden";
    eval("document.getElementById('"+divid+"')").innerHTML="";
	//alert(eval("document.getElementById('hf_name')").value);
	
	//for SKU,PArt & product_name-->type=""
    if(((type!="") || (type.length>0)) && ((uname!="") || (uname.length>0)))
	{
		var uid=eval("document.getElementById('hf_name')").value;
		//putinfo(uname,type);
		//alert(uid);
		putinfo(uid);
		
	}
   
    
}
/*

	Function to populate Values
    @divid  id for div
    @sURL  Ajax file to be called
    @fldname the field name for which the value is searching
    @fldval  key value to be searched for

    This function could be changed as per the requirement.
*/
function populate_values(divid,sURL,keyname,fldid,id)
{
   // alert( document.getElementById("TR_orderNo").value );
   //alert(document.getElementById(fldid).value.length);
   
   // var orderNo = document.getElementById("TR_orderNo").value;
	var key_len=document.getElementById(fldid).value.length;
	//alert(key_len);
	if(key_len>2)
	{
		//////////decide table name//////////////
		var tbl;
		if((keyname=='first_name') || (keyname=='last_name')|| (keyname=='company_name'))
		{
			 tbl="&tbl=billing";
	
		}
		else
		{
			 tbl="&tbl=prod";
	
		}
	
		/////////////////////////////////
		if(eFlag == 0)
		{
			//alert( prodArrTest[1581] )
			//alert( prodArrTest[3983] )
			var prdStr='';
			for(var i=0;i<prodArrTest.length;i++)
			{
				if( prodArrTest[i] )
					prdStr = prdStr +","+i+","+prodArrTest[i];
			}
			
			//alert( prdStr )
			//arr.length
			//alert("keyname="+keyname+"&keyval="+keyval+"&fldid="+fldid+"&id="+id+tbl);
			//get_focus(divid,'Location');
			//mykeyname=keyname.substring(13);
			get_focus(divid,keyname);
			kn = keyname;
			fldobj = document.getElementById(fldid);
			var keyval = fldobj.value;
			keyval			=	encodeURIComponent( keyval );

			 url = sURL //sURL+"?keyname="+keyname+"&keyval="+keyval+"&fldid="+fldid+"&orderNo="+orderNo+"&prodArr="+prodArrTest+"&id="+id+tbl;
			//parametersList="keyname="+keyname+"&keyval="+keyval+"&fldid="+fldid+"&orderNo="+orderNo+"&prodArr="+prdStr+"&id="+id+tbl;
			parametersList="keyname="+keyname+"&keyval="+keyval+"&fldid="+fldid+"&prodArr="+prdStr+"&id="+id+tbl;
			// alert( "URL " + parametersList );
			   new Ajax.Updater(divid,url,
			   {
					 method:'post',//get|post
					//insertion: Insertion.Bottom,//Top|Bottom
					//insertion: Insertion.Top,//Top|Bottom
					 asynchronous: true,//true|false
					//contentType: 'application/x-www-form-urlencoded',
					parameters: parametersList,//{company: 'example', limit: 12}
					onComplete: function(transport){
					var response = transport.responseText || "no response text";
					//alert("Completed! \n\n" + response);
					}
			  
			   });
			
		}
		else
			return false;
	
	   
}

}

function changeStyle(divid,divprefix)
{
	//   var fldobj = document.getElementById(fldid);
    var divobj = document.getElementById(divid);
    selectedDivId = divid;
    id = parseInt(divid.replace(divprefix,""));    // getting div number
    eval("document.getElementById('"+divid+"')").style.background = backgroundColor;
    return false;   // assigning new color to backgroud
    // fldobj.value= eval("document.getElementById('"+divid+"')").innerHTML;
}
/*   Returns the selected div value to the text field    */
function selectValue(fldid,divid)
{
	 var fldobj = document.getElementById(fldid);
     fldobj.value= eval("document.getElementById('"+divid+"')").innerHTML;
     
     return false;
}
/*Function to show selected name value*/
function nameselectValue(fldid,divid,uid,val)
{
	 var fldobj = document.getElementById(fldid);
	 var get_tot_nm=eval("document.getElementById('"+divid+"')").innerHTML;
	 var get_nm=get_tot_nm.split(" ");
	 
     //fldobj.value= get_nm[0];
	 fldobj.value= val;
     document.getElementById("hf_name").value=uid;
     
     
     return false;
}
/*Function to show selected Company name value*/
function compselectValue(fldid,divid,uid,val)
{
	 var fldobj = document.getElementById(fldid);
	 //fldobj.value= eval("document.getElementById('"+divid+"')").innerHTML;
	 fldobj.value= val;
     document.getElementById("hf_name").value=uid;
     
     
     return false;
}
/* Function to put related value in other text box
tbox1 stores id,
tbox1_val stores value of the correspondin  field

*/
function putValue(tbox1,tbox2,tbox3,tbox1_val,tbox2_val,tbox3_val,tr_no)
{
	
	//alert(tbox1_val);
	//alert(tbox2_val);
	document.getElementById(tbox1).value=tbox1_val;
	document.getElementById(tbox2).value=tbox2_val;
	document.getElementById(tbox3).value=tbox3_val;
	//alert(tr_no)
	//alert(document.getElementById('product_id_'+tr_no))
    return false;
}


/**/
/* Function to recover the previous style of the div on mouse out event of keyup/down event occurs
   Input params:
   @divname -> div obj
   @divprefix -> the name of the div(without the iterator number) which returned from ajax script.
   Returns the selected div value to the text field
*/
function changePreviousStyle(divid,divprefix)
{
    previousDivId = divid;
    eval("document.getElementById('"+divid+"')").style.background="";
}
/* Function to enabled the arrow keys to move up and down on the populated values
   Input params:
   @e -> event
   @fldid -> Field id where value of selected div to be returned.
   @divprefix -> the name of the div(without the iterator number) which would returned from ajax script.
   @divid -> populated area of divs
*/
function scroll_keys(e,fldid,divprefix,divid)
{
    var obj=window.event? event : e;       // event for IE ; e for Mozilla/Netscape/Opera
  	var key=obj.charCode? obj.charCode : obj.keyCode;
    var lastKeyCode = key;
    var curid   = parseInt(id);
    var lastid;
    var curDivId;
    var selectedDivId;
    var cflag;
    if(divcount==1)
    	cflag = 1;
    else
    	cflag = 0;
    if(divcount!=0)
      	lastid = parseInt(divcount)-1;
    else
    	return false;
    eFlag = 0;
    if(lastKeyCode == 38)
	{// Up arrow key
        var previd;
        eFlag = 1;
        if(curid <= lastid )
        {

            if(curid == 0)
            	previd = lastid;
            else
            	previd = parseInt(curid) - 1;
            curDivId  = divprefix+curid;
            if(cflag == 0)
            	changePreviousStyle(curDivId,divprefix);
        }
        selectedDivId = divprefix+previd;
        changeStyle(selectedDivId,divprefix);
        selectValue(fldid,selectedDivId);

      }
      else if(lastKeyCode == 40)
      {// Down arrow key
        var nextid;
        eFlag = 1;
        if(curid >= 0)
        {
            if(curid == lastid)
            	nextid = 0;
            else
            	nextid = parseInt(curid) + 1;
            curDivId  = divprefix+curid;
            if(cflag == 0)
            	changePreviousStyle(curDivId,divprefix);
        }
        selectedDivId = divprefix+nextid;
        changeStyle(selectedDivId,divprefix);
        selectValue(fldid,selectedDivId);

      }
      else if(lastKeyCode == 13)
      {// Enter key
      	eFlag = 1;
        var fldobj = document.getElementById(fldid);
        if(fldobj.value=="")
        	fldobj.value= eval("document.getElementById('"+selectedDivId+"')").innerHTML;
        lost_focus(divid,'','');
      }
      else
      {
      	eFlag = 0;
      }

}


function alternate_row(tdrow,tdClass1,tdClass2)
{
	if((tdrow%2)==0)
	{
		return tdClass1;
	}
	else
	{
		return tdClass2;
	}
}
//function to show user details in user information
function putinfo(userid)
{
	//alert(user_nm);params:"user_nm="+ user_nm +"&type="+type,
	//if new user is added from here
	if(userid.length>0)
	{
		callAjax("div_user_dtl", "add_user_ajax.php", {
		params:"user_id="+ userid ,
		
		meth:"get",
		async:true,
		startfunc:"",
		endfunc:"select_user_combo()",
		errorfunc:"ajaxError()" }
		);
	}
	/*else
	{
		alert("in if");
	}*/

}
//function to select combo box
function select_user_combo()
{
	//alert("hi");
	//document.getElementById('TN_user_name').value=document.getElementById('hajax_uid').value;
	document.getElementById('TN_user_name').value=document.getElementById('hf_name').value;
	return true;
}
//function to chk the value is exist or not in db   onchange=chkvalue(this.value,'sku_number',this.id);
//fldval=value put in text box,fldnm=field name related to the value,id=txtbox id
function chkvalue(fldval,fldnm,id)
{
	
	fldval			=	encodeURIComponent( fldval );
	requestUrl="check_proddtl.php?fldnm="+fldnm+"&fldval="+fldval+"&id="+id;
	//alert( requestUrl );
	new Ajax.Request(requestUrl,
	  {
		method:'get',//get|post
		
		asynchronous: true,//true|false
		//contentType: 'application/x-www-form-urlencoded',
		//parameters: parametersList,//{company: 'example', limit: 12}
		onSuccess: function(transport){
			//alert("==" + transport.responseText );
			if(transport.responseText==0 || transport.responseText==1 )
			{
				if(transport.responseText==0)
					alert("Corresponding product does not exist.");
				else if(transport.responseText==1)
					alert("Corresponding product you have allready added.");
					
				if(id==1)
				{
					document.getElementById("TR_Sku_Number"+id).value="";
					document.getElementById("TR_Part_number"+id).value="";
					document.getElementById("TR_Product_name"+id).value="";
					document.getElementById('product_opt_id_'+id).value="";
					document.getElementById('product_'+id).value="";
				}else
				{
					document.getElementById("TR_Sku_Number"+id).value="";
					document.getElementById("TR_Part_number"+id).value="";
					document.getElementById("TR_Product_name"+id).value="";
					document.getElementById('product_opt_id_'+id).value="";
					document.getElementById('product_'+id).value="";
				}
						
			}
			
		 		  
		},
		onFailure: function(){ alert('Something went wrong...') }
	  });

}


