function sendUsername() {
	var formi 		= document.chUsername;
	var forumTunnus	= formi.username.value;
	var msg 		= "";
	
	if (forumTunnus.length < 3 || forumTunnus.length > 25) msg += "Nimimerkin pituuden tulee olla 3-25 merkkiä.\n";

	if (msg == ""){
		formi.submit();
	}else {
	 	alert(msg);
		formi.username.focus();
	}
}

function sendPassword() {
	var formi 			= document.chPassword;
	var curPassword		= formi.curPassword.value;
	var newPassword1	= formi.password1.value;
	var newPassword2	= formi.password2.value;
	var cp				= curPassword.toLowerCase();
	var np1				= newPassword1.toLowerCase();
	var np2				= newPassword2.toLowerCase();
	var msg 			= "";
	if (cp == np1) msg = "Uusi ja nykyinen salasanasi ovat liian samankaltaiset.\n";
	if (np1.length < 6 || np1.length > 20) msg += "Salasanan pituuden tulee olla 6-20 merkkiä.\n";
	if (newPassword1 != newPassword2) msg += "Antamasi salasanat eivät täsmää.\n";

	if (msg == ""){
		formi.submit();
	}else {
	 	alert(msg);
		formi.password1.value = '';
		formi.password2.value = '';
		formi.password1.focus();
	}
}

function sendMember() {
	var formi			= document.memberDetails;
	var aloitusVuosi	= formi.aloitusVuosi.value;
	var valmistumisVuosi= formi.valmistumisVuosi.value;
	var etunimi			= formi.etunimi.value;
	var sukunimi		= formi.sukunimi.value;
	var lahiosoite		= formi.lahiosoite.value;
	var postinro		= formi.postinro.value;
	var postitmp  		= formi.postitmp.value;
	var email			= formi.email.value;
//	var born			= formi.born.value;
	var msg				= "";

	if (aloitusVuosi=="") msg += " - Opintojen aloitusvuosi on puuttuu\n";
	if (valmistumisVuosi=="") msg += " - Valmistumisvuosi on puuttuu\n";
	
	if (!valid_name(etunimi, 2, 50)) msg += " - Etunimi on virheellinen (min 2 kirjainta [a-ö])\n";
	if (!valid_name(sukunimi, 2, 50)) msg += " - Sukunimi on virheellinen (min 2 kirjainta [a-ö])\n";
	if (lahiosoite=="") msg += " - Lähiosoite puuttuu\n";
	if (postinro=="") msg += " - Postinumero puuttuu\n";
	if (postitmp=="") msg += " - Postitoimipaikka puuttuu\n";
	if (!valid_email(email)) msg += " - Sähköpostiosoite on virheellinen\n";

	if (postinro.length > 0 && postinro.length < 5) msg += " - Postinumero on virheellinen (min. 5 merkkiä).\n";

	if (msg == "") {
		formi.submit();
	}else {
		msg = "Osa pakollista tiedoista puuttuu ja/tai on virheellisiä:\n" + msg;
		alert(msg);
	}
}

function valid_name(name, minlength, maxlength){
	// only letters [a-ä], whitespace and special character "-"  is allowed
	// name must be $minlength - $maxlength characters long
	
	var reg = new RegExp("^([a-öA-Ö-]){2,50}$");
//	var reg = new RegExp("^([[:space:]a-ö-]){" + minlength + "," + maxlength + "}$");

	if (reg.test(name))
		return true;
	else
		return false;
}


function valid_email(email) {
 	var reg = new RegExp("^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$");

	if (reg.test(email))
		return true;
	else
		return false;
}


function sendGallery() {
	var formi 	= document.galleryDetails;
	var nimi 	= formi.nimi.value;
	var pvm 	= formi.pvm.value;
	var kpl 	= formi.kpl.value;
	var kansio	= formi.kansio.value;
	var alkuosa = formi.alkuosa.value; 
	var linkki	= formi.linkki.value;
	var msg = "";

	if (nimi == "") msg += "Nimi on pakollinen tieto.\n";
	if (pvm == "") msg += "Päivämäärä on pakollinen tieto.\n";
	if (pvm != "" && !checkDate(pvm)) msg += "Päivämäärän tulee olla muodossa [pp.kk.vvvv].\n";
	if (kansio == "" && linkki == "") msg += "Kansio on pakollinen tieto, kun kyseessä ei ole pelkkä linkki ulkoiseen kuvagalleriaan.\n";
	if (kpl == "" && linkki != "") msg += "Jos kyseessä on pelkkä linkki ulkoiseen kuvagalleriaan, laita kohtaan \"Kuvia\" 0 kpl.\n";
	if (linkki == "" && alkuosa == "") msg += "Kuvien alkuosa on pakollinen tieto, kun kyseessä ei ole pelkkä linkki ulkoiseen kuvagalleriaan.\n";

	if (msg == "") {
		formi.submit();
	}else {
		alert(msg);
	}
}

function openWindow(){			
	window.open("","popup",'toolbar=0,location=0,scrollbars=0,width=760,height=650,left=100,top=100, resizable=1');
}

function sendEvent() {
	var formi = document.eventDetails;
	var nimi  = formi.nimi.value;
	var pvm   = formi.pvm.value;
	var alkaa = formi.alkaa.value;
	var loppuu= formi.loppuu.value; 
	var msg   = "";

	if (nimi == "") msg += "Nimi on pakollinen tieto.\n";
	if (pvm == "") msg += "Päivämäärä on pakollinen tieto.\n";
	if (pvm != "" && !checkDate(pvm)) msg += "Päivämäärän tulee olla muodossa [pp.kk.vvvv].\n";
	if (alkaa != "" && !checkTime(alkaa)) msg += "Alkamisajan tulee olla muodossa [tt:mm].\n";
	if (loppuu!= "" && !checkTime(loppuu)) msg += "Loppumisajan tulee olla muodossa [tt:mm].\n";

	if (msg == "") {
		formi.submit();
	}else {
		alert(msg);
	}
}

function checkDate(strDate) {
// Päivämäärien pitäisi olla muodossa [p]p.[k]k.vvvv //
// Mahdolliset variaatiot:													 //
// p.k.vvvv | pp.k.vvvv | p.kk.vvvv | pp.kk.vvvv		 //
	var pituus = strDate.length;
	if (pituus < 8)	return false;
	var piste1 = strDate.indexOf(".");
	var piste2 = strDate.lastIndexOf(".");

	if (piste1 == piste2) return false;
	if (!(piste1 == 1 || piste1 == 2)) return false;

	var loppuosa = strDate.substring(piste1+1, pituus);	
	if (!(loppuosa.indexOf(".") == 1 || loppuosa.indexOf(".") == 2) || loppuosa.indexOf(".") != loppuosa.lastIndexOf(".")) return false;

	var array 	= strDate.split(".");
	day 		= array[0];
	month 	= array[1];
	year		= array[2];
	
	var daysInMonth = 31;
	if (month == 4 || month == 6 || month == 9 || month == 11) daysInMonth = 30;
	if (month == 2)	daysInMonth = daysInFebruary(year);

	if (isNaN(day) || isNaN(month) || isNaN(year)) return false;
	if (day < 1 || day > daysInMonth) return false;
	if (month < 1 || month > 12) return false;
	if (year < 1900 || year > 2100) return false;

	return true;
}

function checkTime(strTime) {
// Ajan tulee olla muodossa://
// tt:mm | t:mm | tt				//
	if (strTime.length != 5 && strTime.length != 4 && strTime.length != 2) return false;
	if (strTime.length == 5 && strTime.indexOf(":") != 2) return false;
	if (strTime.length == 4 && strTime.indexOf(":") != 1) return false;
	if (strTime.length == 2) {
		strTunnit = strTime;
	}else {
		strTunnit = strTime.substring(0,strTime.indexOf(":"));
	}
	var strMinuutit = "00";
	if (strTime.length != 2) strMinuutit = strTime.substr(strTime.indexOf(":") + 1,2);

	var intTunnit = parseInt(strTunnit);
	var intMinuutit = parseInt(strMinuutit);
	if (isNaN(Number(strTunnit))) return false;
	if (isNaN(Number(strMinuutit))) return false;
	if (intTunnit < 0 || intTunnit > 24) return false;
	if (intMinuutit < 0 || intMinuutit > 59) return false;
	return true;
}

function daysInFebruary (year){
// February has 29 days in any year evenly divisible by four,
// EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function getObj(name)
{
  if (document.getElementById)
  {
  	this.obj = document.getElementById(name);
	this.style = document.getElementById(name).style;
  }
  else if (document.all)
  {
	this.obj = document.all[name];
	this.style = document.all[name].style;
  }
  else if (document.layers)
  {
   	this.obj = document.layers[name];
   	this.style = document.layers[name];
  }
  return this.obj;
}
