
function Ajax()
{
	var methodName;
	var methodArgs;
	var returnMethodName;
	var path = "Ajax.asp";
	var binaryMode = false;
	var ajaxFrame;
	var ajaxForm
	var debug = false;
	var fileBrowserName = 'FILE1';
	
	this.setMethodName = setMethodName;
	this.setDebug = setDebug;
	this.setMethodArgs = setMethodArgs;
	this.setReturnMethodName = setReturnMethodName;
	this.setPath = setPath;
	this.setBinaryMode = setBinaryMode;
	this.setFileBrowserName = setFileBrowserName;
	this.execute = execute;
	
	function setDebug(debugArg)
	{
		debug = debugArg;
	}

	function setFileBrowserName(fileBrowserNameArg)
	{
		fileBrowserName = fileBrowserNameArg;
	}

	function setBinaryMode(binaryModeArg)
	{
		binaryMode = binaryModeArg;
	}

	function setPath(pathArg)
	{
		path = pathArg;
	}
	
	function setMethodName(methodNameArg)
	{
		methodName = methodNameArg;
	}
	
	function setMethodArgs(methodArg)
	{
		//Replace commas in method arguments
		if(typeof(methodArg)=="string")
		{
			methodArg = methodArg.replace(',','&comma;');
			methodArg = methodArg.replace("'",'&apos;');
		}
		else
		{
			for (var i=0;i<methodArg.length;i++)
			{
				do
				{
					methodArg[i] = methodArg[i].replace(',','&comma;');
					methodArg[i] = methodArg[i].replace("'",'&apos;');
				}
				while (methodArg[i].indexOf(',')>0);
			}			
		}
		methodArgs = methodArg;
	}
	
	function setReturnMethodName(returnMethodNameArg)
	{
		returnMethodName = returnMethodNameArg;
	}
	
	 //Fire the remote procedure
	function execute()
	{
		if (navigator.appName == "Netscape")
		{
			ajaxFrame = document.createElement('iframe');
			ajaxFrame.setAttribute('name','ajaxFrame');
			ajaxFrame.setAttribute('id','ajaxFrame');
		}
		else //Internet Explorer  
		{
			ajaxFrame = document.createElement('<iframe name=ajaxFrame id=ajaxFrame>');
		}
		
		ajaxFrame.style.position='absolute';
		ajaxFrame.style.left=0;
		ajaxFrame.style.top=0;

		if (debug)
		{
			ajaxFrame.style.width=500;
			ajaxFrame.style.height=400;
		}
		else
		{
			ajaxFrame.style.width=0;
			ajaxFrame.style.height=0;
		}

		document.body.appendChild(ajaxFrame);
		if (navigator.appName == "Netscape")
		{
			ajaxForm = document.createElement('form');
			ajaxForm.setAttribute('name','ajaxForm');
		}
		else
		{
			if (binaryMode)
			{
				ajaxForm = document.createElement('<form name="ajaxForm" id="ajaxForm" ENCTYPE="multipart/form-data" action="UploadSave.asp">');
			}
			else
			{
				ajaxForm = document.createElement('<form name="ajaxForm" id="ajaxForm">');
			}
		}
		

		formAppend();
		ajaxForm.submit();

		ajaxForm.target = "";
		ajaxForm.action = ""
	}
	
		
	//Append the Form and Fields to the parent document
	function formAppend()
	{
		ajaxForm.target = "ajaxFrame";
		ajaxForm.action = path;
		ajaxForm.id = "ajaxForm";	
		ajaxForm.method = "Post";

		if (binaryMode)
		{
			ajaxForm.action = 'UploadSave.asp';
			ajaxForm.enctype = 'multipart/form-data';
			if (navigator.appName == "Netscape")
			{
				ajaxForm.appendChild(document.getElementById(fileBrowserName)); //.cloneNode(true));
			}
			else
			{
				ajaxForm.appendChild(document.getElementById(fileBrowserName));
			}
		}
		else
		{
			ajaxForm.innerHTML = "<Input type='hidden' name='ajaxTest' id='ajaxTest' value='test'>";
			ajaxForm.innerHTML += "<Input type='hidden' name='returnMethodName' id='returnMethodName' value='" + returnMethodName + "'>";
			ajaxForm.innerHTML += "<Input type='hidden' name='methodName' id='methodName' value='" + methodName + "'>";
			ajaxForm.innerHTML += "<Input type='hidden' name='methodArgs' id='methodArgs' value='" + methodArgs + "'>";
		}
		document.body.appendChild(ajaxForm);
	}
}			
