var clicking = false;
var show_loading = false;
var http_request = false;
var callback_function = false;

function makeRequest(url, form_fields) {
	
	//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(show_loading != false){
    	toggle_loading('on');
    }

    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 makeRequest_noAbort(url){
	var na_http_request;
	if (window.XMLHttpRequest) {
        na_http_request = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        try {
            na_http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                na_http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!na_http_request) {
        return false;
    }
    
       
    na_http_request.open('GET', url, true);
    na_http_request.send(null);
}
       
function update_page(http_request) {
	try{
		if (http_request.readyState == 4) {
	        if (http_request.status == 200) {
				if(!callback_function){
					autoparse_response(http_request.responseText);
				}else{
					callback_function(http_request.responseText);
				}
	        } else {
	                
	        }
	        
	        if(show_loading){
	    		toggle_loading('off');
	    		//show_loading = false;
	    	}
	    	
	    	recalc();
	    	document.recalc();
	    }
	}catch(error){
		//caught error from canceling ajax request
	}
}

function autoparse_response(response){
	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);
		}
	}
}

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 + "=" + encodeURIComponent(form.elements[i].value);
		}
	}
	
	post_fields += "&" + submit_name + "=" + submit_value;
	
	return post_fields;
}

function hide(id){
	if(!clicking){
		document.getElementById(id).style.display = "none";
	}
}

function update_div(id, html){
	document.getElementById(id).innerHTML = html;
	document.getElementById(id).style.display = "block";
	document.getElementById(id).style.overflow = "auto";
}

function toggle_loading(new_status){
	load_element = document.getElementById('cover' + show_loading);
	
	if(load_element){
		if(new_status == 'on'){
			load_element.style.display = 'block';
		}else{
			load_element.style.display = 'none';
		}
	}
}

function toggle_lightbox(lightbox_id, div_id, hide){
	if(document.getElementById(lightbox_id).style.display != 'block' && !hide){
		document.getElementById(lightbox_id).style.display = "block";
		document.getElementById(div_id).style.display = "block";
	}else{
		document.getElementById(lightbox_id).style.display = "none";
		document.getElementById(div_id).style.display = "none";
	}
}

function trim(string){
	return string.replace(/^\s+|\s+$/g,"");
}