﻿var indeks_besede1 = new Array();
var indeks_besede2 = new Array();
var indeks_stavka1 = new Array();
var indeks_stavka2 = new Array();

var razred_besede1 = new Array();
var razred_besede2 = new Array();
var razred_stavka1 = new Array();
var razred_stavka2 = new Array();

var indeks_alt_besed = -1;
var indeks_alt_stavka = -1;

var alt_besed = new Array();
var alt_stavkov = new Array();

var re_posevnica_nazaj   = new RegExp("\\\\", "g");
var re_posevnica_nazaj_z = new RegExp("\\\\\\\\", "g");
var re_minus             = new RegExp("-", "g");
var re_minus_z           = new RegExp("\\\\-", "g");


function ZascitiVsebinoKomentarja(s)
{
	return (new String(s)).replace(re_posevnica_nazaj, "\\\\").replace(re_minus, "\\-");
}


function OdscitiVsebinoKomentarja(s)
{
	return (new String(s)).replace(re_posevnica_nazaj_z, "\\").replace(re_minus_z, "-");
}


function PreracunajZnake()
{
	with (document.obrazec) {
		var
			s = besedilo.value.replace(/\^c/g, "č").replace(/\^C/g, "Č").replace(/\^s/g, "š").replace(/\^S/g, "Š").replace(/\^z/g, "ž").replace(/\^Z/g, "Ž"),
	        	ostalo = najvecje_stevilo_znakov - s.length;
	        	
	        stevilo_znakov.value = ostalo;
	        
	        if (ostalo >= 0) {
	        	stevilo_znakov.className = "okvirjeno";
	        	return true;
	        } else {
	        	stevilo_znakov.className = "vaznaNapaka okvirjeno";
	        	return false;
	        }
	}
}


function Skrij(el)
{
	if (el) {
		el.style.display = "none";
		el.style.visibility = "hidden";
	}
}


function SkrijInZakomentiraj(el)
{
	if (el) {
	    // Najprej skrijemo element.
	    Skrij(el);
	    
	    // Vsebino elementa zakomentiramo, da se ne pojavlja v odložišču.
	    var
	        komentar = document.createComment(ZascitiVsebinoKomentarja(el.innerHTML));
	    
	    el.innerHTML = "";
	    el.appendChild(komentar);
	}
}


function Pokazi(el, inline)
{
	if (el) {
		el.style.display = inline ? "inline" : "block";
		el.style.visibility = "visible";
	}
}


function OdkomentirajInPokazi(el, inline)
{
	if (el) {
	    // Prvi podelement našega elementa mora biti komentar. Odkomentiramo ga in element prikažemo.
	    var
	        komentar = el.childNodes.length ? el.childNodes.item(0) : null;
	    
	    if (komentar)
	        el.innerHTML = OdscitiVsebinoKomentarja(komentar.data);
	    
	    Pokazi(el, inline);
	}
}


function OsvetliBesede1(besede)
{
	var i;

	// restavriramo razred prej izbranim besedam
	for (i in indeks_besede1) {
		var el = document.getElementById("besedilo_beseda"+indeks_besede1[i]);
		if (el) el.className = razred_besede1[i];
	}
		
	// spravimo podatke o novih besedah
	indeks_besede1 = besede;
	razred_besede1 = new Array(indeks_besede1.length);
	for (i in indeks_besede1) {
		var el = document.getElementById("besedilo_beseda"+indeks_besede1[i]);
		if (el) {
			// nastavimo podatke novi besedi
			razred_besede1[i] = el.className;
			el.className = "izbranaBeseda";		
		}
	}
}


function OsvetliBesede2(besede)
{
	var i;

	// restavriramo razred prej izbranim besedam
	for (i in indeks_besede2) {
		var el = document.getElementById("prevod_beseda"+indeks_besede2[i]);
		if (el) el.className = razred_besede2[i];
	}
		
	// spravimo podatke o novih besedah
	indeks_besede2 = besede;
	razred_besede2 = new Array(indeks_besede2.length);
	for (i in indeks_besede2) {
		var el = document.getElementById("prevod_beseda"+indeks_besede2[i]);
		if (el) {
			// nastavimo podatke novi besedi
			razred_besede2[i] = el.className;
			el.className = "izbranaBeseda";
		}
	}
}


function OsvetliStavke1(stavki)
{
	var i;

	// restavriramo razred prej izbranim besedam
	for (i in indeks_stavka1) {
		var el = document.getElementById("besedilo_stavek"+indeks_stavka1[i]);
		if (el) el.className = razred_stavka1[i];
	}
		
	// spravimo podatke o novih stavkih
	indeks_stavka1 = stavki;
	razred_stavka1 = new Array(indeks_stavka1.length);
	for (i in indeks_stavka1) {
		var el = document.getElementById("besedilo_stavek"+indeks_stavka1[i]);
		if (el) {
			// nastavimo podatke novemu stavku
			razred_stavka1[i] = el.className;
			el.className = "izbranStavek";		
		}
	}
}


function OsvetliStavke2(stavki)
{
	var i;

	// restavriramo razred prej izbranim besedam
	for (i in indeks_stavka2) {
		var el = document.getElementById("prevod_stavek"+indeks_stavka2[i]);
		if (el) el.className = razred_stavka2[i];
	}
		
	// spravimo podatke o novih stavkih
	indeks_stavka2 = stavki;
	razred_stavka2 = new Array(indeks_stavka2.length);
	for (i in indeks_stavka2) {
		var el = document.getElementById("prevod_stavek"+indeks_stavka2[i]);
		if (el) {
			// nastavimo podatke novemu stavku
			razred_stavka2[i] = el.className;
			el.className = "izbranStavek";
		}
	}
}


function PokaziAlternative(stavek, beseda)
{
	if (indeks_alt_besed != beseda) {
		// skrijemo alternative prejsnje besede
		if (indeks_alt_besed != -1)
			Skrij(document.getElementById("beseda"+indeks_alt_besed));
			
		// spravimo podatke o novi besedi
		indeks_alt_besed = beseda;
		if (beseda != -1) {
			// prikazemo alternative nove besede
			Pokazi(document.getElementById("beseda"+beseda));
		}
	}
	
	if (indeks_alt_stavka != stavek) {
		if (indeks_alt_stavka != -1) {
			// skrijemo alternative prejsnjega stavka
			Skrij(document.getElementById("navigator_stavek_s"+indeks_alt_stavka));
			Skrij(document.getElementById("navigator_stavek_b"+indeks_alt_stavka));
		}

		// spravimo podatke o novem stavku
		indeks_alt_stavka  = stavek;
		if (stavek != -1) {
			// prikazemo alternative novega stavka
			Pokazi(document.getElementById("navigator_stavek_s"+stavek));
			Pokazi(document.getElementById("navigator_stavek_b"+stavek));
		}
	}
}


function IzberiBesedo1(poved, stavek, beseda)
{
	var idx;

	// izberemo stavek v besedilu
	idx = new Array();
	idx[0] = stavek;
	OsvetliStavke1(idx);

	// izberemo besedo v besedilu
	idx = new Array();
	idx[0] = beseda;
	OsvetliBesede1(idx);

	// osvetlimo povezane besede v prevodu
	OsvetliBesede2(povezave_besed1[beseda]);

	// osvetlimo povezane stavke v prevodu
	OsvetliStavke2(povezave_stavkov1[stavek]);
	
	// ce je povezana beseda ena sama, prikazemo njene alternative
	// (zacasno izklopljeno, ker ima lahko vec povezav na druge alt. stavke, kar pa bi trajalo, da bi preverili)
	// PokaziAlternative(stavek, -1);
}


function IzberiBesedo2(stavek, beseda)
{
	var idx;

	// izberemo stavek v prevodu
	idx = new Array();
	idx[0] = stavek;
	OsvetliStavke2(idx);

	// izberemo besedo v prevodu
	idx = new Array();
	idx[0] = beseda;
	OsvetliBesede2(idx);
	
	// izberemo povezane besede v besedilu
	OsvetliBesede1(povezave_besed2[beseda]);

	// osvetlimo povezane stavke v besedilu
	OsvetliStavke1(povezave_stavkov2[stavek]);
	
	PokaziAlternative(stavek, beseda);
}


function RazveljaviIzbiro()
{
	OsvetliBesede1(new Array());
	OsvetliBesede2(new Array());
	OsvetliStavke1(new Array());
	OsvetliStavke2(new Array());
	if (indeks_alt_besed != -1) {
		Skrij(document.getElementById("beseda"+indeks_alt_besed));
		indeks_alt_besed = -1;
	}
	if (indeks_alt_stavka != -1) {
		Skrij(document.getElementById("navigator_stavek_s"+indeks_alt_stavka));
		Skrij(document.getElementById("navigator_stavek_b"+indeks_alt_stavka));
		indeks_alt_stavka = -1;
	}
}


function ZamenjajBesedo(beseda, alt_besede)
{
	// Če ni spremembe, zaključimo.
	if (alt_besed[beseda] == alt_besede)
		return;
		
	// Skrijemo prejšnjo alternativo.
	SkrijInZakomentiraj(document.getElementById("prevod_alt_besede"+ beseda +"_"+ alt_besed[beseda]));
	Skrij(document.getElementById("navigator_alt_besede"+ beseda +"_"+ alt_besed[beseda]));
	var
	    el = document.getElementById("navigator_alt_beseda"+ beseda +"_"+ alt_besed[beseda]);
	if (el)
	    el.className = "";
	
    // Pokažemo novo alternativo.
	alt_besed[beseda] = alt_besede;
	var
	    el = document.getElementById("navigator_alt_beseda"+ beseda +"_"+ alt_besede);
	if (el)
	    el.className = "izbranaBeseda";
	Pokazi(document.getElementById("navigator_alt_besede"+ beseda +"_"+ alt_besede), true);
	OdkomentirajInPokazi(document.getElementById("prevod_alt_besede"+ beseda +"_"+ alt_besede), true);
}


function ZamenjajStavek(stavek, alt_stavka)
{
	// Če ni spremembe, zaključimo.
	if (alt_stavkov[stavek] == alt_stavka)
		return;

	// Skrijemo prejšnjo alternativo.
	SkrijInZakomentiraj(document.getElementById("prevod_alt_stavka"+ stavek +"_"+ alt_stavkov[stavek]));
	var
	    el = document.getElementById("navigator_alt_stavka"+ stavek +"_"+ alt_stavkov[stavek]);
	if (el)
	    el.className = "";
	
	// Pokažemo novo alternativo.
	alt_stavkov[stavek] = alt_stavka;
	OdkomentirajInPokazi(document.getElementById("prevod_alt_stavka"+ stavek +"_"+ alt_stavka), true);
	var
	    el = document.getElementById("navigator_alt_stavka"+ stavek +"_"+ alt_stavka);
	if (el)
	    el.className = "izbranStavek";

	// Skrijemo alternative prejšnje besede.
	if (indeks_alt_besed != -1) {
		Skrij(document.getElementById("beseda"+indeks_alt_besed));
		indeks_alt_besed = -1;
	}

	// Zbrišemo povezave besed.
	OsvetliBesede1(new Array());
	OsvetliBesede2(new Array());
}
