var clicking = false;
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
	try{
		if(http_request != false && http_request.readyState != 4){
			try{
				http_request.abort();
			}catch(error){
				http_request.onreadystatechange = function() { };
			}
		}
	}catch(e){
	
	}
	
    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) {
        return false;
    }
    
    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);
    }
}
       
function update_page(http_request) 
{	
	try{
		if (http_request.readyState == 4) {
	        if (http_request.status == 200) {
				var response = http_request.responseText;
				var divs = response.split('*ajax_new_div*');
				
				for(var i = 1; i < divs.length; i++){
					var div_info = divs[i].split('*ajax_div_id*');
					var div_id = trim(div_info[0]);
					var div_data = div_info[1];
					
					if(div_id == 'update_error'){
						
					}else{		
						update_div(div_id, div_data);
					}
				}   
	        }
	        
	    	recalc();
	    	document.recalc();
	    }
	}catch(error){
		//caught error from canceling ajax request
	}
}

function form_submit(form, submit_name, submit_value){
	post_fields = '';
	
	for(i = 0; i < form.elements.length; i++){
		if(i > 0){
			post_fields += "&";
		}
		
		if((form.elements[i].type != 'checkbox' || (form.elements[i].type == 'checkbox' && form.elements[i].checked)) && form.elements[i].type != 'submit'){
			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;
	
	if(document.getElementById(id).tagName != "TR"){
		document.getElementById(id).style.display = "block";
		document.getElementById(id).style.overflow = "auto";
	}
}

function trim(string){
	return string.replace(/^\s+|\s+$/g,"");
}