var show_loading = false;
var http_request = false;

function makeRequest(url, form_fields) {
	if(show_loading == true){
    	toggle_loading('on');
    } else {
    	toggle_loading('off');
    }
    
	//make sure there isn't another ajax request that hasn't finished yet
	if(http_request) { 
		if (http_request.readyState != 4) {
			try{
				http_request.abort();
			}catch(error){
				http_request.onreadystatechange = function() { };
			}
		}
	}
	
    http_request = false;
    
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            //http_request.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (http_request) {
	    http_request.onreadystatechange = function() { update_page(http_request); };
	
	    if(form_fields == null) {
	    	http_request.open('GET', url, true);
	    	http_request.send(null);
	    } else {
	    	http_request.open('POST', url, true);
	    	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    	http_request.setRequestHeader("Content-length", form_fields.length);
	    	http_request.setRequestHeader("Connection", "close");
	    	http_request.send(form_fields);
	    }
	} else { 
		return false;
	}
}

function form_submit(form, submit_name, submit_value) {
	var post_fields = '';
	
	for(i = 0; i < form.elements.length; i++){
		if(i > 0){
			post_fields += "&";
		}
		
		if (form.elements[i].type == 'checkbox' && form.elements[i].checked) { 
			post_fields += form.elements[i].name + "=" + encodeURI(form.elements[i].value);
		} 
		
		if (form.elements[i].type == 'radio' && form.elements[i].checked) {
			post_fields += form.elements[i].name + "=" + encodeURI(form.elements[i].value);
		} 
		
		if ((form.elements[i].type != 'submit') && 
			(form.elements[i].type != 'radio') && 
			(form.elements[i].type != 'checkbox') && 
			(form.elements[i].type != 'select')) {
				post_fields += form.elements[i].name + "=" + encodeURI(form.elements[i].value);
		}
	}
	
	post_fields += "&" + submit_name + "=" + submit_value;	
	return post_fields;
}

function toggle_loading(new_status) {
	load_element = document.getElementById('sending');
	
	if(load_element){
		if(new_status == 'on'){
			load_element.style.display = 'block';
		}else{
			load_element.style.display = 'none';
		}
		
		if (document.getElementById("message-display")){
			message = document.getElementById("message-display");
			message.innerHTML = "Sending..."; 
		}
	}
}

function update_div(id, html){
	document.getElementById(id).innerHTML = html;
	document.getElementById(id).style.display = "block";
	document.getElementById(id).style.overflow = "auto";
}

function trim(string) {
	return string.replace(/^\s+|\s+$/g,"");
}