// AJAX

function ajax(method, url, parameters, loader, receiver){
	if(window.XMLHttpRequest){
		xhr = new XMLHttpRequest();	
	} else {
		if(window.ActiveXObject){
			try {
				xhr = new ActiveXObject('Microsoft.XMLHTTP');
			} catch(e){
			};
		}
	}
	
	if(xhr){
		xhr.open(method, url, true);
		xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		xhr.setRequestHeader('Content-length', parameters.length);
		xhr.setRequestHeader('Connection', 'close');
		
		xhr.onreadystatechange = function(){
			if(xhr.readyState == 4 && xhr.status == 200){
				var html = xhr.responseText;
				var output = html.replace('undefined', '');
			}
			
			/* display output */
			$(loader).className = $(loader).className.replace(' display', ' hide');
			$(receiver).className = $(receiver).className.replace('hide', 'display');
			$(receiver).innerHTML = output;
		}
		
		xhr.send(parameters);
		$(receiver).innerHTML += parameters;
		
		/* preload */
		$(loader).className = $(loader).className.replace(' hide', ' display');
		$(receiver).className = $(receiver).className.replace('display', 'hide');
		
		window.location = '#';
	}
	
	return false;
}

function submit_form(form_name, method, action, loader, receiver, timer){
	for(i=0; i<document[form_name].elements.length; i++){
		var el_name = document[form_name].elements[i].name;
		var el_value = document[form_name].elements[i].value;
		var params;
		
		params += (i > 0 ? '&' : '') + el_name + '=' + el_value;
	}
	
	params = encodeURI(params.replace('undefined', ''));

	if(timer == true){
		var seconds = 2;
		var send = function(){ ajax(method, action, params, loader, receiver); };
		
		/* preload */
		$(loader).className = $(loader).className.replace(' hide', ' display');
		$(receiver).className = $(receiver).className.replace('display', 'hide');
		
		setTimeout(send, seconds*1000);
	} else {
		ajax(method, action, params, loader, receiver);
	}
}

// Miscellaneous

function $(id){
	var element = document.getElementById(id);
	return element;
}

function toggle_content(toggle_mode, element){
	$(element).className = toggle_mode;
	return false;
}

function toggle_form(toggle_mode, element, form_name){
	document[form_name].reset();
	
	for(i=0; i<document[form_name].elements.length; i++){
		var field = document[form_name].elements[i];
		field.readonly = true;
	}
	
	if(toggle_mode == 'display'){
		$('receiver').className = 'hide';
		$('receiver').innerHTML = '';
	}
	
	toggle_content(toggle_mode, element);
	
	return false;
}

function assign_checkbox(checkbox){
	if(checkbox.checked == true){
		checkbox.value = 'Yes';	
	} else {
		checkbox.value = 'No';
	}
}
