//  =============================================================
//  Tama JavaScript-tiedosto maarittelee variaabelit ja funktiot,
//  joita kaytetaan HPS P01 joukkueen sivuilla
//
//                  (c)  Lasse Häkkinen, 2007-2010
//  =============================================================


// ----------------
// jQuery functions
// ----------------


// Initialize dropdown menu.

function init_dropdown() {

	// If the element does not exist then return.
	if (!$('ul.dropdown').length) { return; }

	// Add listener for hover.
	$('ul.dropdown li.dropdown_trigger').hover(
		function() { $(this).find('ul').fadeIn(1); },	// Show subsequent <ul>
		function() { $(this).find('ul').hide();	}		// Hide subsequent <ul>
	);

	// Prevent clicking on dropdown menu title
 	$('ul.dropdown li.dropdown_trigger > a').click( function (event) { event.preventDefault(); } );
}

// Handle all initialization processes

$(document).ready(function () {
	init_dropdown();
});


// ---------------------------------------
// -- Globaalit variaabelit --
// ---------------------------------------

var TamaPaiva;
var TamaKuukausi;
var TamaVuosi;
var TamaViikPaiva;
var WeekDays   = new Array("Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai");
var MonthNames = new Array("Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kes&auml;kuu","Hein&auml;kuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu");

var Vuosi,Kuukausi; // Naita kaytetaan kalenterisivuilla, stringeja !

var TiedotteetXML = null;	// Tiedotteet luetaan 'tiedotteet.xml':sta tahan muuttujaan
var KalenteriXML  = null;	// Tapahtumat luetaan 'kalenteri.xml':sta tahan muuttujaan



// ---------------------------------------
// Haetaan taman paivan paivays
// ---------------------------------------

function HaeTamaPaiva() {
	var currentTime = new Date();
	TamaPaiva     = currentTime.getDate();
	TamaKuukausi  = currentTime.getMonth() + 1;
	TamaVuosi     = currentTime.getFullYear();
	TamaViikPaiva = currentTime.getDay();
}

// ---------------------------------------
// Haetaan paivays sivun url:sta
// ---------------------------------------

function HaeURLPaiva() {
	var parameters = window.location.search;
	var Month_ind = parameters.indexOf("&month=");
	if (Month_ind > -1) {
		Vuosi    = parameters.substring(Month_ind+7,Month_ind+11);
		Kuukausi = parameters.substring(Month_ind+11,Month_ind+13);
	}
	else {
		Vuosi    = TamaVuosi;
		Kuukausi = TamaKuukausi;
		if (Kuukausi < 10) { Kuukausi = "0" + Kuukausi };
	}
}


// --------------------------------------------------------------
// Kirjoitetaan sivulle tama paiva muodossa viikonp - DD.MM.YYYY
// Jos kyseessä on liputuspäivä, niin kirjoitetaan Suomen lippu
// ja liputuksen aihe. Jos muu juhlapaiva, niin jokin symboli +
// juhlan syy.
// --------------------------------------------------------------

function KirjoitaTamaPaiva() {

	var KiinteatLiputusPaivat = [
		["5.2"  ,"Runebergin p&auml;iv&auml;"      ],
		["28.2" ,"Kalevalan p&auml;iv&auml;"       ],
		["19.3" ,"Minna Canthin p&auml;iv&auml;"   ],
		["9.4"  ,"Mikael Agricolan p&auml;iv&auml;"],
		["27.4" ,"Veteraanip&auml;iv&auml;"        ],
		["12.5" ,"J.V.Snellmannin p&auml;iv&auml;" ],
		["1.5"  ,"Vappup&auml;iv&auml;"            ],
		["4.6"  ,"Puolustusvoimien lippujuhla"     ],
		["6.7"  ,"Eino Leinon p&auml;iv&auml;"     ],
		["10.10","Aleksis Kiven p&auml;iv&auml;"   ],
		["24.10","YK:n p&auml;iv&auml;"            ],
		["6.11" ,"Svenska dagen"                   ],
		["6.12" ,"Itsen&auml;isyysp&auml;iv&auml;" ]];

	// Nama ovat vuodelle 2010
	var MuuttuvatLiputusPaivat = [
		["9.5"  ,"&Auml;itienp&auml;iv&auml;"        ],
		["16.5"  ,"Kaatuneiden muistop&auml;iv&auml;" ],
		["26.6"  ,"Juhannusp&auml;iv&auml;" ],
		["14.11"  ,"Is&auml;np&auml;iv&auml;"          ]];

	// Muita juhlapaivia
	var JuhlaPaivat = [
		["14.2"  ,"Yst&auml;v&auml;np&auml;iv&auml;" , "sydan.png"]];

	var Tanaan = TamaPaiva + "." + TamaKuukausi;

	document.write(WeekDays[TamaViikPaiva] + " - " + Tanaan + "." + TamaVuosi);

	for (i=0 ; i < KiinteatLiputusPaivat.length ; i++) {
		if (Tanaan == KiinteatLiputusPaivat[i][0]) {
			document.write("<br \/><img src=\"kuvat/lippu.jpg\" alt=\"\" style=\"vertical-align:middle\" \/>");
			document.write("&nbsp;&nbsp;" + KiinteatLiputusPaivat[i][1]);
			break;
		}
	}

	for (i=0 ; i < MuuttuvatLiputusPaivat.length ; i++) {
		if (Tanaan == MuuttuvatLiputusPaivat[i][0]) {
			document.write("<br \/><img src=\"kuvat/lippu.jpg\" alt=\"\" style=\"vertical-align:middle\" \/>");
			document.write("&nbsp;&nbsp;" + MuuttuvatLiputusPaivat[i][1]);
			break;
		}
	}

	for (i=0 ; i < JuhlaPaivat.length ; i++) {
		if (Tanaan == JuhlaPaivat[i][0]) {
			document.write("<br \/><img src=\"kuvat/" + JuhlaPaivat[i][2] + "\" alt=\"\" style=\"vertical-align:middle\" \/>");
			document.write("&nbsp;&nbsp;" + JuhlaPaivat[i][1]);
			break;
		}
	}
}


// ---------------------------------------------------------------
// Luodaan kalenterin ylapuolella olevat buttonit:
// - Kalenterimuoto (lista,taulu),
// - Edellinen kuukausi, kuukausivalikko, seuraava kuukausi
// - Nykyinen kuukausi
//
// Parametri 'Kalenteri_tiedosto' voi olla 'kalenteri_lista.html'
// tai 'kalenteri.html'
// ---------------------------------------------------------------

function LuoKalenteriButtonit(Kalenteri_tiedosto) {

	// Buttoni toiseen esitysmuotoon (lista tai taulu)

	if (Kalenteri_tiedosto == "kalenteri") {
		document.write("<table id=\"cal_button_table\">");
		document.write("<tr>");
		document.write("<td width=\"100px\">");
//		document.write("<input type=\"button\" value=\"Listamuoto\" onclick=\"location=\'?page=kalenteri_lista&month=" +  Vuosi + Kuukausi + "\'\" \/>");
		document.write("<\/td>");
	} else {	// 'kalenteri_lista'
		document.write("<table id=\"cal_button_list\">");
		document.write("<tr>");
		document.write("<td width=\"100px\">");
//		document.write("<input type=\"button\" value=\"Taulukkomuoto\" onclick=\"location=\'?page=kalenteri&month=" +  Vuosi + Kuukausi + "\'\" \/>");
		document.write("<\/td>");
	}

	// Edellinen kuukausi - nappula

	var FooKuukausi = Number(Kuukausi) - 1;
	var FooVuosi    = Number(Vuosi);
	if (FooKuukausi == 0) {
		FooKuukausi = 12;
		FooVuosi = Number(Vuosi) - 1;
	}
	if (FooKuukausi < 10) { FooKuukausi = "0" + FooKuukausi };

	document.write("<td align=\"center\">");
	document.write("<input type=\"button\" value=\"&larr;\" onclick=\"location=\'?page=" + Kalenteri_tiedosto + "&month=" +  FooVuosi + FooKuukausi + "\'\" \/>");
	document.write("&nbsp;&nbsp;&nbsp;");


	// Kuukausivalikko, edelliset 8 kuukautta ja seuraavat 8 kuukautta

	document.write("<select onChange=\"location = this.options[this.selectedIndex].value;\">");
	for (M = -8; M <= 8; M++) {		// edelliset ja seuraavat 8 kuukautta
		FooVuosi    = Number(Vuosi);
		FooKuukausi = Number(Kuukausi) + M;
		if (FooKuukausi < 1) {
			FooKuukausi = FooKuukausi + 12;
			FooVuosi = Number(Vuosi) - 1;
		}
		if (FooKuukausi > 12) {
			FooKuukausi = FooKuukausi - 12;
			FooVuosi = Number(Vuosi) + 1;
		}
		if (FooKuukausi < 10) { FooKuukausi = "0" + FooKuukausi };

		document.write("<option ");
		if (M == 0) { document.write("selected ") }
		document.write("value=\"?page=" + Kalenteri_tiedosto + "&month=" + FooVuosi + FooKuukausi + "\">" + MonthNames[FooKuukausi-1] + " " + FooVuosi);
		document.write("<\/option>");
	}
	document.write("<\/select>");


	// Seuraava kuukausi - nappula

	FooVuosi    = Number(Vuosi);
	FooKuukausi = Number(Kuukausi) + 1;
	if (FooKuukausi == 13) {
		FooKuukausi = 1;
		FooVuosi = Number(Vuosi) + 1;
	}
	if (FooKuukausi < 10) { FooKuukausi = "0" + FooKuukausi };

	document.write("&nbsp;&nbsp;&nbsp;");
	document.write("<input type=\"button\" value=\"&rarr;\" onclick=\"location=\'?page=" + Kalenteri_tiedosto + "&month=" +  FooVuosi + FooKuukausi + "\'\" \/>");
	document.write("<\/td>");


	// Nykyinen kuukausi

	FooVuosi    = TamaVuosi;
	FooKuukausi = TamaKuukausi;
	if (FooKuukausi < 10) { FooKuukausi = "0" + FooKuukausi };
	document.write("<td width=\"100px\" align=\"right\">");
	document.write("<input type=\"button\" value=\"" + MonthNames[FooKuukausi-1] + " " + TamaVuosi + "\" onclick=\"location=\'?page=" + Kalenteri_tiedosto + "&month=" +  TamaVuosi + FooKuukausi + "\'\" \/>");
	document.write("<\/td>");

	document.write("<\/tr>");
	document.write("<\/table>");
}


// ---------------------------------------------------------------
// Luodaan pohja taulukkomuotoiselle kalenterille.
// ---------------------------------------------------------------

function LuoKalenteriTaulu() {

	document.write("<table class=\"kalenteritaulu\" align=\"center\">");

	// Kuukauden nimi

	document.write("<tr><td colspan=\"7\" class=\"kuukausinimi\" >");
	document.write(MonthNames[Kuukausi-1] + "&nbsp;" + Vuosi);
	document.write("<\/td><\/tr>");

	// Viikonpaivien nimet

	document.write("<tr valign=\"top\">");
	document.write("<td class=\"viikonpaivat\">Maanantai<\/td>");
	document.write("<td class=\"viikonpaivat\">Tiistai<\/td>");
	document.write("<td class=\"viikonpaivat\">Keskiviikko<\/td>");
	document.write("<td class=\"viikonpaivat\">Torstai<\/td>");
	document.write("<td class=\"viikonpaivat\">Perjantai<\/td>");
	document.write("<td class=\"viikonpaivat\">Lauantai<\/td>");
	document.write("<td class=\"viikonpaivat\">Sunnuntai<\/td>");
	document.write("<\/tr>");

	// Paivasolut

	var day = new Date();
	var FirstDayOfMonth = new Date();
	var LastDayOfMonth  = new Date();

	FirstDayOfMonth.setFullYear(Vuosi,Kuukausi-1,1);
	LastDayOfMonth.setFullYear(Vuosi,Kuukausi,0);

	var WeekDay = FirstDayOfMonth.getDay();
	if (WeekDay == 0) { WeekDay = 7; }

	day.setFullYear(Vuosi,Kuukausi-1,2-WeekDay);	// taulukon ensimmainen paiva

	var weekCount = (WeekDay - 1 + LastDayOfMonth.getDate() + 6)/7;
	var Tanaan =  TamaPaiva + "." + TamaKuukausi + "." + TamaVuosi;
	var SoluPaiva = "";

	for (weekNbr = 1; weekNbr <= weekCount ; weekNbr++) {
		document.write("<tr>");
		for (dayNbr = 1; dayNbr <= 7; dayNbr++) {
			SoluPaiva = day.getDate() + "." + (day.getMonth() + 1) + "." + day.getFullYear();

			if (Tanaan == SoluPaiva) {
				document.write("<td class=\"tamapaivasolu\" >");
			} else {
				document.write("<td class=\"paivasolu\" >");
			}

			if ((day.getMonth() + 1) != Number(Kuukausi)) {
				document.write("<div class=\"muukuukpaivanumero\">");
			} else {
				document.write("<div class=\"paivanumero\">");
			}

			document.write(day.getDate());
			document.write("<\/div>");

			// varaa tila paivan teksteille. Solun id=SoluPaiva eli muotoa 2.10.2007
			document.write("<div class=\"paivateksti\" id=\"" + SoluPaiva + "\">");
			document.write("<\/div>");

			document.write("<\/td>");

			day.setFullYear(day.getFullYear(),day.getMonth(),day.getDate() + 1);
		}
		document.write("<\/tr>");
	}

	document.write("<\/table>");
}


// ---------------------------------------------------------------
// Luodaan pohja listamuotoiselle kalenterille.
// ---------------------------------------------------------------

function LuoKalenteriLista() {

	document.write("<table cellspacing=\"0\" class=\"kalenterilista\" align=\"center\">");

	// Kuukauden nimi

	document.write("<tr><td colspan=\"4\" class=\"lista_kuukausinimi\" >");
	document.write(MonthNames[Kuukausi-1] + "&nbsp;" + Vuosi);
	document.write("<\/td><\/tr>");

	// Paivasolut

	var day = new Date();
	var FirstDayOfMonth = new Date();
	var LastDayOfMonth  = new Date();

	FirstDayOfMonth.setFullYear(Vuosi,Kuukausi-1,1);
	LastDayOfMonth.setFullYear(Vuosi,Kuukausi,0);
	var WeekDay = FirstDayOfMonth.getDay();

	Month = FirstDayOfMonth.getMonth() + 1;
	Year  = FirstDayOfMonth.getFullYear();
	var Tanaan =  TamaPaiva + "." + TamaKuukausi + "." + TamaVuosi;

	// Merkataan sarakkeiden leveydet.
	document.write("<tr>");
	document.write("<td width=\"25\" height=\"0\">");
	document.write("<td width=\"40\" height=\"0\">");
	document.write("<td width=\"90\" height=\"0\">");
	document.write("<td width=\"440\" height=\"0\">");
	document.write("<\/tr>");

	for (dayNbr = 1; dayNbr <= LastDayOfMonth.getDate() ; dayNbr++) {
		SoluPaiva = dayNbr + "." + Month + "." + Year;

		// Annetaan riville id=SoluPaiva ja laitetaan taustavari
		if ((WeekDay == 0) || (WeekDay == 6)) {
			document.write("<tr class=\"lista_viikonloppu\" id=\"" + SoluPaiva + "\">");
		} else {
			document.write("<tr class=\"lista_arkipaiva\" id=\"" + SoluPaiva + "\">");
		}

		// Viikonpaiva ja paivays
		if (Tanaan == SoluPaiva) {
			document.write("<td class=\"lista_tanaan\">&nbsp;" + WeekDays[WeekDay].substring(0,2) + "<\/td>");
			document.write("<td class=\"lista_tanaan\">" + dayNbr + "." + Month + "<\/td>");
		} else {
			document.write("<td class=\"lista_muupaiva\">&nbsp;" + WeekDays[WeekDay].substring(0,2) + "<\/td>");
			document.write("<td class=\"lista_muupaiva\">" + dayNbr + "." + Month + "<\/td>");
		}

		// Kellonaika ja tapahtumat, tilanvaraus
		document.write("<td class=\"lista_muupaiva\"><\/td>");
		document.write("<td class=\"lista_muupaiva\"><\/td>");

		// viivat paivien valilla
		if (WeekDay == 0) {
			document.write("<tr><td colspan=\"4\" style=\"height:1px; padding: 0px; background-color:#666666; font-size:1pt\"><\/td><\/tr>");
		} else {
			document.write("<tr><td colspan=\"4\" style=\"height:1px; padding: 0px; background-color:#bbbbbb; font-size:1pt\"><\/td><\/tr>");
		}

		if (++WeekDay == 7) { WeekDay = 0 };
	}
	document.write("<\/table>");
}


// ---------------------------------------------------------------
// Lisataan kellonaikoihin :00 jos sita ei siina ole.
// ---------------------------------------------------------------

function LisaaNollat(teksti)
{
	var uusiteksti = "";
	var Found = 0;
	var c = "";

	var i = 0;
	while (i<teksti.length) {
		c = teksti.charAt(i);

		if ((c == ":") || (c == ".")) { Found = 1 }

		if (c == "-") {
			if (Found == 0) { uusiteksti += ":00" }
			else { Found = 0 }
		}

		uusiteksti += c;

		if ((i == teksti.length - 1) && (Found == 0)) { uusiteksti += ":00" }

		i++;
	}

	return(uusiteksti);
}


// -------------------------------------------------------------------------------
// Lisaa tapahtuman teksti paivasolun HTML stringiin.
// Solussa voi olla jo muita tapahtumia, jolloin lisataan tapahtuma kellonajan
// osoittamaan paikkaan. Jos kellonaikaa ei ole annettu, lisataan tapahtuma
// HTML stringin alkuun.
// -------------------------------------------------------------------------------

function HandleKalenteriSolu(PaivaStr,HTMLStr,Tapahtuma) {

	var TekstiStr;
	var TyyppiStr;
	var KelloStr;
	var TunnisteStr = "<!-- 0000 -->";

	// Kasittele tapahtuman tyyppi
	Tyyppi = Tapahtuma.getElementsByTagName("tyyppi");
	try { TyyppiStr = Tyyppi[0].firstChild.data }
	catch (err) { TyyppiStr = "eityyppia" }
	TyyppiStr = "<span class=\"" + TyyppiStr + "\">";

	// Kasittele kellonaika
	Kello = Tapahtuma.getElementsByTagName("kello");
	try { KelloStr = Kello[0].firstChild.data; }
	catch (err) { KelloStr = ""; } // Kellonaikaa ei maaritelty

	if (KelloStr.length > 0) {
		// Etsi tunnit ja minuutit KelloStr:sta
		KelloStr = LisaaNollat(KelloStr);		// Lisataan ":00", jos sita ei ole
		KaksPisteInd = KelloStr.indexOf(":");
		HourStr = KelloStr.substring(0,KaksPisteInd);
		MinStr  = KelloStr.substring(KaksPisteInd+1,KaksPisteInd+3);
		if (HourStr.length == 1) { HourStr = "0" + HourStr }
		TunnisteStr = "<!-- " + HourStr + MinStr + " -->";
		KelloStr = "<span class=\"kello\">" + KelloStr + "<\/span><br \/>";
	}

	// Kasittele tapahtuman teksti
	Txt = Tapahtuma.getElementsByTagName("teksti");
	TekstiStr = TunnisteStr + KelloStr + TyyppiStr + Txt[0].firstChild.data + "<\/span>";

	if (HTMLStr.length > 0) {
		if (KelloStr.length > 0) {
			TekstiStr = LajitteleTapahtumat(TekstiStr,HTMLStr);
		} else {
			TekstiStr = TekstiStr + "<br \/>" + HTMLStr;
		}
	}

	document.getElementById(PaivaStr).innerHTML = decodeScandChars(TekstiStr);
}

// -------------------------------------------------------------------------------
// Lisaa tapahtuman teksti paivasolun HTML stringiin.
// Solussa voi olla jo muita tapahtumia, jolloin lisataan tapahtuma kellonajan
// osoittamaan paikkaan. Jos kellonaikaa ei ole annettu, lisataan tapahtuma
// HTML stringin alkuun.
// -------------------------------------------------------------------------------

function HandleKalenteriRivi(PaivaStr,HTMLTextStr,HTMLKloStr,Tapahtuma) {

	var TekstiStr;
	var TyyppiStr;
	var KelloStr;
	var TunnisteStr = "<!-- 0000 -->";

	// Kasittele tapahtuman tyyppi
	Tyyppi = Tapahtuma.getElementsByTagName("tyyppi");
	try { TyyppiStr = Tyyppi[0].firstChild.data }
	catch (err) { TyyppiStr = "eityyppia" }
	TyyppiStr = "<span class=\"" + TyyppiStr + "\">";

	// Kasittele kellonaika
	Kello = Tapahtuma.getElementsByTagName("kello");
	try { KelloStr = Kello[0].firstChild.data; }
	catch (err) { KelloStr = ""; } // Kellonaikaa ei maaritelty

	if (KelloStr.length > 0) {
		// Etsi tunnit ja minuutit KelloStr:sta
		KelloStr = LisaaNollat(KelloStr);		// Lisataan ":00", jos sita ei ole
		KaksPisteInd = KelloStr.indexOf(":");
		HourStr = KelloStr.substring(0,KaksPisteInd);
		MinStr  = KelloStr.substring(KaksPisteInd+1,KaksPisteInd+3);
		if (HourStr.length == 1) { HourStr = "0" + HourStr }
		TunnisteStr = "<!-- " + HourStr + MinStr + " -->";
	}

	// Kasittele tapahtuman teksti
	Txt = Tapahtuma.getElementsByTagName("teksti");
	TekstiStr = TunnisteStr + TyyppiStr + Txt[0].firstChild.data + "<\/span>";
	KelloStr  = TunnisteStr + KelloStr;

	if (HTMLTextStr.length > 0) {
		if (KelloStr.length > 13) {
			TekstiStr = LajitteleTapahtumat(TekstiStr,HTMLTextStr);
			KelloStr  = LajitteleTapahtumat(KelloStr,HTMLKloStr);
		} else {
			TekstiStr = TekstiStr + "<br \/>" + HTMLTextStr;
			KelloStr  = KelloStr + "<br \/>" + HTMLKloStr;
		}
	}

	document.getElementById(PaivaStr).cells[2].innerHTML = decodeScandChars(KelloStr);
	document.getElementById(PaivaStr).cells[3].innerHTML = decodeScandChars(TekstiStr);
}

// -------------------------------------------------------------------------------
// Konvertoi paivastringi formaatista pp.mm.yyyy javascriptin Date struktuuriksi
// -------------------------------------------------------------------------------

function AsetaPvm(PaivaStr) {

	var d = new Date();
	var Point1 = PaivaStr.indexOf(".");
	var Point2 = PaivaStr.indexOf(".",Point1+1);

	Day   = Number(PaivaStr.substr(0,Point1));
	Month = Number(PaivaStr.substr(Point1+1,Point2));
	Year  = Number(PaivaStr.substr(Point2+1));
	d.setFullYear(Year,Month-1,Day);
	return(d);
}

// -------------------------------------------------------------------------------
// Hae paivays Date struktuurista (d) muodossa pp.mm.yyyy
// -------------------------------------------------------------------------------

function HaePvm(d) {
	return(d.getDate() + '.' + (d.getMonth()+1) + '.' + d.getFullYear());
}


// -------------------------------------------------------------------------------
// Sijoita tapahtuma TxtStr ajallisesti oikeaan rakoon HTMLStr:ssa
// -------------------------------------------------------------------------------

function LajitteleTapahtumat(TxtStr,HTMLStr) {

	var EventTime = Number(TxtStr.substring(5,9));
	var TekstiStr = "";

	// Etsi tapahtumia HTMLStr-stringista ja vertaa niiden kellonaikoja TxtStr:n kellonaikaan

	var CurrEvent  = 0;
	var NextEvent  = 0;
	while ( NextEvent != -1) {
		NextEvent = HTMLStr.indexOf("<!-- ",CurrEvent);  // etsi seuraava <!-- HHMM -->
		if (NextEvent != -1) {  // Seuraava tapahtuma loytyi
			NextEventTime = Number(HTMLStr.substring(NextEvent+5,NextEvent+9));
			if (EventTime < NextEventTime) { // Sijoita tapahtuma tahan valiin
				TekstiStr = HTMLStr.substring(0,NextEvent) + TxtStr + "<br />" + HTMLStr.substring(NextEvent);
				break;
			}
		}
		else {  // Ei loytynyt myohaisempaa tapausta
			TekstiStr = HTMLStr + "<br />" + TxtStr;
		}
		CurrEvent = NextEvent+13; // Hyppaa tunnistestringin <!-- HHMM -->  yli
	}

	return TekstiStr;
}


// ---------------------------------------------------------------
// Taytetaan kalenteritaulu kalenteri.xml:n tiedoilla
// ---------------------------------------------------------------

function TaytaKalenteriTaulu() {

	if(checkReadyState(KalenteriXML)) {

		var TekstiStr  = "";
		var PaivaStr   = "";
		var TyyppiStr  = "";
		var Periodi    = "";
		var Loppupaiva = "";

		var Kalenteri = KalenteriXML.responseXML.documentElement;		// Root element (= HPS_B_tytot_kalenteri)
																		// Kalenteri.xml -tiedostossa

		var Tapahtuma = Kalenteri.getElementsByTagName("tapahtuma");	// Kaikki tapahtumat 'Kalenterissa'. Muita
																		// kuin 'tapahtuma'-nimisia elementteja ei ole.

		for (i=0; i < Tapahtuma.length; i++) {	// Kay lapi kaikki tapahtumat

			Paivalista = Tapahtuma[i].getElementsByTagName("paiva");   // Lista yhteen tapahtumaan liittyvista paivista

			PaivaStr = Paivalista[0].firstChild.data;	// ensimmainen tapahtumaan liittyva paiva
			SepIndex = PaivaStr.indexOf("-",0);  		// tutki onko paivayksessa '-' merkkia, eli onko paivays
														// muotoa 3.12.2008-5.3.2009 vai vain yksittainen paiva

			if (SepIndex == -1) {	// Tapahtumaan liittyy vain yksittaisia paivia

				for (j=0; j < Paivalista.length; j++) {	// sama tapahtuma voi toistua useana eri paivana
					PaivaStr = Paivalista[j].firstChild.data;

					// Kalenteritaulun solujen ID on paivan mukainen stringi (esim. '12.8.2007')
					// Jos paivasolu ei loydy nykyisesta kuukaudesta, niin jatka seuraavalla paivalla

					try { TekstiStr = document.getElementById(PaivaStr).innerHTML }
					catch (err) { continue }

					HandleKalenteriSolu(PaivaStr,TekstiStr,Tapahtuma[i]);
				}
			}
			else { 	// Tapahtuma toistuu periodisesti. PaivaStr sisaltaa alku- ja loppupaivan.

				var CurrDate = new Date();
				var EndDate  = new Date();
				CurrDate = AsetaPvm(PaivaStr.substring(0,SepIndex));
				EndDate  = AsetaPvm(PaivaStr.substring(SepIndex+1));

				Periodi  = Number(Tapahtuma[i].getElementsByTagName("periodi")[0].firstChild.data);
				Peruutuslista = Tapahtuma[i].getElementsByTagName("peruutus");	// Paivat, joina tapahtumaa ei ole

				while (CurrDate <= EndDate) {

					PaivaStr = HaePvm(CurrDate);

					// Kalenteritaulun solujen ID on paivan mukainen stringi (esim. '12.8.2007')
					// Jos paivasolu ei loydy nykyisesta kuukaudesta, niin jatka seuraavalla paivalla

					try { TekstiStr = document.getElementById(PaivaStr).innerHTML }
					catch (err) {
						CurrDate.setDate(CurrDate.getDate() + Periodi);
						continue;
					}

					// Tarkista loytyyko paiva peruutuspaivien listalta

					Found = false;
					for (j = 0; j < Peruutuslista.length; j++) {
						Found = (PaivaStr == Peruutuslista[j].firstChild.data);
						if (Found) { break }
					}

					if (Found) {  // Paiva oli peruutuspaiva
						CurrDate.setDate(CurrDate.getDate() + Periodi);
						continue;
					}

					HandleKalenteriSolu(PaivaStr,TekstiStr,Tapahtuma[i]);

					CurrDate.setDate(CurrDate.getDate() + Periodi);
				}
			}
		}
	}
}


// ---------------------------------------------------------------
// Taytetaan kalenterilista kalenteri.xml:n tiedoilla
// ---------------------------------------------------------------

function TaytaKalenteriLista() {

	if(checkReadyState(KalenteriXML)) {

		var TekstiStr  = "";
		var PaivaStr   = "";
		var TyyppiStr  = "";
		var Periodi    = "";
		var Loppupaiva = "";

		var Kalenteri = KalenteriXML.responseXML.documentElement;		// Root element (= HPS_B_tytot_kalenteri)
																		// Kalenteri.xml -tiedostossa

		var Tapahtuma = Kalenteri.getElementsByTagName("tapahtuma");	// Kaikki tapahtumat 'Kalenterissa'. Muita
																		// kuin 'tapahtuma'-nimisia elementteja ei ole.

		var Teksti = "";
		var klo = "";
		var Paiva = "";
		var TyyppiStr = "";

		for (i=0;i<Tapahtuma.length;i++) {

			Paivalista = Tapahtuma[i].getElementsByTagName("paiva");   // Lista yhteen tapahtumaan liittyvista paivista

			PaivaStr = Paivalista[0].firstChild.data;	// ensimmainen tapahtumaan liittyva paiva
			SepIndex = PaivaStr.indexOf("-",0);  		// tutki onko paivayksessa '-' merkkia, eli onko paivays
														// muotoa 3.12.2008-5.3.2009 vai vain yksittainen paiva

			if (SepIndex == -1) {	// Tapahtumaan liittyy vain yksittaisia paivia

				for (j=0;j<Paivalista.length;j++) {	// sama tapahtuma voi toistua useana eri paivana
					PaivaStr = Paivalista[j].firstChild.data;

					// Kalenteritaulun solujen ID on paivan mukainen stringi (esim. '12.8.2007')
					// Jos paivasolu ei loydy nykyisesta kuukaudesta, niin jatka seuraavalla paivalla

					try {
						TekstiStr = document.getElementById(PaivaStr).cells[3].innerHTML;
						KelloStr  = document.getElementById(PaivaStr).cells[2].innerHTML;
					}
					catch (err) { continue }

					HandleKalenteriRivi(PaivaStr,TekstiStr,KelloStr,Tapahtuma[i]);
				}
			}

			else { 	// Tapahtuma toistuu periodisesti. PaivaStr sisaltaa alku- ja loppupaivan.

				var CurrDate = new Date();
				var EndDate  = new Date();
				CurrDate = AsetaPvm(PaivaStr.substring(0,SepIndex));
				EndDate  = AsetaPvm(PaivaStr.substring(SepIndex+1));

				Periodi  = Number(Tapahtuma[i].getElementsByTagName("periodi")[0].firstChild.data);
				Peruutuslista = Tapahtuma[i].getElementsByTagName("peruutus");	// Paivat, joina tapahtumaa ei ole

				while (CurrDate <= EndDate) {

					PaivaStr = HaePvm(CurrDate);

					// Kalenteritaulun solujen ID on paivan mukainen stringi (esim. '12.8.2007')
					// Jos paivasolu ei loydy nykyisesta kuukaudesta, niin jatka seuraavalla paivalla

					try {
						TekstiStr = document.getElementById(PaivaStr).cells[3].innerHTML;
						KelloStr  = document.getElementById(PaivaStr).cells[2].innerHTML;
					}
					catch (err) {
						CurrDate.setDate(CurrDate.getDate() + Periodi);
						continue;
					}

					// Tarkista loytyyko paiva peruutuspaivien listalta

					Found = false;
					for (j = 0; j < Peruutuslista.length; j++) {
						Found = (PaivaStr == Peruutuslista[j].firstChild.data);
						if (Found) { break }
					}

					if (Found) {  // Paiva oli peruutuspaiva
						CurrDate.setDate(CurrDate.getDate() + Periodi);
						continue;
					}

					HandleKalenteriRivi(PaivaStr,TekstiStr,KelloStr,Tapahtuma[i]);

					CurrDate.setDate(CurrDate.getDate() + Periodi);
				}
			}
		}
	}
}

// ---------------------------------------------------------------
// Taytetaan etusivun sivussa Seur.Tapahtuma boxi
// ---------------------------------------------------------------

function TaytaSeuraavaTapahtuma() {

	if(checkReadyState(KalenteriXML)) {
		var Kalenteri = KalenteriXML.responseXML.documentElement;
		var txt = "";
		var Paivays = "";
		var NextPaivays = "";
		x  =Kalenteri.getElementsByTagName("tapahtuma");

		// Kaydaan lapi tapahtumat ja etsitaan seuraava tapahtuma

		var Nyt = new Date();
		var CurrDate = Nyt;
		var NextDate = Nyt;


		for (i=0;i<x.length;i++) {

			xx=x[i].getElementsByTagName("paiva");

			for (j=0;j<xx.length;j++) {	// sama tapahtuma voi toistua useana eri paivana
				Paivays = xx[j].firstChild.data;

				yy = x[i].getElementsByTagName("kello");
				try {
					hour = yy[0].firstChild.data;
					hour = hour.substring(0,2);
					if ((hour[1] == '-') || (hour[1] == ':')) {
						hour = "0" + hour[0];
					}
				}
				catch (er) { hour = "22"}

				CurrDate = GetDateFromStr(Paivays);
				CurrDate.setHours(Number(hour),0,0);

				if (CompareDates(CurrDate,Nyt) > 0) {
					if (CompareDates(CurrDate,NextDate) < 0) {
						NextDate    = CurrDate;
						NextPaivays = Paivays;
						NextHours = yy[0].firstChild.data;
						yy=x[i].getElementsByTagName("teksti");
						txt = yy[0].firstChild.data;
					}
				}
			}
		}
	}
}


// ---------------------------------------------------------------
// Luetaan XML-tiedostoja
// ---------------------------------------------------------------


function LataaTiedotteetXML(url,param)
{
	TiedotteetXML = null;

	// code for Mozilla, etc.
	if (window.XMLHttpRequest)
		{ TiedotteetXML = new XMLHttpRequest(); }
	// code for IE
	else if (window.ActiveXObject)
		{ TiedotteetXML = new ActiveXObject("Microsoft.XMLHTTP") }

	if (TiedotteetXML != null) {
		if (param == 0) {
			TiedotteetXML.onreadystatechange = TaytaTiedoteLista;
		} else {
			TiedotteetXML.onreadystatechange = ViimeisinTiedote;
		}
		TiedotteetXML.open("GET",url,true);
		TiedotteetXML.send(null);
	}
	else { alert("Selaimesi ei tue XMLHTTP-protokollaa. Tiedotukset eiv&auml; n&auml; kunnolla.") }
}

function LataaKalenteriXML(url,param)
{
	KalenteriXML = null;

	// code for Mozilla, etc.
	if (window.XMLHttpRequest)
		{ KalenteriXML = new XMLHttpRequest(); }
	// code for IE
	else if (window.ActiveXObject)
		{ KalenteriXML = new ActiveXObject("Microsoft.XMLHTTP") }

	if (KalenteriXML != null) {
		if (param == 0) {
			KalenteriXML.onreadystatechange = TaytaKalenteriTaulu;
		}
		if (param == 1) {
			KalenteriXML.onreadystatechange = TaytaKalenteriLista;
		}
		if (param == 2) {
			KalenteriXML.onreadystatechange = TaytaSeuraavaTapahtuma;
		}

		KalenteriXML.open("GET",url,true);
		KalenteriXML.send(null);
	}
	else { alert("Selaimesi ei tue XMLHTTP-protokollaa. Kalenteri ei n&auml; kunnolla.") }
}


function checkReadyState(obj)
{
	if(obj.readyState == 4)
	{
		if(obj.status == 200) {
			return true;
		}
		else {
			alert("Tiedoston lukeminen ei onnistunut ?");
		}
	}
}


function GetDateFromStr(dayStr)
{
	var day = new Date();
	var Day   = "";
	var Month = "";
	var Year  = "";
	var i = 0;

	while (dayStr.charAt(i) != ".") { Day += dayStr.charAt(i++); }
	i++;
	while (dayStr.charAt(i) != ".") { Month += dayStr.charAt(i++); }
	i++;
	while (i < dayStr.length) { Year += dayStr.charAt(i++); }

	day.setFullYear(Number(Year),Number(Month)-1,Number(Day))
	return (day);
}


// ---------------------------------------------------------------
// Tulostetaan kaikki tiedotteet
// ---------------------------------------------------------------

function TaytaTiedoteLista()
{
	if(checkReadyState(TiedotteetXML)) {
		var response = TiedotteetXML.responseXML.documentElement;
		var txt="";

		var x=response.getElementsByTagName("tiedote");
		var day = new Date();
		var dayStr = "";
		var WeekDay = "";
		for (i=0;i<x.length ;i++) {

			xx=x[i].getElementsByTagName("paiva");
			try {
				dayStr = xx[0].firstChild.data;
				day = GetDateFromStr(dayStr);
				WeekDay = WeekDays[day.getDay()];
				WeekDay = WeekDay.substring(0,2);
				WeekDay = WeekDay.toLowerCase();
				txt += "<table>";
				txt += "<tr valign=\"top\"><td class=\"tiedote_paivays\">";
				txt += WeekDay + " " + dayStr + "<\/td>";
			}
			catch (er) {}

			xx=x[i].getElementsByTagName("teksti");
			try {
				txt += "<td class=\"tiedote_teksti\">" + xx[0].firstChild.data + "<\/td><\/tr><\/table><hr>";
			}
			catch (er) {}
		}

		document.getElementById('tiedotelista').innerHTML=decodeScandChars(txt);

	}
}


// ---------------------------------------------------------------
// Poistetaan tiedotteessa olevat mahdolliset html tagit, jotta
// ne eivät tule näkyviin Viim.tiedote-boxissa.
// ---------------------------------------------------------------


function RemoveTags(str) {
	var DummyStr = str;
	var StartIndex, EndIndex;

	StartIndex = DummyStr.search("<");
	while (StartIndex != -1) {
		EndIndex = DummyStr.search(">");
		DummyStr = DummyStr.substring(0,StartIndex-1) + DummyStr.substring(EndIndex+1);
		StartIndex = DummyStr.search("<");
	}
	return(DummyStr);
}

// ---------------------------------------------------------------
// Otetaan stingista korkeintaan ensimmaiset 80 merkkia ja
// katkaistaan stringi viimeiseen kokonaiseen sanaan.
// ---------------------------------------------------------------

function TruncateStr(str) {
	var DummyStr = str;
	var Index;

	if (str.length > 90) {
		Index = 90;
		while (str.charAt(Index) != ' ') { Index-- };
		DummyStr = str.substring(0,Index);
	}
	return(DummyStr);
}


// ---------------------------------------------------------------
// Taytetaan etusivun 'Viim.tiedote' boxi
// ---------------------------------------------------------------

function ViimeisinTiedote()
{
	if(checkReadyState(TiedotteetXML)) {
		var response = TiedotteetXML.responseXML.documentElement;
		var txt="";
		var TruncTxt = "";
		var x=response.getElementsByTagName("tiedote");
		var day = new Date();
		var dayStr = "";
		var WeekDay = "";


		// Hae tapahtumat joiden status > 0 ja lajittele ne statuksen mukaan

		var EventArray = new Array();
		var index = 0;
		var status, status2;

		for (i=0;i<x.length;i++) {
			xx = x[i].getElementsByTagName("status");
			status = Number(xx[0].firstChild.data);
			if (status > 0) {

				if (EventArray.length == 0) {
					EventArray[0] = x[i];
				}
				else {
					for (j = EventArray.length-1; j >= 0; j--) {
						status2 = EventArray[j].getElementsByTagName("status")[0].firstChild.data;
						if (status > status2) {
							EventArray[j+1] = EventArray[j];
							if (j == 0) {
								EventArray[0] = x[i];
							}
						} else
						{
							EventArray[j+1] = x[i];
							break;
						}
					}
				}
			}
		}


		// Tulosta tapahtumat joiden status > 0

		for (i=0; i < EventArray.length; i++) {

			xx=EventArray[i].getElementsByTagName("paiva");
			try {
				dayStr = xx[0].firstChild.data;
				day = GetDateFromStr(dayStr);
				WeekDay = WeekDays[day.getDay()];
				WeekDay = WeekDay.substring(0,2);
				WeekDay = WeekDay.toLowerCase();
//				txt += "<i>" + WeekDay + " " + dayStr + "<\/i><br \/><div style=\"height:3px\"><\/div>";
				txt += "<div style=\"font-style: italic; margin-bottom: 2px\">" + WeekDay + " " + dayStr + "<\/div>";
			}
			catch (er) {}

			xx=EventArray[i].getElementsByTagName("teksti");
			try {
				TruncTxt = RemoveTags(xx[0].firstChild.data);
				if (TruncTxt.length > 90) {
					TruncTxt = TruncateStr(TruncTxt) + " ... ";
					TruncTxt += "<a href=\"tiedotteet.html\" target=\"sisalto_frame\">lis&auml;&auml;<\/a>";
				}

				txt += TruncTxt + "<br \/>";
			}
			catch (er) {}

			if ((i < 2) && (i < EventArray.length -1)) {
				txt += "<hr>";
			}
		}

		document.getElementById('viimetiedote').innerHTML=decodeScandChars(txt);
	}
}


// ---------------------------------------------------------------
// Koodataan mahdolliset skandit oikealla tavalla.
// ---------------------------------------------------------------

function decodeScandChars(teksti)
{
	var uusiteksti = encodeURI(teksti);

	uusiteksti = uusiteksti.replace(/\%C3\%83\%C2\%A4/g,"&auml;");
	uusiteksti = uusiteksti.replace(/\%C3\%83\%C2\%B6/g,"&ouml;");
	uusiteksti = uusiteksti.replace(/\%C3\%83\%C2\%A5/g,"&#229;");
	uusiteksti = uusiteksti.replace(/\%C3\%83\%C2\%84/g,"&Auml;");
	uusiteksti = uusiteksti.replace(/\%C3\%83\%C2\%96/g,"&Ouml;");
	uusiteksti = uusiteksti.replace(/\%C3\%83\%C2\%85/g,"&#197;");

	return(decodeURI(uusiteksti));
}


// ---------------------------------------------------------------
// Avataan pikku ikkuna
// ---------------------------------------------------------------

function openWin(URL,winName,leveys,korkeus) {
	newWindow = window.open(URL,winName,'toolbar=no,width='+leveys+',height='+korkeus+',status=no,scrollbars=no,resize=yes,menubar=no');
	newWindow.focus();
}

function openWin2(URL,winName,leveys,korkeus) {
	newWindow = window.open(URL,winName,'toolbar=no,width='+leveys+',height='+korkeus+',status=no,scrollbars=yes,resize=yes,menubar=no');
	newWindow.focus();
}
