function hideError() {
}

function reportError(err) {
	alert(err);
}

var lastStartOffset = 0;

function sendQuery(startOffset) {
	var selectedModule = $("selectedModule").value;
	return sendQueryEx(startOffset, selectedModule);
}

function sendQueryEx(startOffset, selectedModule) {
	var name = $("rmiNameFilter").value.replace(/-/, '_'),
		province = $("rmiProvinceFilter").value,
		address = $("rmiCityFilter").value;

	if(startOffset == undefined) {
		startOffset = 0;
	}

	lastStartOffset = startOffset;

	hideError();
	if(name.length != 0 && name.length < 2) {
		reportError("Nazwisko powinno zawierać więcej niż 1 znak.");
		$("rmiNameFilter").focus();
		return;
	}
/*
	if(address.length != 0 && address.length < 3) {
		reportError("Numer licencji powinien zawierać więcej niż 3 znaki.");
		$("rmiCityFilter").focus();
		return;
	}
*/
	var sort = 'lic', idx = $("rmiSortFilter").selectedIndex;
	if(idx == 0) sort = 'lic';
	else if(idx == 1) sort = 'datawp';
	else if(idx == 2) sort = 'naz';
	else if(idx == 3) sort = 'adres';
	else if(idx == 4) sort = 'woj';

	var cont = false;

	if($("rmiProvinceFilter").selectedIndex == 0) {
		if(name.length > 0 || address.length > 0)
			cont = true;
	} else
		cont = true;

	if(!cont) {
		$("rmiNameFilter").focus();
		return;
	}

	/*
	if($("rmiProvinceFilter").selectedIndex == 0 && name.length == 0) {
		$("rmiNameFilter").focus();
		return;
	}*/

	var maxHits = 50;

	document.body.style.cursor = "wait";

	// nieruchomosci_svc
	ds2_invoke("rejestrmi", selectedModule, [ name, province, address, sort, maxHits, startOffset ], queryCb);
}

function provinceFilter(text) {
	if(text == "zachodnio-pomorskie")
		return "zachodniopomorskie";
	else
		return text;
}

function queryCb(req) {
	var selectedModule = $("selectedModule").value;
	if(req.responseText.length > 0) {
		var lines = req.responseText.split("\n"),
			results = $("rmiResults");

		var html;
		html = "<table id='rmiResultTable' cellspacing='0' width='100%'><tr>";
		if(selectedModule == "rzeczoznawcy_svc")
			html += "<td id='rmiHeader'>Numer uprawnień</td>";
		else
			html += "<td id='rmiHeader'>Nr lic.</td>";
		html += "<td id='rmiHeader'>Data wpisu</td>";
		html += "<td id='rmiHeader'>Imię</td>";
		html += "<td id='rmiHeader'>Nazwisko</td>";
		html += "<td id='rmiHeader'>Imiona rodziców</td>";
		html += "<td id='rmiHeader'>Kod poczt.</td>";
		html += "<td id='rmiHeader'>Adres zamieszkania</td>";
		html += "<td id='rmiHeader'>Województwo</td>";
		html += "<td id='rmiHeader'>*</td>";
		//html += "<td id='rmiHeader'>*</td>";
		html += "</tr>";
		for(var i = 0, len = lines.length; i < len; i++) {
			if(lines[i] && lines[i].length > 0) {
				var fields = lines[i].split("\t");

				var licNumber = fields[0], insertDate = fields[1], firstName = fields[2], 
					lastName = fields[3], parentsName = fields[4], postalCode = fields[5], 
					address = fields[6], province = fields[7], wyksz = fields[8];

				if(licNumber == "maxhits_requested") {
					maxHitsRequested = parseInt(insertDate);
					continue;
				} else if(licNumber == "maxhits") {
					maxHits = parseInt(insertDate);
					continue;
				}

				insertDate = insertDate.split(" ")[0];
				html += "<tr>";
				html += "<td id='rmiContent'>" + licNumber + "</td>";
				html += "<td id='rmiContent'>" + insertDate + "</td>";
				html += "<td id='rmiContent'>" + firstName + "</td>";
				html += "<td id='rmiContent'>" + lastName + "</td>";
				html += "<td id='rmiContent'>" + parentsName + "</td>";
				html += "<td id='rmiContent'>" + postalCode + "</td>";
				html += "<td id='rmiContent'>" + address + "</td>";
				html += "<td id='rmiContent'>" + provinceFilter(province) + "</td>";
				html += "<td id='rmiContent'>" + wyksz + "</td>";
				//html += "<td id='rmiContent'>?</td>";
				html += "</tr>";
			} else break;
		}

		results.innerHTML = html + "</table>" + "<br>* Wykształcenie: w - wyższe, ¶ - ¶rednie<br>";
	} else {
		$("rmiResults").innerHTML = "Brak wyników.";
	}

	createPagination(maxHitsRequested, maxHits);

	document.body.style.cursor = "auto";
}

function createPagination(hitsReq, hits) {
	var objs = document.getElementsByTagName("DIV");
	for(var i = 0, len = objs.length; i < len; i++) {
		try {
			if(objs[i].id.split("_")[0] == "rmiPagination") {
				applyPaginationToDiv(objs[i], hitsReq, hits);
			}
		} catch(e) {
			
		}
	}
}

function applyPaginationToDiv(obj, hitsReq, hits) {
	var pageCount = Math.ceil(hits / hitsReq);

	obj.innerHTML = '';

	if(hits <= hitsReq) {
		return;
	} 
	
	var html = '';

	var currentPage = lastStartOffset / hitsReq;
	var pagStart = currentPage;
	var pageCountLimit = pagStart + 10;
	if(pageCountLimit > pageCount)
		pageCountLimit = pageCount;

	pagStart -= 10;
	if(pagStart < 0)
		pagStart = 0;
	
	html += " <a class='rmiPaginationActive' href='javascript:sendQuery(0)'>pierwsza</a> ";

	for(var i = pagStart, len = pageCountLimit; i < len; i++)
		html += genLink(i, hitsReq) + " ";

	html += " <a class='rmiPaginationActive' href='javascript:sendQuery(" + ((pageCount - 1) * hitsReq) + ")'>ostatnia</a>";
	obj.innerHTML = html;
}

function genLink(i, hitsReq) {
	if((i * hitsReq) == lastStartOffset)
		return "<span class='rmiPaginationInactive'>" + i + "</span>";
	else 
		return "<a class='rmiPaginationActive' href='javascript:sendQuery(" + (i * hitsReq) + ")'>" + i + "</a>";
}

function rejestrMain() {
	var module = "lastmod";
	ds2_invoke("rejestrmi", module, [ "a1" ], mainQueryCb);
}

function mainQueryCb(req) {
	var selectedModule = $("selectedModule").value;
	var lines = req.responseText.split("\n");
	for(var i = 0, len = lines.length; i < len; i++) {
		var fields = lines[i].split("\t");
		if(selectedModule == "rzeczoznawcy_svc" && fields[0] == "crrm") {
			updateLastmod(fields[1]);
		} else if(selectedModule == "posrednicy_svc" && fields[0] == "crpon") {
			updateLastmod(fields[1]);
		} else if(selectedModule == "nieruchomosci_svc" && fields[0] == "crzn") {
			updateLastmod(fields[1]);
		}

		if(fields[0] == "crrm")
			if($("crrm_data")) $("crrm_data").value = fields[1];
		if(fields[0] == "crpon")
			if($("crpon_data")) $("crpon_data").value = fields[1];
		if(fields[0] == "crzn")
			if($("crzn_data")) $("crzn_data").value = fields[1];
		if(fields[0] == "sce")
			if($("sce_data")) $("sce_data").value = fields[1];
		if(fields[0] == "zpk")
			if($("zpk_data")) $("zpk_data").value = fields[1];
		if(fields[0] == "zpknext")
			if($("zpknext_data")) $("zpknext_data").value = fields[1];
	}
}

function updateLastmod(d) {
	if($("rmiLastmod"))
		$("rmiLastmod").innerHTML = d;
}

function rejestrUpdateMain() {
	rejestrMain();
}

function checkSyntax(str) {
	return str.match(/^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$/);
}

function updateRegistry() {
	var flag = true;

	if(!checkSyntax($("crrm_data").value)) flag = false;
	if(!checkSyntax($("crpon_data").value)) flag = false;
	if(!checkSyntax($("crzn_data").value)) flag = false;
	if(!checkSyntax($("sce_data").value)) flag = false;
	if(!checkSyntax($("zpk_data").value)) flag = false;
	if(!checkSyntax($("zpknext_data").value)) flag = false;

	if(!flag) {
		alert("Wpisz poprawna date.");
		return;
	}

	$("toslaw").disabled = true;
	ds2_invoke("rejestrmi", "setlastmod", [ 
		$("crrm_data").value.replace(/-/, '_').replace(/-/, '_'), 
		$("crpon_data").value.replace(/-/,'_').replace(/-/, '_'), 
		$("crzn_data").value.replace(/-/,'_').replace(/-/, '_'),
		$("sce_data").value.replace(/-/,'_').replace(/-/, '_'),
		$("zpk_data").value.replace(/-/,'_').replace(/-/, '_'),
		$("zpknext_data").value.replace(/-/,'_').replace(/-/, '_')
		], updateRegistryCb);

		
}

function updateRegistryCb(req) {
	if(req.responseText == "OK") {
		alert("Zapisano zmiany.");
		window.location.reload();
	}
}

addEvent("load", rejestrMain);

