function ajax (url, tagid, preresponsehtml)
{ 
	document.getElementById(tagid).innerHTML= preresponsehtml;
 
        var httpRequest;

        if (window.XMLHttpRequest) { 
		// Mozilla, Safari, ...
		httpRequest = new XMLHttpRequest();
		if (httpRequest.overrideMimeType) {
			httpRequest.overrideMimeType('text/xml');
		}
        } else if (window.ActiveXObject) { 
		// Ineternet Explorer
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
                
		catch (e) {
			try {
                                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} 
                             
			catch (e) {}
			}
		}

        if (!httpRequest) {
            alert('Giving up :( Cannot create an XMLHTTP instance - how old is your browser !?');
            return false;
        }
 
        httpRequest.open("POST", url, true);
        httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 

        httpRequest.onreadystatechange = function()
	{
                if (httpRequest.readyState == 4 && httpRequest.status == 200)
		{
                        if (httpRequest.responseText)
                                document.getElementById(tagid).innerHTML =httpRequest.responseText;
		}
        }
        
	httpRequest.send('');
}


function formToURL(formid) {

	var fobj = document.getElementById(formid);
	var str = ""; 
	var ft = ""; 
	var fv = ""; 
	var fn = ""; 
	var els = ""; 
	
	for (var i = 0;i < fobj.elements.length;i++) { 
		
		els = fobj.elements[i]; 
		ft = els.title; 
		fv = els.value; 
		fn = els.name; 
		
		switch(els.type) { 
			case "text": 
			case "hidden": 
			case "password": 
			case "textarea": 
				// is it a required field? 
				if (encodeURI(ft) == "required" && encodeURI(fv).length < 1) { 
					alert(fn+" is a required field, please complete.");  
					els.focus();  
					return false;  
				}  
			
				str += fn + "=" + encodeURI(fv) + "&";  
			break;   

			case "checkbox":  
			case "radio":  
				if (els.checked) 
					str += fn + "=" + encodeURI(fv) + "&";  
			break;      

			case "select-one":  
				str += fn + "=" +  
				els.options[els.selectedIndex].value + "&";  
			break;  
		}   
	} 
	
	str = str.substr(0,(str.length - 1));  
	return str;  
}  

function addParamsToURL(url, formid) {

	var params = formToURL(formid);
	
	// append params to url, just check if we need a ? or a & (or neither)
	if (url.indexOf('?') == -1) {
		// no ? - there can't be any paramaters, so put one in
		url += "?";
	} else {
		// There is a ?
		// What is the last character?  If it is not & or ? then append a &
		if (url[url.length -1] != "&" ||  url[url.length -1] != "?") {
			url += "&";
		}
	}
	
	url += params;
	
	return url;
}

function requestWithForm(url, formid, outputid, preresponse) { 
	var newurl = addParamsToURL(url, formid);
	ajax(newurl, outputid, preresponse);
}
