function validateForm(oForm)
	{	
		//oForm refers to the form which you want to validate
		oForm.onsubmit = function() // attach the function to onsubmit event
			{
				var regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
				var blurb;
				blurb = 'The Following fields must be filled out or are incorrect:\n\n';
				
				var retVal=true;
				
				if(oForm.elements['ClaimDesc'].value.length<1)
					{
						blurb += "* Claim Description\n";
						retVal = false; 
					}
				if(oForm.elements['ExternalRefNo'].value.length<1)
					{
						blurb += "* Dealer Work Order Number\n";	
						retVal = false;
					}
				if(oForm.elements['CallNo'].value.length<1)
					{
						blurb += "* Call Number\n";	
						retVal = false;
					}
				if(oForm.elements['ClaimSubject'].value.length<1)
					{
						blurb += "* Serial Number / VIN Number\n";	
						retVal = false;
					}
				if(oForm.elements['OwnerName'].value.length<1)
					{
						blurb += "* Owner Name\n";	
						retVal = false;
					}
				if(oForm.elements['OwnerAddress1'].value.length<1)
					{
						blurb += "* Owner Address\n";	
						retVal = false;
					}
				if(oForm.elements['OwnerCity'].value.length<1)
					{
						blurb += "* Owner City\n";	
						retVal = false;
					}
				if(oForm.elements['OwnerZip'].value.length<1)
					{
						blurb += "* Owner Zipcode\n";	
						retVal = false;
					}
				if(oForm.elements['DealerXACustomerNo'].value.length<1)
					{
						blurb += "* Landoll Dealer Number\n";	
						retVal = false;
					}
				if(oForm.elements['DealerName'].value.length<1)
					{
						blurb += "* Dealer Name\n";	
						retVal = false;
					}
				if(oForm.elements['DealerAddress1'].value.length<1)
					{
						blurb += "* Dealer Address\n";	
						retVal = false;
					}
				if(oForm.elements['DealerCity'].value.length<1)
					{
						blurb += "* Dealer City\n";	
						retVal = false;
					}
				if(oForm.elements['DealerZip'].value.length<1)
					{
						blurb += "* Dealer Zipcode\n";	
						retVal = false;
					}
				if(oForm.elements['DealerPhone'].value.length<1)
					{
						blurb += "* Dealer Phone Number\n";	
						retVal = false;
					}
				if(oForm.elements['DealerFax'].value.length<1)
					{
						blurb += "* Dealer Fax\n";	
						retVal = false;
					}
				if(oForm.elements['DealerContactName'].value.length<1)
					{
						blurb += "* Dealer Contact Name\n";	
						retVal = false;
					}					
				if(oForm.elements['DealerEmail'].value.length<1)
					{
						blurb += '* Dealer Email\n';
						retVal=false;
					}
				else if(!regex.test(oForm.elements['DealerEmail'].value))
					{
						blurb += "* Dealer Email: --> Invalid email address format\n";
						retVal = false;
					}				
				if(retVal==false)
					{
						alert(blurb);
						return false;
					}
				else
					{
						//replaceAmp();
						return true;
					}	
			}
	}
	
function IsNumeric(sText)
	{	
		var ValidChars = "0123456789.";
		var IsNumber=true;
		var Char;
		
		for (i = 0; i < sText.length && IsNumber == true; i++) 
			{ 	
				Char = sText.charAt(i); 
				if (ValidChars.indexOf(Char) == -1) 
					{
						IsNumber = false;
					}
			}
		return IsNumber;	
	}

function validatePartsForm(oForm)
	{	
		//oForm refers to the form which you want to validate
		oForm.onsubmit = function() // attach the function to onsubmit event
			{
				var blurb;
				blurb = 'The Following fields must be filled out or are incorrect:\n\n';
				
				var retVal=true;
				
				if(oForm.elements['ClaimNo'].value.length<1)
					{
						blurb += "* Claim Number\n";
						retVal = false; 
					}
				else
					{
						if(IsNumeric(oForm.elements['ClaimNo'].value))
							{
								//alert('test1');
							}
						else
							{
								blurb += "* Claim Number Must Be Numeric\n";
								retVal = false;						
							}	
					}
				if(oForm.elements['StockedPartId'].value.length<1)
					{
						blurb += "* Landoll Part ID\n";
						retVal = false;
					}
				if(oForm.elements['StockedPartDesc'].value.length<1)
					{
						blurb += "* Description\n";
						retVal = false;
					}
				if(oForm.elements['StockedPartQty'].value.length<1)
					{
						blurb += "* Quantity\n";
						retVal = false;
					}
				else
					{
						if(IsNumeric(oForm.elements['StockedPartQty'].value))
							{
								//alert('test1');
							}
						else
							{
								blurb += "* Quantity Must Be Numeric\n";
								retVal = false;						
							}	
					}
				if(oForm.elements['StockedPartUnitPrice'].value.length<1)
					{
						blurb += "* Unit Price\n";
						retVal = false;
					}
				else
					{
						if(IsNumeric(oForm.elements['StockedPartUnitPrice'].value))
							{
								//alert('test1');
							}
						else
							{
								blurb += "* Unit Price Must Be Numeric\n";
								retVal = false;						
							}	
					}
				
							
				if(retVal==false)
					{
						alert(blurb);
						return false;
					}
				else
					{
						//replaceAmp();
						return true;
					}	
			}
	}
	
//This section of code is not in use yet.  Not sure I'm going to.
// ================================================================
/*

function moneyFormat(textObj) 
	{
		var newValue = textObj.value;
		var decAmount = "";
		var dolAmount = "";
		var decFlag = false;
		var aChar = "";
		
		// ignore all but digits and decimal points.
		for(i=0; i < newValue.length; i++) 
			{
				aChar = newValue.substring(i,i+1);
				if(aChar >= "0" && aChar <= "9") 
					{
						if(decFlag) 
							{
								decAmount = "" + decAmount + aChar;
							}
						else 
							{
								dolAmount = "" + dolAmount + aChar;
							}
					}
				if(aChar == ".") 
					{
						if(decFlag) 
							{
								dolAmount = "";
								break;
							}
						decFlag=true;
					}
			}
		
		// Ensure that at least a zero appears for the dollar amount.
		if(dolAmount == "") 
			{
				dolAmount = "0";
			}
		// Strip leading zeros.
		if(dolAmount.length > 1) 
			{
				while(dolAmount.length > 1 && dolAmount.substring(0,1) == "0") 
					{
						dolAmount = dolAmount.substring(1,dolAmount.length);
					}
			}
		
		// Round the decimal amount.
		if(decAmount.length > 2) 
			{
				if(decAmount.substring(2,3) > "4") 
					{
						decAmount = parseInt(decAmount.substring(0,2)) + 1;
						if(decAmount < 10) 
							{
								decAmount = "0" + decAmount;
							}
						else 
							{
								decAmount = "" + decAmount;
							}
					}
				else 
					{
						decAmount = decAmount.substring(0,2);
					}
				if (decAmount == 100) 
					{
						decAmount = "00";
						dolAmount = parseInt(dolAmount) + 1;
					}
			}
		
		// Pad right side of decAmount
		if(decAmount.length == 1) 
		{
			decAmount = decAmount + "0";
		}
		if(decAmount.length == 0) 
		{
			decAmount = decAmount + "00";
		}
		
		// Check for negative values and reset textObj
		if(newValue.substring(0,1) != '-' || (dolAmount == "0" && decAmount == "00")) 
			{
				textObj.value = dolAmount + "." + decAmount;
			}
		else
			{
				textObj.value = '-' + dolAmount + "." + decAmount;
			}
	}
*/

// ================================================================

function showElems()
	{
		//alert('test');
		/*for (var i=0; i < form.elements.length; i++) 
			{
				//alert('test' + i);
			   var element = form.elements[i];
			   alert(element.name);
			}
		*/
	}
	
function testBlur(oForm)
	{		
		oForm.elements['DealerName'].value = oForm.elements['DealerName'].value.replace(" & ", " and ");
	}
	
function replaceAmp(oForm, field)
	{
		oForm.elements[field].value = oForm.elements[field].value.replace(" & ", " and ");
		oForm.elements[field].value = oForm.elements[field].value.replace("&", " and ");
	}
	
function replaceAmp_fsmtrail(field)
	{
		document.forms["fsmtrail"].elements[field].value = document.forms["fsmtrail"].elements[field].value.replace(" & ", " and ");
		document.forms["fsmtrail"].elements[field].value = document.forms["fsmtrail"].elements[field].value.replace("&", " and ");
	}
	
function replaceAmp_fsmag(field)
	{
		document.forms["fsmag"].elements[field].value = document.forms["fsmag"].elements[field].value.replace(" & ", " and ");
		document.forms["fsmag"].elements[field].value = document.forms["fsmag"].elements[field].value.replace("&", " and ");
	}
	
function replaceAmp_fsmfork(field)
	{
		document.forms["fsmfork"].elements[field].value = document.forms["fsmfork"].elements[field].value.replace(" & ", " and ");
		document.forms["fsmfork"].elements[field].value = document.forms["fsmfork"].elements[field].value.replace("&", " and ");
	}
	
function replaceAmp_fsmdrexel(field)
	{
		document.forms["fsmdrexel"].elements[field].value = document.forms["fsmdrexel"].elements[field].value.replace(" & ", " and ");
		document.forms["fsmdrexel"].elements[field].value = document.forms["fsmdrexel"].elements[field].value.replace("&", " and ");
	}
	
function replaceAmp_fsmreman(field)
	{
		document.forms["fsmreman"].elements[field].value = document.forms["fsmreman"].elements[field].value.replace(" & ", " and ");
		document.forms["fsmreman"].elements[field].value = document.forms["fsmreman"].elements[field].value.replace("&", " and ");
	}	
	
function replaceAmp_fsm4(field)
	{
		document.forms["fsm4"].elements[field].value = document.forms["fsm4"].elements[field].value.replace("&", "");
	}

/*
function replaceAmp(oForm)
	{
		oForm.elements['ClaimSubject'].value = oForm.elements['ClaimSubject'].value.replace(" & ", " and ");
		oForm.elements['ClaimDesc'].value = oForm.elements['ClaimDesc'].value.replace(" & ", " and ");
		oForm.elements['OwnerName'].value = oForm.elements['OwnerName'].value.replace(" & ", " and ");
		oForm.elements['OwnerContactName'].value = oForm.elements['OwnerContactName'].value.replace(" & ", " and ");
		oForm.elements['DealerName'].value = oForm.elements['DealerName'].value.replace(" & ", " and ");
		oForm.elements['DealerContactName'].value = oForm.elements['DealerContactName'].value.replace(" & ", " and ");
		
		oForm.elements['ClaimSubject'].value = oForm.elements['ClaimSubject'].value.replace("&", " and ");
		oForm.elements['ClaimDesc'].value = oForm.elements['ClaimDesc'].value.replace("&", " and ");
		oForm.elements['OwnerName'].value = oForm.elements['OwnerName'].value.replace("&", " and ");
		oForm.elements['OwnerContactName'].value = oForm.elements['OwnerContactName'].value.replace("&", " and ");
		oForm.elements['DealerName'].value = oForm.elements['DealerName'].value.replace("&", " and ");
		oForm.elements['DealerContactName'].value = oForm.elements['DealerContactName'].value.replace("&", " and ");
	}
*/

// sets days/date options based on month selected
function setoptions(chosen, selbox) 
	{ 
		var myindex  = selbox.selectedIndex;
    	var SelValue = selbox.options[myindex].value;
		
		// sets the days in the 'day' dropdown list correspondant to the month selected.
		// default is 31 days - more months with 31 days than 30 (or 28).
		switch(chosen)
			{
				case "2": 	// February, 28/29 days
					setDays(selbox, 28);
				break;
				
				case "4":  // April, 31 days
					setDays(selbox, 30); 
				break;
				
				case "6":  // June, 31 days
					setDays(selbox, 30); 
				break;
				
				case "9":  // September, 31 days
					setDays(selbox, 30); 
				break;
				
				case "11":  // November, 31 days
					setDays(selbox, 30); 
				break;
				
				default:
					setDays(selbox, 31);
			}				
	} 

// recieves the current selected value in the Country 
// dropdown (chosen) and the id of the state dropdown 
// linked to the operating country dropdown (selbox)
function setStates(chosen, selbox)
	{
		// sets the myindex variable to the value selected in the country dropdown box.
		//var myindex  = selbox.selectedIndex;
    	//var SelValue = selbox.options[myindex].value;
		
		switch(chosen)
			{
				// US has been selected, enable state dropdown
				case "USA":
					selbox.disabled=false;
					document.getElementById('test1').visibility = 'visible';
				break;
				
				// any country other than US is selected, disable state dropdown
				default:
					selbox.disabled=true;
					document.getElementById('test1').visibility = 'hidden'; 
					//alert('test');
			}		
		
	}

function setDays(selbox, numOfDays)
	{		
		selbox.options.length = 0;
		// Check to see if the newly selected month has the 
		// same amount of days as the previously selected
		if (selbox.length == numOfDays)
			{
				//alert('skipping');
			}
			
		// The newly selected month's number of days do not match
		else
			{
				for (i=1;i<=numOfDays;i++)
					{
						selbox.options[selbox.options.length] = new Option(i,i);		
					}
			}
	}

// sets the values of text boxes to their pre-postback 
// values for verification before submission.
function reDisplay(hiddenFormVal, formDropdown)
	{
		var hiddenVal = document.getElementById(hiddenFormVal).value;
		var dropdown = formDropdown //document.getElementById(formDropdown);
		
		//alert(dropdown);
		
		if (hiddenVal != '')
			{
				for ( var i = 0; i < dropdown.options.length; i++ ) 
					{
						if ( dropdown.options[i].value == hiddenVal ) 
							{
								dropdown.options[i].selected = true;
								//return;
							}
					}	
			}
	}
	
// works with reDisplay function to set values of 
// text boxes to pre-postback values.
function postbackRedisplay(doc)
	{
		reDisplay('HiddenFailMonth', doc.Claim_Create.FailMonth);
		reDisplay('HiddenRepairMonth', doc.Claim_Create.RepairMonth);
		setoptions(doc.Claim_Create.FailMonth.options[doc.Claim_Create.FailMonth.selectedIndex].value, doc.Claim_Create.FailDay);
		setoptions(doc.Claim_Create.RepairMonth.options[doc.Claim_Create.RepairMonth.selectedIndex].value, doc.Claim_Create.RepairDay);
		reDisplay('HiddenFailDay', doc.Claim_Create.FailDay);
		reDisplay('HiddenFailYear', doc.Claim_Create.FailYear);
		reDisplay('HiddenRepairMonth', doc.Claim_Create.RepairMonth);
		reDisplay('HiddenRepairDay', doc.Claim_Create.RepairDay);
		reDisplay('HiddenRepairYear', doc.Claim_Create.RepairYear);

	}
	
// This is for getting Dealer info for the Claim form
function EvDealerNoKeyPressed()
	{
		if ( window.event.keyCode == 13 ) 
			{
				window.event.keyCode = 0;
				EvDealerNoChanged();
			}
	}

function EvDealerNoChanged()
	{
		var strTheDealerNo = document.forms(0).DealerXACustomerNo.value;
		var theURL = "/fsm/handle4.php?thecustno=" + strTheDealerNo;
		var http = new HTTPRequest();

		http.open( "GET", theURL, true );
		http.onreadystatechange= function(){ EvDealerNoChangedResponse( http )};
		http.send();
	}

function EvDealerNoChangedResponse( http )
	{
		if ( http.readyState == 4 )
			{
				var xmlDoc;
				var xml = http.responseText;
				var strXMLParser = SysGetXMLClientVer(); 
	
				if ( !strXMLParser ) 
					{
						alert( "MS XML Parser not found" );
						return;
					}
				//xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
				xmlDoc = new ActiveXObject( strXMLParser ); 
				xmlDoc.async=false; 
				xmlDoc.loadXML( xml );
				//alert( xml );
				//document.write( xml );
				XMLSetElementFromDoc( xmlDoc, "Name",         document.getElementsByName( "DealerName"         )(0) );
				XMLSetElementFromDoc( xmlDoc, "BillAddress1", document.getElementsByName( "DealerAddress1"     )(0) );
				XMLSetElementFromDoc( xmlDoc, "BillCity",     document.getElementsByName( "DealerCity"         )(0) );
				XMLSetElementFromDoc( xmlDoc, "BillState",    document.getElementsByName( "DealerState"        )(0) );
				XMLSetElementFromDoc( xmlDoc, "BillZipCode",  document.getElementsByName( "DealerZip"          )(0) );
				XMLSetElementFromDoc( xmlDoc, "BillCountry",  document.getElementsByName( "DealerCountry"      )(0) );
				XMLSetElementFromDoc( xmlDoc, "BillEMail",    document.getElementsByName( "DealerEmail"        )(0) );
				XMLSetElementFromDoc( xmlDoc, "BillPhone1",   document.getElementsByName( "DealerPhone"        )(0) );
				XMLSetElementFromDoc( xmlDoc, "BillFAX",      document.getElementsByName( "DealerFax"          )(0) );
				XMLSetElementFromDoc( xmlDoc, "BillContact",  document.getElementsByName( "DealerContactName"  )(0) );
			}
	}

// This is for getting Serial No. info for the Claim form
function EvSerialChanged()
	{
		if ( window.event.keyCode == 13 ) 
			{
				window.event.keyCode = 0;
				var strTheSerialNo = document.forms(0).ClaimSubject.value;
				var theURL = "/fsm/handle2.php?thepath=/sc/XMLhttpGetProductSerializedInfoPost.asp&SysId=LL&theserialno=" + strTheSerialNo;
				//var theURL = "/fsm/handle2.php?thepath=/sc/XMLhttpGraph1.asp&theserialno=" + strTheSerialNo;
				var http = new HTTPRequest();
				http.open( "GET", theURL, true );
				http.onreadystatechange= function(){ EvSerialChangedResponse( http )};
				http.send();
			}
	}

function EvSerialChangedResponse( http )
	{
		if ( http.readyState == 4 )
			{
				var xmlDoc;
				var xml = http.responseText;
				var strXMLParser = SysGetXMLClientVer(); 
	
				if ( !strXMLParser ) 
					{
					alert( "MS XML Parser not found" );
					return;
					}

				//xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
				xmlDoc = new ActiveXObject( strXMLParser ); 
				xmlDoc.async=false; 
				xmlDoc.loadXML( xml );
				//alert( xml );
				//document.write( xml );
				var theCustomerType = XMLGetIndexedValueFromDoc( xmlDoc, "CustomerType", 0 ) 
				//alert( theCustomerType );

				if ( theCustomerType == "DEALER" )
					{
						XMLSetElementFromDoc( xmlDoc, "XACustomerNo",   document.getElementsByName( "DealerXACustomerNo" )(0) );
						XMLSetElementFromDoc( xmlDoc, "CustomerName",   document.getElementsByName( "DealerName"         )(0) );
						XMLSetElementFromDoc( xmlDoc, "ShipAddress1",   document.getElementsByName( "DealerAddress1"     )(0) );
						XMLSetElementFromDoc( xmlDoc, "ShipCity",       document.getElementsByName( "DealerCity"         )(0) );
						XMLSetElementFromDoc( xmlDoc, "ShipState",      document.getElementsByName( "DealerState"        )(0) );
						XMLSetElementFromDoc( xmlDoc, "ShipZipCode",    document.getElementsByName( "DealerZip"          )(0) );
						XMLSetElementFromDoc( xmlDoc, "CustomerEMail",  document.getElementsByName( "DealerEmail"        )(0) );
						EvDealerNoChanged();
					}
				else
					{
						XMLSetElementFromDoc( xmlDoc, "CustomerName",   document.getElementsByName( "OwnerName"     )(0) );
						XMLSetElementFromDoc( xmlDoc, "ShipAddress1",   document.getElementsByName( "OwnerAddress1" )(0) );
						XMLSetElementFromDoc( xmlDoc, "ShipCity",       document.getElementsByName( "OwnerCity"     )(0) );
						XMLSetElementFromDoc( xmlDoc, "ShipState",      document.getElementsByName( "OwnerState"    )(0) );
						XMLSetElementFromDoc( xmlDoc, "ShipZipCode",    document.getElementsByName( "OwnerZip"      )(0) );
						XMLSetElementFromDoc( xmlDoc, "CustomerEMail",  document.getElementsByName( "OwnerEmail"    )(0) );
					}
			}
	}

// This is for getting Serial No. info for the Registration Request form
function EvSerialChanged2()
	{
		if ( window.event.keyCode == 13 ) 
			{
				window.event.keyCode = 0;
				var strTheSerialNo = document.forms(0).SerialNo.value;
				var theURL = "/fsm/handle2.php?thepath=/sc/XMLhttpGetProductSerializedInfoPost.asp&SysId=LL&theserialno=" + strTheSerialNo;
				var http = new HTTPRequest();
	
				http.open( "GET", theURL, true );
				http.onreadystatechange= function(){ EvSerialChangedResponse2( http )};
				http.send();
			}
	}

function EvSerialChangedResponse2( http )
	{
		if ( http.readyState == 4 )
			{
				var xmlDoc;
				var xml = http.responseText;
				var strXMLParser = SysGetXMLClientVer(); 
	
				if ( !strXMLParser ) 
					{
						alert( "MS XML Parser not found" );
						return;
					}
	
				//xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
				xmlDoc = new ActiveXObject( strXMLParser ); 
				xmlDoc.async=false; 
				xmlDoc.loadXML( xml );
				//alert( xml );
				//document.write( xml );
				XMLSetElementFromDoc( xmlDoc, "CustomerName",   document.getElementsByName( "OwnerName"     )(0) );
				XMLSetElementFromDoc( xmlDoc, "ShipAddress1",   document.getElementsByName( "OwnerAddress1" )(0) );
				XMLSetElementFromDoc( xmlDoc, "ShipCity",       document.getElementsByName( "OwnerCity"     )(0) );
				XMLSetElementFromDoc( xmlDoc, "ShipState",      document.getElementsByName( "OwnerState"    )(0) );
				XMLSetElementFromDoc( xmlDoc, "ShipZipCode",    document.getElementsByName( "OwnerZip"      )(0) );
				XMLSetElementFromDoc( xmlDoc, "CustomerEMail",  document.getElementsByName( "OwnerEmail"    )(0) );
				XMLSetElementFromDoc( xmlDoc, "ProductId",      document.getElementsByName( "ProductId"     )(0) );
			}
	}

//-----------------------------------
// Create xmlhttp request object
//-----------------------------------
HTTPRequest = function () 
	{
		var xmlhttp=false;
		
		try
			{
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			}
		catch (e)
			{
				try
					{
						xmlhtttp = new ActiveXObject("Microsoft.XMLHTTP");
					}
				catch (E)
					{
						xmlhttp = false;
					}
			}
		
		if (!xmlhttp && typeof XMLHttpRequest!='undefined')
			{
				xmlhttp = new XMLHttpRequest();
			}
		
		return xmlhttp;
	}

//------------------------------------------------------
// Set an Element in a form to a value in the XML doc
//------------------------------------------------------
function XMLSetElementFromDoc( xmlDoc, strTagName, objElement )
	{
		try
			{
				if ( xmlDoc.getElementsByTagName( strTagName )[0].firstChild )
					{
						objElement.value = xmlDoc.getElementsByTagName( strTagName )[0].firstChild.nodeValue;
					}
				else
					{
						objElement.value = "";
					}
			}
		catch( err )
			{
				objElement.value = "";
			}
	}

//------------------------------------------------------
// Set an Element in a form to a value in the XML doc
//------------------------------------------------------
function XMLSetElementNodeValueFromDoc( xmlDoc, strTagName, objElement )
	{
		try
			{
				if ( xmlDoc.getElementsByTagName( strTagName )[0].firstChild )
					{
						objElement.nodeValue = xmlDoc.getElementsByTagName( strTagName )[0].firstChild.nodeValue;
					}
				else
					{
						objElement.nodeValue = "";
					}
			}
		catch( err )
			{
				objElement.nodeValue = "";
			}
	}

//------------------------------------------------------
// Get a value from an XML document
//------------------------------------------------------
function XMLGetIndexedValueFromDoc( xmlDoc, strTagName, index )
	{
		var theResult = "";
	
		try
			{
				if ( xmlDoc.getElementsByTagName( strTagName )[index].firstChild )
					{
						theResult = xmlDoc.getElementsByTagName( strTagName )[index].firstChild.nodeValue;
					}
				else
					{
						theResult = "";
					}
			}
		catch( err )
			{
				theResult = "";
			}
	
		return theResult;
	}

function SysGetXMLClientVer()
	{
		// Create a new instance of the XMLClientVer object
		var oXMLClientVer = new XMLClientVer();

		if ( oXMLClientVer.bIsMSXML4 )
			{
				return 'Msxml2.DOMDocument.4.0';
			}
		else if ( oXMLClientVer.bIsMSXML3 )
			{
				return 'Msxml2.DOMDocument.3.0';
			}
		else if ( oXMLClientVer.bIsMSXML2 )
			{
				return 'Msxml2.DOMDocument';
			}
		else
			{
				return null;
			}
	}

function XMLClientVer()
	{
		//*********************
		// Public properties
		//*********************
		this.bIsMSXML4 = false;
		this.bIsMSXML3 = false;
		this.bIsMSXML2 = false;
	
		//**********************************
		// Private implementation details
		//**********************************
		var e = new Error();
		var oXML = null;
	
		// Try to load the most recent version of the MSXML parser;
		// if that fails, try to load the next most recent version, and so on.
		// Always test using the version *dependent* PROGID.
	
		try
			{
				// Test for MSXML 4.0
				oXML = new ActiveXObject("MSXML2.DOMDocument.4.0");
				oXML = null;
				this.bIsMSXML4 = true;
				return;
			}
		catch (e)
			{
				try
					{
						// Test for MSXML 3.0
						oXML = new ActiveXObject("MSXML2.DOMDocument.3.0");
						oXML = null;
						this.bIsMSXML3 = true;
						return;
					}
				catch (e)
					{
						try
							{
								// Test for MSXML 2.0
								oXML = new ActiveXObject("Microsoft.XMLDOM.1.0");
								oXML = null;
								this.bIsMSXML2 = true;
								return;
							}
						catch (e)
							{
								// Stub
							}
					}
			}
	}
