var log_external_window;

function write_log(debug, window_name, message_type, module_name, message){
	var full_message = "";
	if (		(debug == "true")
			||	(		message_type !== undefined
					&&	message_type == "error")){
		open_log();
		if (5 <= arguments.length) full_message = "message: " + message;
		if (4 <= arguments.length) full_message = "module_name: " + module_name + "; " + full_message;
		if (3 <= arguments.length) full_message = "message_type: " + message_type + "; " + full_message;
		if (2 <= arguments.length) full_message = "window_name: " + window_name + "; " + full_message;
		full_message = full_message.replace(/</g, "[").replace(/>/g, "]");
		full_message = "<br />" + arguments[0] + "; " + full_message;
		if (5 < arguments.length){
			for (var i = 5; i < arguments.length; i++){
				full_message = full_message + "<br />&nbsp;&nbsp;&nbsp;&nbsp;" + arguments[i];
			}
		}
		log_external_window.document.write("<br />" + full_message);
	}
	return;
}

function write_info(debug, message){
	if (debug == "true"){
		open_log();
		log_external_window.document.write("<br />" + message);
	}
	return;
}

function open_log(){
	if (		log_external_window === undefined
			||	log_external_window.closed){
		var parameters;
		parameters =
			"directories	= no"	+ ", " +
			"height			= "	+ screen.availHeight/2 + ", " +
			"left			= 0"	+ ", " +
			"location		= no"	+ ", " +
			"menubar		= no"	+ ", " +
			"resizable		= yes"	+ ", " +
			"scrollbars		= yes"	+ ", " +
			"status			= no"	+ ", " +
			"titlebar		= no"	+ ", " +
			"toolbar		= no"	+ ", " +
			"top			= 0"	+ ", " +
			"width			= "	+ screen.availWidth/2;
		log_external_window = window.open("", "", parameters, "true");
		if (log_external_window === undefined){
			alert("Not possible to open an external window");
			alert("message: " + message);
			return;
		}
	}
}

function catch_error(error, module_name){
	write_log("true",
		"NA",
		"error",
		module_name,
		"unexpected error",
		"error.description: " + error.description);
	return undefined;
}

function error_handler(message, url, line_number){
	message =
		"Error on page: " + url + "\n" +
		"message: " + message + "\n" +
		"line_number: " + line_number;
	alert(message);
	return false;
}	