// url na ktorej ziskame data
var user_url_request = "request/user.request.php";

// xmlHTTP objekct
var user_xml_http = createXmlHttpRequestObject();

// objekty
var user_update_interval = 2 * 60 * 1000;
var user_update_set = false;
var user_cache = new Array();

// inicializacna funcia pre user ajax
function user_init()
{
	user_checkstatus();
}

/*
 * CYKLICKA FUNCIA
 */
function user_checkstatus()
{
	// osetrenie proti nefunkcnemu pripojeniu
	if(! selftest_status())
	{
		user_cache = new Array();
		return;
	}

	var params = 'action=checkstatus';
	user_cache.push(params);
	setTimeout('user_checkstatus();', user_update_interval);
	user_request();
}

function user_logtosys()
{
	// osetrenie proti nefunkcnemu pripojeniu
	if(! selftest_status())
	{
		user_cache = new Array();
		return;
	}

	var username = document.getElementById('t_logtosys_username');
	var password = document.getElementById('t_logtosys_password');

	if(username && password)
	{

		username.setAttribute('disabled','true');
		password.setAttribute('disabled','true');
		document.getElementById('t_logtosys_console').innerHTML = 'overujem...';
		document.getElementById('t_logtosys_console').className = 'alert2';
		var params = "action=logtosys&username=" + username.value + "&password=" + password.value;
		user_cache.push(params);
		user_request();
	}
}

function user_passwd()
{
	// osetrenie proti nefunkcnemu pripojeniu
	if(! selftest_status())
	{
		user_cache = new Array();
		return;
	}

	var params = "action=passwd";
	user_cache.push(params);
	user_request();
}

function user_passchange()
{
	// osetrenie proti nefunkcnemu pripojeniu
	if(! selftest_status())
	{
		user_cache = new Array();
		return;
	}

	var passold  = document.getElementById('t_logtosys_passold');
	var passnew  = document.getElementById('t_logtosys_passnew');
	var passnew2 = document.getElementById('t_logtosys_passnew2');

	if(passold && passnew && passnew2)
	{

		passold.setAttribute('disabled','true');
		passnew.setAttribute('disabled','true');
		passnew2.setAttribute('disabled','true');
		document.getElementById('t_logtosys_console').innerHTML = 'overujem...';
		document.getElementById('t_logtosys_console').className = 'alert2';
		var params = "action=passchange&old=" + passold.value + "&new=" + passnew.value + "&new2=" + passnew2.value;
		user_cache.push(params);
		user_request();
	}
}

function user_menu()
{
	// osetrenie proti nefunkcnemu pripojeniu
	if(! selftest_status())
	{
		user_cache = new Array();
		return;
	}

	var params = "action=usermenu";
	user_cache.push(params);
	user_request();
}

function user_logout()
{
	// osetrenie proti nefunkcnemu pripojeniu
	if(! selftest_status())
	{
		user_cache = new Array();
		return;
	}

	var params = "action=logout";
	user_cache.push(params);
	user_request();
}

function user_setautologout()
{
	// osetrenie proti nefunkcnemu pripojeniu
	if(! selftest_status())
	{
		user_cache = new Array();
		return;
	}

	var params = "action=setautologout";
	user_cache.push(params);
	user_request();
}
function user_setlogout()
{
	// osetrenie proti nefunkcnemu pripojeniu
	if(! selftest_status())
	{
		user_cache = new Array();
		return;
	}

	var params = "action=setlogout";
	user_cache.push(params);
	user_request();
}

function user_request()
{
	// osetrenie proti nefunkcnemu pripojeniu
	if(! selftest_status())
	{
		user_cache = new Array();
		return;
	}

	if(user_xml_http)
	{
		try
		{
			if(user_xml_http.readyState == 4 || user_xml_http.readyState == 0)
			{
				var params = "";

				if(user_cache.length > 0) params = user_cache.shift();
				else return;

				user_xml_http.open("POST", user_url_request, true);
				user_xml_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				user_xml_http.onreadystatechange = user_handle_response;

				user_xml_http.send(params);
			}
			else
			{
				setTimeout("user_request();", user_update_interval);
			}
		}
		catch(e)
		{
			report_errror(e.toString(), true);
		}
	}
}



function user_handle_response(){
	if(user_xml_http.readyState == 4){
		if(user_xml_http.status == 200){
			try{
				user_read_response();
			}
			catch(e)
			{
				if(e.length == 0)
					selftest_start(user_url_request);
				else{
					report_error(e.toString(), true);
				}
			}
		}
		else{
			selftest_start(user_url_request);
		}
	}
}

function user_read_response()
{
	// precitanie odpovede a zistenie ci obsahuje chybove hlasky
	var response = user_xml_http.responseText;
	if( response.indexOf("shgmysqlerror") >= 0)
	{
		throw(response);
	}
	if( response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0)
	{
		if(response.length == 0)
			selftest_start(user_url_request);
		else
			throw(response);

		return;
	}

	response = user_xml_http.responseXML.documentElement;

	// precitanie chyby
	var error_messages = response.getElementsByTagName('error');
	if(error_messages && error_messages.length)
	{
		report_error(error_messages.item(0).firstChild.data, true);
		return;
	}

	// nacitanie informacii i pouzivanej sablone
	var template = response.getElementsByTagName('use_template');
	var location = response.getElementsByTagName('location');
	var data     = response.getElementsByTagName('data');
	if(template.length && location.length && data.length)
	{
		location = location.item(0).firstChild ? location.item(0).firstChild.data : false;
		template = template.item(0).firstChild ? template.item(0).firstChild.data : false;
		data = data.item(0);

		if(location && template && data)
		{
			template_todo_add(location, template, data);
		}
	}
}