var path_request_xmlhttp;


function alkurutiinit() {
	//fontdiv();
	//resize_elemheight();
	piilota_esimerkit_nappi();
	merkkipaletti_linkki();
}


function piilota_esimerkit() {
	var spans = document.getElementsByTagName("span");
	for (var i = 0; i < spans.length; i++) {
		if (spans[i].className == "exampleblock") {
			spans[i].style.display = 'none';
			spans[i].innerHTML = "&nbsp;";
		}
	}
	var div = document.getElementById("piilota_esimerkit");
	if (div) {
		div.innerHTML = '<div class="float_right"><a href="" onclick="location.reload(true);return false;">&#187; N&auml;yt&auml; esimerkit</a></div>';
	}
}
function piilota_esimerkit_nayta() {
	var spans = document.getElementsByTagName("span");
	for (var i = 0; i < spans.length; i++) {
		if (spans[i].className == "exampleblock") {
			spans[i].style.display = '';
		}
	}
	piilota_esimerkit_nappi();
}
function piilota_esimerkit_nappi() {
	var div = document.getElementById("piilota_esimerkit");
	if (div) {
		div.innerHTML = '<div class="float_right"><a href="#" onclick="piilota_esimerkit();return false;">&#187; Piilota esimerkit</a></div>';
	}
}

function fontdiv() {
	var div = document.getElementById('fontdiv');
	if (div) {
		var inner = '<select id="mySelect" \
title="Fontin testaus (jos fonttia ei ole, korvautuu se Courierilla)" \
onchange="fontchange(this.value)"> \
<option value="Charis SIL" selected="selected">Charis SIL</option> \
<option value="Arial Unicode MS">Arial Unicode MS</option> \
<option value="Everson Mono Unicode">Everson Mono Unicode</option> \
<option value="Lucida Sans Unicode">Lucida Sans Unicode</option> \
<option value="Gentium">Gentium</option> \
<option value="ALPHABETUM Unicode">ALPHABETUM Unicode</option> \
<option value="Chrysanthi Unicode">Chrysanthi Unicode</option> \
<option value="TITUS Cyberbit Basic">TITUS Cyberbit Basic</option> \
<option value="DejaVu Sans">DejaVu Sans</option> \
<option value="DejaVu Serif">DejaVu Serif</option> \
<option value="Verdana">Verdana</option> \
<option value="Arial">Arial</option> \
<option value="Georgia">Georgia</option> \
<option value="Trebuchet MS">Trebuchet MS</option> \
<option value="Tahoma">Tahoma</option> \
<option value="Comic Sans MS">Comic Sans MS</option> \
<option value="Courier">Courier</option> \
<option value="serif">serif</option> \
<option value="sans-serif">sans-serif</option> \
<option value="monospace">monospace</option> \
</select>';
		//var form = document.createElement('form');
		//var select = document.createElement('select');
		//div.appendChild(select);
		//var txt = document.createTextNode("Hello.");
		//form.appendChild(txt);
		div.innerHTML = inner;
	}
}

function fontchange(font) {
	var div = document.getElementById("mainpage");
	div.style.fontFamily = "'" + font + "', Courier, monospace";
}

function resize_elemheight() {
	var elem = document.getElementById("kirjanselka");
	if (elem) {
		// elementin padding, border ja margin tähän
		var offset_top = 32;
		//if (document.defaultView && document.defaultView.getComputedStyle) {
		//	offset_top = document.defaultView.getComputedStyle(elem, "").getPropertyValue("offset_top-top");
		//}
		//else if (elem.currentStyle) {
		//	offset_top = elem.currentStyle["offset_topTop"];
		//}
		var sizes = getPageSizes();
		//var winHeight = findPageHeight() - offset_top;
		var winHeight = sizes[1] - offset_top;
		elem.style.height = winHeight + "px";
	}
}

function findPageHeight() {
	var winWidth, winHeight, d=document;
	if (typeof window.innerWidth != 'undefined') {
		winWidth = window.innerWidth;
		winHeight = window.innerHeight;
	}
	else if (d.documentElement
		&& typeof d.documentElement.clientWidth != 'undefined'
		&& d.documentElement.clientWidth != 0) {
		winWidth = d.documentElement.clientWidth;
		winHeight = d.documentElement.clientHeight;
	}
	else if (d.body && typeof d.body.clientWidth !=' undefined') {
		winWidth = d.body.clientWidth;
		winHeight = d.body.clientHeight;
	}
	return winHeight;
}

function getPageSizes() {
	var pageWidth, pageHeight;
	var windowWidth, windowHeight;
	if (window.innerHeight && window.scrollMaxY) {	
		pageWidth = document.body.scrollWidth;
		pageHeight = window.innerHeight + window.scrollMaxY;
	}
	else if (document.body.scrollHeight > document.body.offsetHeight) { // all except Mac IE
		pageWidth = document.body.scrollWidth;
		pageHeight = document.body.scrollHeight;
	}
	else { // Mac IE ...would also work in IE6 Strict, Mozilla and Safari
		pageWidth = document.body.offsetWidth;
		pageHeight = document.body.offsetHeight;
	}
	if (self.innerHeight) {	// all except IE
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	}
	else if (document.body) { // other IEs
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}
	// when total width is less than width of the viewport
	if(pageWidth < windowWidth) {	
		pageWidth = windowWidth;
	}
	// when total height is less than height of the viewport
	if (pageHeight < windowHeight) {
		pageHeight = windowHeight;
	}
	var pageSizes = new Array(pageWidth, pageHeight, windowWidth, windowHeight);
	return pageSizes;
}

function lomake_tyhjennys() {
	// hakusana
	if (document.getElementById('ha')) {
		document.getElementById('ha').value='';
	}
	// sanaluokka
	if (document.getElementById('sa')) {
		document.getElementById('sa').options[0].selected = true;
	}
	// selite
	if (document.getElementById('se')) {
		document.getElementById('se').value='';
	}
	// murresana
	if (document.getElementById('es')) {
		document.getElementById('es').value='';
	}
	// pitäjä
	if (document.getElementById('pi')) {
		document.getElementById('pi').options[0].selected = true;
	}
	// lähde
	if (document.getElementById('la')) {
		document.getElementById('la').options[0].selected = true;
	}
	// käyttöyhteys
	if (document.getElementById('ka')) {
		document.getElementById('ka').options[0].selected = true;
	}
	// kielioppitieto
	if (document.getElementById('ko')) {
		document.getElementById('ko').options[0].selected = true;
	}
	return false;
}

function keypressed(e, artikkeli_id, lomaketyyppi) {
	var characterCode;
	if (e && e.which) {
		characterCode = e.which;
	}
	else {
		e = event;
		characterCode = e.keyCode;
	}
	if (characterCode == 13 || characterCode == 10) {
		return false;
	}
	else {
		var arvo = document.getElementById("k").value;
		//var kutsu = "kjavax.cgi?k=" + arvo + String.fromCharCode(characterCode);
		var kutsu = "kjavax.cgi?k=" + arvo;
		if (artikkeli_id.length > 0) {
			kutsu += "&a=" + artikkeli_id;
		}
		if (lomaketyyppi.length > 0) {
			kutsu += "&l=" + lomaketyyppi;
		}
		kutsu = encodeURI(kutsu);
		path_request(kutsu);
		return true;
	}
}
function arrowclick(numero, artikkeli_id, lomaketyyppi) {
	var kutsu = "kjavax.cgi?n=" + numero;
	if (artikkeli_id.length > 0) {
		kutsu += "&a=" + artikkeli_id;
	}
	if (lomaketyyppi.length > 0) {
		kutsu += "&l=" + lomaketyyppi;
	}
	kutsu = encodeURI(kutsu);
	path_request(kutsu);
	return false;
}
function path_request(filename) {
	var elem = document.getElementById('hsanakonteksti');
	if (elem) {
		startPathRequest(filename);
	}
}
function startPathRequest(filename) {
	if (typeof path_request_xmlhttp == 'undefined') {
		createPathXMLHttpRequest();
	}
	else {
		if (path_request_xmlhttp.readyState < 4) {
			path_request_xmlhttp.abort();
		}
	}
	path_request_xmlhttp.onreadystatechange = handleStateChange;
	path_request_xmlhttp.open("GET", filename, true);
	path_request_xmlhttp.send(null);
}
function createPathXMLHttpRequest() {
	if (window.XMLHttpRequest) {
		// code for IE7+, Firefox, Chrome, Opera, Safari
		path_request_xmlhttp = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		// code for IE6, IE5
		path_request_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
}
function handleStateChange() {
	if (path_request_xmlhttp.readyState == 4) {
		if (path_request_xmlhttp.status == 200) {
			var elem = document.getElementById('hsanakonteksti');
			if (elem) {
				var txt = path_request_xmlhttp.responseText;
				if (txt.length > 0) {
					elem.innerHTML = txt;
				}
			}
		}
	} 
}





function checkEnter(e) {
	var characterCode;
	if (e && e.which) {
		characterCode = e.which;
	}
	else {
		e = event;
		characterCode = e.keyCode;
	}
	if (characterCode == 13 || characterCode == 10) {
		return false;
	}
	else {
		return true;
	}
}

function haeAakkos() {
	var arvo = normalisoiMerkkijono(document.getElementById("entryabc").value, listatyyppi);
	var keski = 0;
	var vasen = 0;
	var oikea = kokokoko - 1;
	/* binaarihaku */
	while (vasen <= oikea) {
		keski = Math.floor((vasen + oikea) / 2);
		var osai = osa(keski);
		var hsanat = rivit[osa(keski)][indeksi(keski)].getElementsByTagName('hsana');
		var hsana = "";
		for (var j = 0; j < hsanat[0].childNodes.length; j++) {
			var lapsi = hsanat[0].childNodes.item(j);
			if (lapsi.nodeName == "pysty") {
				hsana += '|';
			}
			else if (lapsi.nodeType == 3) {
				hsana += lapsi.data;
			}
		}
		hsana = normalisoiMerkkijono(hsana, listatyyppi);
		if (arvo > hsana) { 
			vasen = keski + 1;
		}
		else if (arvo < hsana) { 
			oikea = keski - 1;
		}
		else {
			break;
		}
	}
	/* homonyymeja varten tarkistetaan hakusana vasemmalta */
	if (vasen < keski) {
		var uuskeski = keski;
		do {
			uuskeski--;
			var hsanat = rivit[osa(uuskeski)][indeksi(uuskeski)].getElementsByTagName('hsana');
			var hsana = "";
			for (var j = 0; j < hsanat[0].childNodes.length; j++) {
				var lapsi = hsanat[0].childNodes.item(j);
				if (lapsi.nodeName == "pysty") {
					hsana += '|';
				}
				else if (lapsi.nodeType == 3) {
					hsana += lapsi.data;
				}
			}
			hsana = normalisoiMerkkijono(hsana, listatyyppi);          
			if (arvo == hsana) {
				keski = uuskeski
			}
		} while (vasen < uuskeski && keski == uuskeski);
	}
	else if (vasen > oikea) {
		keski = vasen;
	}
	elempos = keski;
	var cont = document.getElementById("hsanalista");
	cont.innerHTML = "";
	luuppi();
	//position(elempos);
	//fontti(document.lomake2.fonttimuutos.options[document.lomake2.fonttimuutos.selectedIndex].value);
}

function normalisoiMerkkijono(mjono, lista) {
	var njono = "";
	if (lista == 0) {
		for (var i = 0; i < mjono.length; i++) {
			var mukaan = true;
			var koodi = mjono.charCodeAt(i);
			if (koodi == 353) {
				koodi = 115;
			}
			if (koodi == 382) {
				koodi = 122;
			}
			if (koodi < 65 || koodi == 124 || (koodi > 768 && koodi < 880)) {
				mukaan = false;
			}
			if (mukaan == true) {
				njono += String.fromCharCode(koodi);
			}
		}
	}
	else {
		if (lista == 2) {
			mjono = mjono.replace(/^([^\/_]+)([\/_])(.*)$/, "$3$2$1");
		}
		for (var i = mjono.length; i > 0; i--) {
			var mukaan = true;
			var koodi = mjono.charCodeAt(i - 1);
			if (koodi == 353) {
				koodi = 115;
			}
			if (koodi == 382) {
				koodi = 122;
			}
			if (koodi < 65 || koodi == 124 || (koodi > 768 && koodi < 880)) {
				mukaan = false;
			}
			if (mukaan == true) {
				njono += String.fromCharCode(koodi);
			}
		}
	}
	return (njono);
}

function merkkipaletti_linkki() {
	var span = document.getElementById("merkkipaletti_span");
	if (span) {
		span.innerHTML = '<a href="#" onclick="merkkipaletti();return false;">&#187; Erikoiskirjaimet</a>';
	}
	var div = document.getElementById("merkkipaletti");
	if (div) {
		div.innerHTML = '<div id="merkkipaletti">&nbsp;</div>';
	}
}

function merkki(merkki) {
	var elem = document.getElementById("es");
	if (elem) {
		elem.focus();
    elem.value += merkki;
	}
}

function merkkipaletti() {
	var span = document.getElementById("merkkipaletti_span");
	if (span) {
		var string = '<a href="#" onclick="merkkipaletti_linkki();return false;">&#187; Sulje erikoiskirjaimet</a>';
		span.innerHTML = string;
		var div = document.getElementById("merkkipaletti");
		if (div) {
			string = '<table> \
<tr><td onclick="merkki(\'b́\')" title="Liudentunut B">&#160;b́&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr> \
<tr><td onclick="merkki(\'d́\')" title="Liudentunut D">&#160;d́&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr> \
<tr><td onclick="merkki(\'e̮\')" title="Takainen E">&#160;e̮&#160;</td><td onclick="merkki(\'ɛ\')" title="Avoin E">&#160;ɛ&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr> \
<tr><td onclick="merkki(\'f́\')" title="Liudentunut F">&#160;f́&#160;</td><td onclick="merkki(\'f̆\')" title="Lyhytalkuinen F">&#160;f̆&#160;</td><td onclick="merkki(\'f́̆\')" title="Lyhytalkuinen liudentunut F">&#160;f́̆&#160;</td><td onclick="merkki(\'f̀\')" title="Puolipitkä F">&#160;f̀&#160;</td><td onclick="merkki(\'f́̀\')" title="Puolipitkä liudentunut F">&#160;f́̀&#160;</td></tr> \
<tr><td onclick="merkki(\'ǵ\')" title="Liudentunut G">&#160;ǵ&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr> \
<tr><td onclick="merkki(\'h́\')" title="Liudentunut H">&#160;h́&#160;</td><td onclick="merkki(\'h̆\')" title="Lyhytalkuinen H">&#160;h̆&#160;</td><td onclick="merkki(\'h́̆\')" title="Lyhytalkuinen liudentunut H">&#160;h́̆&#160;</td><td onclick="merkki(\'h̀\')" title="Puolipitkä H">&#160;h̀&#160;</td><td onclick="merkki(\'h́̀\')" title="Puolipitkä liudentunut H">&#160;h́̀&#160;</td></tr> \
<tr><td onclick="merkki(\'i̮\')" title="Takainen I">&#160;i̮&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr> \
<tr><td onclick="merkki(\'ḱ\')" title="Liudentunut K">&#160;ḱ&#160;</td><td onclick="merkki(\'k̆\')" title="Lyhytalkuinen K">&#160;k̆&#160;</td><td onclick="merkki(\'ḱ̆\')" title="Lyhytalkuinen liudentunut K">&#160;ḱ̆&#160;</td><td onclick="merkki(\'k̀\')" title="Puolipitkä K">&#160;k̀&#160;</td><td onclick="merkki(\'ḱ̀\')" title="Puolipitkä liudentunut K">&#160;ḱ̀&#160;</td></tr> \
<tr><td onclick="merkki(\'ĺ\')" title="Liudentunut L">&#160;ĺ&#160;</td><td onclick="merkki(\'l̆\')" title="Lyhytalkuinen L">&#160;l̆&#160;</td><td onclick="merkki(\'ĺ̆\')" title="Lyhytalkuinen liudentunut L">&#160;ĺ̆&#160;</td><td onclick="merkki(\'l̀\')" title="Puolipitkä L">&#160;l̀&#160;</td><td onclick="merkki(\'ĺ̀\')" title="Puolipitkä liudentunut L">&#160;ĺ̀&#160;</td></tr> \
<tr><td onclick="merkki(\'ḿ\')" title="Liudentunut M">&#160;ḿ&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr> \
<tr><td onclick="merkki(\'ń\')" title="Liudentunut N">&#160;ń&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr> \
<tr><td onclick="merkki(\'ṕ\')" title="Liudentunut P">&#160;ṕ&#160;</td><td onclick="merkki(\'p̆\')" title="Lyhytalkuinen P">&#160;p̆&#160;</td><td onclick="merkki(\'ṕ̆\')" title="Lyhytalkuinen liudentunut P">&#160;ṕ̆&#160;</td><td onclick="merkki(\'p̀\')" title="Puolipitkä P">&#160;p̀&#160;</td><td onclick="merkki(\'ṕ̀\')" title="Puolipitkä liudentunut P">&#160;ṕ̀&#160;</td></tr> \
<tr><td onclick="merkki(\'ŕ\')" title="Liudentunut R">&#160;ŕ&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr> \
<tr><td onclick="merkki(\'ś\')" title="Liudentunut S">&#160;ś&#160;</td><td onclick="merkki(\'s̆\')" title="Lyhytalkuinen S">&#160;s̆&#160;</td><td>&#160;</td><td onclick="merkki(\'s̀\')" title="Puolipitkä S">&#160;s̀&#160;</td><td>&#160;</td></tr> \
<tr><td onclick="merkki(\'š\')" title="Suhu-S">&#160;š&#160;</td><td onclick="merkki(\'š̆\')" title="Lyhytalkuinen suhu-S">&#160;š̆&#160;</td><td>&#160;</td><td onclick="merkki(\'š̀\')" title="Puolipitkä suhu-S">&#160;š̀&#160;</td><td>&#160;</td></tr> \
<tr><td onclick="merkki(\'t́\')" title="Liudentunut T">&#160;t́&#160;</td><td onclick="merkki(\'t̆\')" title="Lyhytalkuinen T">&#160;t̆&#160;</td><td onclick="merkki(\'t́̆\')" title="Lyhytalkuinen liudentunut T">&#160;t́̆&#160;</td><td onclick="merkki(\'t̀\')" title="Puolipitkä T">&#160;t̀&#160;</td><td onclick="merkki(\'t́̀\')" title="Puolipitkä liudentunut T">&#160;t́̀&#160;</td></tr> \
<tr><td onclick="merkki(\'v́\')" title="Liudentunut V">&#160;v́&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr> \
<tr><td onclick="merkki(\'ź\')" title="Liudentunut Z">&#160;ź&#160;</td><td onclick="merkki(\'ž\')" title="Suhu-Z">&#160;ž&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr> \
</table>';
			div.innerHTML = string;
		}
		merkki('');
	}
}

