		var blnUseCaching=false;	//v1.3.1.5 - to remove caching for AJAX controls
		var adding=false;
		//before a cell is updated,
		//check for fields that should not be edited
		
		//module variables to hold values from selection on the ItemTransaction grid
		//see also ug_CellClickGetRowData
		var m_ToLocationID;
		var m_ToProjectID;
		var m_Quantity;
		var m_Address;
		var m_AddressID;
		var m_LastConditionID;
		var m_LastCondition;	//v1.3.1.5
		var m_LastRecommendedQty;
		
		var m_ToLocationIDsession;
		var m_ToProjectIDsession;
		function preloadImages() {
		    //does nothing at this time.
		    //alert("howdy");
		}
		function openwindowModal(url)
		{
			var myArguments = new Object();
			 myArguments.param1 = "";
			var sFeatures="dialogHeight: " + 800 + "px; dialogWidth: " + 750 + "px; dialogTop: " + 20 + "px; dialogLeft: " + 400 + "px; edge: " + 5 + "; center: " + 0 + "; resizable: " + 1 + "; status: " + 1 + ";";
			window.showModalDialog(url,myArguments,sFeatures);
        }
        function openwindowParams(url, menubar, toolbar, resizable, scrollbars) {
            var myRef;
            myRef = window.open(url, 'mywin', 'left=400,top=20,width=750,height=800,location=0,menubar=' + menubar + ',toolbar=' + toolbar + ',resizable=' + resizable + ',scrollbars=' + scrollbars);
		
        }
		
		function openwindow(url)
		{
			var myRef;
			myRef = window.open(url,'mywin','left=400,top=20,width=750,height=800,location=0,menubar=1,toolbar=0,resizable=0,scrollbars=0');
			//myRef.focus();

		}
		//a generic message function to display a message by alert box
		function msg(message)
		{
			alert(message);
		}
		
		//used by Edit_Address.aspx to remove comma from Institute and replace with a dash
		//ms-help://Infragistics.WebUI.UltraWebGrid.v2/Infragistics.WebUI.UltraWebGrid.v2/Client-Side%20Intermediate.htm
		function ug_HandleExitEditMode(gridID, cellID) {
			// get reference to row object
			var row = igtbl_getRowById(cellID);
			
			if(row.getCellFromKey("Institute").getValue()!=null &&
			row.getCellFromKey("Institute").getValue().indexOf(",")>0)
			{
				alert("Commas may not be included in Institute text, replaced comma with a dash")
				row.getCellFromKey("Institute").setValue(row.getCellFromKey("Institute").getValue().replace(","," -"));
			}
			ug_AfterCellUpdate();
		    
		}
		

		function ug_AfterCellUpdate()	//after a cell is updated, enable btnSubmit
		{
			//alert("Cell updated");
			disableButton("btnSubmit",false);		//enable the Submit button
					
		}

		function setButtons(history)
		{
			if(history==1)
			{
				disableButton("btnHistory",false);
			}
			disableButton("btnEditSelectedItem",false);
			disableButton("TransactionClauseGenerator1_btn20",false);
			disableButton("TransactionClauseGenerator1_btn10",false);
			disableButton("btnDelete", false);	//enable the Delete button
			//disableButton("btnEdit",false);
			//disableButton("btnCancel2",false);	//enable the Cancel button
			
			//disableButton("TransactionClauseGenerator1_btn10",false);
		}
		
		//gets the cell grid value from Infragistics grid.  Must pass the row, and the cellName
		function getGridValue(row, cellName)
		{
			if(document.all)
			{
				return row.getCellFromKey(cellName).getValue();
			}
			else {
			    return row.getCellFromKey(cellName).Element.text;
//				var varID=row.getCellFromKey(cellName).Element.innerHTML;
//				//alert(varID);
//				var varID2=varID.replace("<nobr>","");
//				//alert(varID2);
//				var varID3=varID2.replace("</nobr>","");
//				return varID3;
			}
		}
		function getGridFieldValue(row, field) {
		    if (document.all) {
		        return row.getCellFromKey(field).getValue();
		    }
		    else {
		        return row.getCellFromKey(field).Element.text;
		    }
		}
		function disableButton(btnName, bln)
		{
			if(document.getElementById(btnName)!=null)	//make sure the button exists
			{
				//alert(btnName + " exists");
				if(bln==true)	//disable the button
				{		
					document.getElementById(btnName).disabled=true;
					//document.getElementById(btnName).style.backgroundColor="#3366cc";
					document.getElementById(btnName).style.backgroundColor="#7E9345";		//med green
					//
					//document.getElementById(btnName).style.CssClass="btn1";

				}
					else			//enable the button
				{ 
					document.getElementById(btnName).disabled=false;
					//document.getElementById(btnName).style.backgroundColor="#66cc00";
					document.getElementById(btnName).style.backgroundColor="#faf991";		//pale yellow
					document.getElementById(btnName).style.color="#264909";				//dark green
					//document.getElementById(btnName).style.CssClass="btn2";

				}
			}
			//else
			//{
			//	alert(btnName + " does not exist");
			//}
		}
		
		function disableDropDown(btnName, bln)
		{
			if(document.getElementById(btnName)!=null)	//make sure the button exists
			{
				//alert(btnName + " exists");
				if(bln==true)	//disable the button
				{		
					document.getElementById(btnName).disabled=true;
					document.getElementById(btnName).style.backgroundColor="#717365";	//bgTransCG gray

				}
					else			//enable the button
				{ 
					document.getElementById(btnName).disabled=false;
					document.getElementById(btnName).style.backgroundColor="#ffffff";		//white
					document.getElementById(btnName).style.color="#000000";				//black

				}
			}
		}


		function setRadioButtonSelectedValue(oControl,value)
		{    
			var list = document.getElementById(oControl.id);
			var options = list.getElementsByTagName("input");
			for( x = 0; x < options.length; ++x )
			{
				if( options[x].type == "radio" && options[x].value==value )
				{
					options[x].checked=true;
					return;
					//return options[x].value;
					break;
				}
			}
		
		}
		function replaceNOBR(str)
		{
			if(document.all)
			{
				var ret=str.replace("<nobr>","");
				var ret=ret.replace("</nobr>","");
				var ret=ret.replace("<NOBR>","");
				var ret=ret.replace("<NOBR title=\"\">","");
				var ret=ret.replace("</NOBR>","");
				var ret=ret.replace("&nbsp;","");
				return ret
			}
			else
			{
				/*
				var ret=str.replace(/<nobr>/gi,"");
				var ret=ret.replace(/</nobr>/gi,"");
				var ret=ret.replace(/<NOBR>/gi,"");
				var ret=ret.replace(/<NOBR title=\"\">/gi,"");
				var ret=ret.replace(/</NOBR>/gi,"");
				var ret=ret.replace(/&nbsp;/gi,"");	
				return ret
				*/
			}
		}

		function ug_CellClick()	//enables the Delete and Cancel buttons
		{
			disableButton("TransactionClauseGenerator1_btn10",true);
			disableButton("btnDelete", true);		//disable the Delete button
			
			//for VPR_ItemTransaction.aspx
			disableButton("btnHistory",true);	
			disableButton("btnEditSelectedItem",true);
			//disableButton("TransactionClauseGenerator1:btn10",true);
			disableButton("TransactionClauseGenerator1_btn20",true);
			
		}
		
		function ug_Delete()	//disabled the Delete button after it was clicked
		{
		

			try
			{
			igtbl_selectRow("UltraWebGrid1", igtbl_getActiveRow("UltraWebGrid1").Element.id, true);
			igtbl_deleteSelRows("UltraWebGrid1");
			
			disableButton("btnDelete", true);
			disableButton("btnSubmit",false);
			}
			catch(ex)
			{
				alert(ex.message);
			}
			//document.forms[0].item("btnDelete").disabled=true;
		}

		function ug_Add()
		{
			try
			{
				adding=true;
				var grid=igtbl_getGridById('UltraWebGrid1');
				grid.AllowAddNew=1;	//1=yes
				igtbl_addNew("UltraWebGrid1",0); //add a new row to the grid
				//disableButton("btnCancel2", false);	//enable the Cancel button
				disableButton("btnAdd2", true);	//disables this Add button
				//document.forms[0].item("btnCancel2").disabled=false;	
				//document.forms[0].item("btnAdd2").disabled=true;
			}
			catch(e)
			{
				alert("No data selected.\nPlease select a dataset using the Selection Criteria.");
			}
		}


		 
		function changePanel(panel)
		{
			document.getElementById(panel).visible = !document.getElementById(panel).visible;
		}
		

	

		function wdc_EditKeyDown(oDropDown, keyCode, oEvent)
		{
			/**/
			//this.MainForm.submit();
			if (document.all)
			{

				if (((event.keyCode >= 48) && (event.keyCode<=57)) || (event.keyCode==9) || ((event.keyCode >= 96) && (event.keyCode<=111)))	//keys 0123456789 key pad 0123456789 and TAB
				{
					return true;	// let the user enter these "date" entry keys
				}
				else
				{
					//if (event.keyCode == 13)
					if ((event.keyCode >= 1) && (event.keyCode<=127))	//any key
					{
					event.returnValue=false;
					event.cancel = true;
					return false;
					}
				}
			}
			
			else if (document.getElementById)
			{
				if (((event.which >= 48) && (event.which<=57)) || (event.which==9) || ((event.which >= 96) && (event.which<=111)))	//keys 0123456789 key pad 0123456789 and TAB
				{
					return true;	// let the user enter these "date" entry keys
				}
				else
				{
					//if (event.which == 13)
					if((event.which>=1) && (event.which<=127))
					{
					event.returnValue=false;
					event.cancel = true;
					}
				}
			}
			else if(document.layers)
			{
				if (((event.which >= 48) && (event.which<=57)) || (event.which==9) || ((event.which >= 96) && (event.which<=111)))	//keys 0123456789 key pad 0123456789 and TAB
				{
					return true;	// let the user enter these "date" entry keys
				}
				else
				{
					//if (event.which == 13)
					if((event.which>=1) && (event.which<=127))
					{
					event.returnValue=false;
					event.cancel = true;
					}
				}
			}
			
		}
		
		//to cancel the form from submitting if the user clicks the Return Key in a control
		function cancelReturnKey(e)
        {

        }
 		//to cancel the Return Key in a control
 		//works both IE and Mozilla 061206
		function cancelReturnKeyControl(e)
        {
			if (!e) var e = window.event;
			if (e.keyCode) code = e.keyCode;
			else if (e.which) code = e.which;
			//022606 commented out to make Edit_Item TypeInDD code work, but need to re-evaluate
			//	still need to cancelReturnKey to cancel the effect of hitting  Return key in WCGs e.g.
            //if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13))
            if(code==13)
           {
                //document.all("btnSearch").click();
                e.cancelbubble=true;
                if(e.stopPropagation)
                {
					e.stopPropagation();
                }
                if(document.all)
                {
					event.returnValue=false;
					event.cancel = true;
				}
				return false;
            }
            else
            {
                return true;
            }    
        }       
        
        //START of functions to allow type in dropdowns to find matches
        //found at: http://www.c-sharpcorner.com/Code/2004/Feb/DropDownListSelection.asp
        function clearWord()
		{
		userWord = "";
		//document.forms[0].result.value = ""; 
		}
		var userWord = "";
		function TrapKey(obj, e)
		{
		thekey = String.fromCharCode(event.keyCode);
		userWord += thekey;
		for (var i = 0; i < obj.options.length; i++) {
			var txt = obj.options[i].text.toUpperCase();
		    
		//document.forms[0].result.value = userWord; 
		if (txt.indexOf(userWord) == 0) {
			obj.options[i].selected = true;
			obj.options[i].focus();
			break;
			}
		}
		setTimeout("clearWord()", 5000)
		}
		//END of functions to allow type in dropdowns to find matches
		
		//Very Handy utility functions
		
		//http://channel9.msdn.com/ShowPost.aspx?PostID=39233
		//gets the selected value of a RadioButtonList
		function getRadioButtonSelectedValue(oControl)
		{
		    //alert("inside getRadioButtonSelectedValue");
			//var list = document.getElementById("rblTagType");
			var list = document.getElementById(oControl);
			var options = list.getElementsByTagName("input");
			for( x = 0; x < options.length; ++x )
			{
				if( options[x].type == "radio" && options[x].checked )
				{
					//alert(options[x].value); // Do something more useful here.
					//document.getElementById("txtTagType").value=options[x].value;
					return options[x].value;
					break;
				}
			}
		} 
		function getDropDownText(oControl)
		{
			//var list = document.getElementById("rblTagType");
			var list = document.getElementById(oControl.id);
			var options = list.getElementsByTagName("option");
			for( x = 0; x < options.length; ++x )
			{
				if( options[x].selected )
				{
					//alert(options[x].value); // Do something more useful here.
					//document.getElementById("txtTagType").value=options[x].value;
					//return options[x].innerText;
					return options[x].text;	//to work for Mozilla as well as IE
					break;
				}
			}
		}		
		function getDropDownValue(oControl)
		{
			//var list = document.getElementById("rblTagType");
			var list = document.getElementById(oControl.id);
			var options = list.getElementsByTagName("option");
			for( x = 0; x < options.length; ++x )
			{
				if( options[x].selected )
				{
					//alert(options[x].value); // Do something more useful here.
					//document.getElementById("txtTagType").value=options[x].value;
					return options[x].value;
					break;
				}
			}
		}
		
		
		


	function setNodeAttr( nodeObj, attrName, attrVal )  {   
		//No sanity checks here. Verify nodeObj before calling this.   
		var attributeNode = nodeObj.getAttributeNode( attrName );   
		if ( attributeNode )
		{attributeNode.value = attrVal;} 
		else 
		{nodeObj.setAttribute( attrName, attrVal );}
	}  

	function ExportToExcel()
	{
		//window.open("Templates/ExportToExcel.aspx",null,"toolbar=1,location=0,directories=0,status=0,menubar=1,scrollbars=1,resizable=1,width=600,height=500,left=40,top=50"); 
		myRef = window.open('Templates/ExportToExcel.aspx','mywin','toolbar=1,location=0,directories=0,status=0,menubar=1,scrollbars=1,resizable=1,width=600,height=500,left=40,top=50');
		myRef.focus();	
	}
	
	//used by WCG and TCG to clear all textbox and checkbox controls:
	function resetControls(prefix)
	{
		var x=document.getElementsByTagName("input");
		//alert("x.length=" + x.length);
		for(var i=0;i<x.length;i++)
		{
			//clear the textboxes (all are ID'd with 'txt' in the name)
			//clear all except for txtTagType and txtTagTypeID
			if(x[i].id.indexOf(prefix + "_txt")==0 && x[i].id.indexOf("TagType")==-1) x[i].value="";
			//clear the checkboxes (all are ID'd with 'chk' in the name)
			if(x[i].id.indexOf(prefix + "_chk")==0) x[i].checked=false;
		}

	}  
	//used by WCG to clear Inventory Between Dates controls:
	function resetDates()
	{
		document.getElementById("WhereClauseGeneratorASCX1_txtStartDate").value="";
		document.getElementById("WhereClauseGeneratorASCX1_txtEndDate").value="";		
	}
	
	//rounds numbers call like roundNumber(varName,2)  where 2 is the number of decimal places desired
	function roundNumber(num, dec) {
		var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
		//alert(result);
		return result;
	}
	

	