function toggleChildren(obj){
	while( obj.nextSibling ) {
		if( obj.nextSibling.getAttribute("level") != "1" && !obj.nextSibling.getAttribute("description") ){
			if( obj.nextSibling.style.display == "none" )
				obj.nextSibling.style.display = "block";
			else
				obj.nextSibling.style.display = "none";
			obj = obj.nextSibling;
		}
		else if(obj.nextSibling.getAttribute("description")){
			obj = obj.nextSibling;
		}
		else return;
	}
}

//--------------------------------------------
function OpenPopUpImage(url){
//--------------------------------------------
	window.open(url,'image','toolbar=0,menubar=0,scrollbars=1,scrolling=1,resizable=1,width=600,height=600');
}



//--------------------------------------------
function PopUp(url,windowName,features){
//--------------------------------------------
	window.open(url,windowName,features);
}

//--------------------------------------------
function SubmitForm(frmName, txtIsEmpty){
//--> Lomakkeen lähetys ja tarkistus että pakollisissa kentissä on kirjoitusta.
//--------------------------------------------
	var alertMsg	= new String();			//Stringiin kerätään ilmoitus puuttuvista pakollisista tiedoista.
	var CheckboxName= new String();			//Lomakkeella olevan pakollisen checkbox -kentän nimi.
	var isChecked	= new Boolean(false);	//Onko yhtään pakollista checkboxia valittu.

	if(document.forms[frmName]){
		objEl = document.forms[frmName].elements;
		//käydään lomakkeen kentätä läpi ja otetaan tyhjät pakolliset kentät talteen...
		for(var i=0; i < objEl.length; i++ ){
			//tarkistetaan pakolliset tekstikentät
			if(objEl[i].getAttribute("IsOptional") == 0 && replace(objEl[i].value," ", "").length < 1){
				alertMsg = alertMsg + objEl[i].title + " " + txtIsEmpty + ". \n"
			}
			//tarkistetaan pakollisen checkboxin tila
			else if(objEl[i].getAttribute("IsOptional") == 0 && objEl[i].type == "checkbox"){
				CheckboxName = objEl[i].title;
				if(isChecked == false){
					if(objEl[i].checked){
						isChecked = true;
					}
				}
			}
		}//for loppuu
		
		//tarkistetaan pakollisen checkboxien tila, jos yhtään ei ole valittu, lisätään virheilmoitus.
		if(CheckboxName.length > 0){
			if(isChecked == false){
				alertMsg = alertMsg + CheckboxName + " " + txtIsEmpty;
			}
		}

		//tarkistetaan tuliko puutteita...
		if(alertMsg.length < 1){
			return true;
		}
		else{
			alert(alertMsg);
			return false;
		}

	}

}


//--------------------------------------------
function replace( sString, sStr1, sStr2 ) {
//--> Tarkistaa stringin, huomioi myös välilyönnit.
//--------------------------------------------
	var arrTemp = sString.split( sStr1 );
	return arrTemp.join( sStr2 );
}

//--------------------------------------------
function getImgDetails( sImageId ){
//--------------------------------------------
	obj = document.getElementById( sImageId );
	document.getElementById("strWidth").innerHTML = " "+ obj.width +"px";
	document.getElementById("strHeight").innerHTML = " "+obj.height +"px";
	if(obj.fileSize) document.getElementById("strFileSize").innerHTML = " "+ obj.fileSize +" bytes";
}
//--------------------------------------------
function getImgSize( sImageId ){
//--------------------------------------------
	obj = document.getElementById( sImageId );
	return obj.fileSize;
}


//--------------------------------------------
function SubmitCalendarForm(frmName, txtIsEmpty, txtCheckDates, txtCheckTimes){
//--> Tapahuman lisäyslomakkeen lähetys ja tarkistus että pakollisissa kentissä on kirjoitusta.
//--------------------------------------------
	var formIsFilled	= new Boolean(false); 	//Onko lomakkeen pakolliset kentät täytetty.
	var datesAreFine	= new Boolean(false);	//Onko pvm-kenttien arvot ok.
	var isParticipant	= new Boolean(false);	//Onko osallistujamäärä kentän arvo ok.
	
	//Tarkistetaan kentät, puuttuuko pakollisia tietoja.
	//Funktio lähettää omat virheilmoituksensa, jos pakollisia kenttiä ei ole täytetty.
	//formIsFilled -sisältää true / false
	formIsFilled = SubmitForm(frmName, txtIsEmpty);

	//Tarkistetaan päivämääräkentät ja niiden arvot (calendar.js).
	//Funktio lähettää omat virheilmoituksensa, jos pvm:t eivät täsmää.
	//datesAreFine -sisältää true / false
	datesAreFine = checkCalendarDates(frmName, txtCheckDates, txtCheckTimes);

	//Tarkistetaan osallistujamääräkentän arvo.
	//Funktio lähettää omat virheilmoituksensa, jos kenttä on täytetty, mutta arvot eivät täsmää.
	//isParticipant -sisältää true / false
	//isParticipant = checkNumber("Osallistujamäärä on virheellinen", frmName);


	//tarkistetaan tuliko puutteita...
	if(formIsFilled == true && datesAreFine == true){
		return true;
	}
	else{
		return false;
	}


}

//-----------------------------------------------------------------------------
function checkNumber (strError,frmName) {
//-----------------------------------------------------------------------------
	var form	= document.forms[frmName];
	var value	= form.MaxParticipants.value;
   	var ValidChars	= "0123456789";
   	var IsNumber	= true;
   	var Char;
	var MAX_VALUE_LONG = 2147483647;

	if(replace(value," ", "").length > 0){
	//Osallistujamäärä-kenttään on syötetty jotain muuta kuin välilyötejä.
	//Tarkistetaan että kentässä on vain numeroita ja että arvo ei ole yli clng()-function.
		for (i = 0; i < value.length && IsNumber == true; i++){ 
			Char = value.charAt(i); 
			if (ValidChars.indexOf(Char) == -1){
				IsNumber = false;
			}
		}
		if(IsNumber == false || value > MAX_VALUE_LONG){
			alert(strError)
			IsNumber = false;
		}
		 
		return IsNumber;
	}
	else{
	//Osallistujamäärä-kenttä on tyhjä.
		return true;
	}
}


//--------------------------------------------
function SubmitNewsForm(frmName, txtIsEmpty){
//--> Lomakkeen lähetys ja tarkistus että pakollisissa kentissä on kirjoitusta.
//--------------------------------------------
	var alertMsg	= new String();			//Stringiin kerätään ilmoitus puuttuvista pakollisista tiedoista.
	var CheckboxName= new String();			//Lomakkeella olevan pakollisen checkbox -kentän nimi.
	var isChecked	= new Boolean(false);	//Onko yhtään pakollista checkboxia valittu.

	if(document.forms[frmName]){
		objEl = document.forms[frmName].elements;
		//käydään lomakkeen kentätä läpi ja otetaan tyhjät pakolliset kentät talteen...
		for(var i=0; i < objEl.length; i++ ){
			//tarkistetaan pakolliset tekstikentät
			if(objEl[i].getAttribute("IsOptional") == 0 && replace(objEl[i].value," ", "").length < 1){
				alertMsg = alertMsg + objEl[i].title + " " + txtIsEmpty + ". \n"
			}
			//tarkistetaan pakollisen checkboxin tila
			else if(objEl[i].getAttribute("IsOptional") == 0 && objEl[i].type == "checkbox"){
				CheckboxName = objEl[i].title;
				if(isChecked == false){
					if(objEl[i].checked){
						isChecked = true;
					}
				}
			}
		}//for loppuu
		

		//tarkistetaan tuliko puutteita...
		if(alertMsg.length < 1){
			return true;
		}
		else{
			alert(alertMsg);
			return false;
		}

	}

}


function TarkastaEmailit(sLahettaja, sVastaanottaja)
{
	var Virhe;
	Virhe="";
	
	if (emailCheck(sLahettaja)==false) {Virhe=1};
	if (emailCheck(sVastaanottaja)==false) {Virhe=Virhe + 2};
	
//	if (Virhe.length>0){
//		alert(Virhe);
//		return false;
//		}
//	if (Virhe.length==0){return true;}

	return Virhe;
}


function emailCheck (emailStr) {

var checkTLD=1;
var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^\\s" + specialChars + "\]";
var quotedUser="(\"[^\"]*\")";
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=emailStr.match(emailPat);

if (matchArray==null) {
//alert("Email address seems incorrect (check @ and .'s)");
return false;
}
var user=matchArray[1];
var domain=matchArray[2];

for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
//alert("Ths username contains invalid characters.");
return false;
   }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
//alert("Ths domain name contains invalid characters.");
return false;
   }
}

if (user.match(userPat)==null) {
//alert("The username doesn't seem to be valid.");
return false;
}
var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {

// this is an IP address

for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
//alert("Destination IP address is invalid!");
return false;
   }
}
return true;
}

var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
//alert("The domain name does not seem to be valid.");
return false;
   }
}

if (checkTLD && domArr[domArr.length-1].length!=2 && 
domArr[domArr.length-1].search(knownDomsPat)==-1) {
//alert("The address must end in a well-known domain or two letter " + "country.");
return false;
}

if (len<2) {
//alert("This address is missing a hostname!");
return false;
}

return true;
}


//--------------------------------------------
function TarkastaAihealueet(frmName, txtIsEmpty, CheckboxName){
//--------------------------------------------
// Käytetään taphatuman ja hankkeen lisäämisessä.
	var valittuja=0;
	if(document.forms[frmName]){
		objEl = document.forms[frmName].elements;
		document.forms[frmName].k_AihealuePolku1.value="";
		document.forms[frmName].k_AihealuePolku2.value="";
		document.forms[frmName].k_AihealuePolku3.value="";
		
		//käydään lomakkeen kentätä läpi ja tarkastetaan tarvittavat checkboxit...
		for(var i=0; i < objEl.length; i++ ){
			if(objEl[i].type == "checkbox"){
				if(objEl[i].name +'=='+ CheckboxName){ //tarkistetaan että kyseessä on halutut checkboxit.
					if(objEl[i].checked){
						valittuja++;
						if (valittuja==1){document.forms[frmName].k_AihealuePolku1.value=objEl[i].value;}
						if (valittuja==2){document.forms[frmName].k_AihealuePolku2.value=objEl[i].value;}
						if (valittuja==3){document.forms[frmName].k_AihealuePolku3.value=objEl[i].value;}
						if (valittuja>3){
								alert(txtIsEmpty);
								return false;
						}			
					}
				}		
			}
		}//for loppuu
		
		return true;
	}

}


function printPage() {
	var win = window.open(window.location.href + "&print=true", "printPage", "toolbar=1,menubar=1,scrollbars=1,scrolling=yes,resizable=no,width=650,height=500");
	win.focus();
}

//--------------------------------------------
function OpenPrintWindow(Obj){
//--------------------------------------------
	//alert('Obj.href=' + Obj.href);
	if(typeof Obj == "string"){
		var oWin = window.open(Obj, "PrintWindow", "toolbar=1,menubar=1,scrollbars=1,scrolling=yes,resizable=no,width=650,height=500");
		oWin.focus();
	}else{
		var oWin = window.open(Obj.href, Obj.name, "toolbar=1,menubar=1,scrollbars=1,scrolling=yes,resizable=no,width=650,height=500");
		oWin.focus();
	}
}
