﻿/*
*
*	TODO:
*	- Skandikirjaimet käyttöön
*
*		
*/

var phoneNumber = "";
var mobileNumber = "";
var phoneCode = "";
var mobileCode = "";
var countryIsSelected = false;

function setLanguage(lang) {
	sallitutMerkit = new Object();
	viesti = new Object();
	oletus = new Object();
	switch (lang) {
		
		
		case 'fi': default:
		
		//
		// Suomenkieliset tekstit
		//
		viesti.ok						= "OK"
		viesti.pakollinen				= "Tämä kenttä on pakollinen"
		viesti.erikoismerkki			= "Käytit erikoismerkkejä joita ei saa käyttää. /sallitut_merkit/."
		viesti.oikeinkirjoitus			= "Tarkista oikeinkirjoitus. Ehdotus: /ehdotus/."
		viesti.eiVoiLähettää			= "Lomakkeessa on löytynyt virheitä. Ole hyvä ja tarkista"
		viesti.postinumeronpituus4		= "Postinumero on väärän pituinen. Postinumeron pitää sisältää 4 merkkiä."
		viesti.postinumeronpituus5		= "Postinumero on väärän pituinen. Postinumeron pitää sisältää 5 merkkiä."
		viesti.puhelinMerkit			= "Vain numerot ovat sallittuja. Kaikki muut merkit poistettu."
		viesti.outoNumero				= "Puhelinnumerosi ei ala 0:lla eikä 358:lla. Tarkista numerosi."
		viesti.badEmail					= "Sähköpostisi on virheellinen. Tarkista kaikki merkit."
		
		oletus.etunimi					= ""
		oletus.sukunimi					= ""
		oletus.katu						= ""
		oletus.yritys					= ""
		oletus.postinumero				= ""
		oletus.postitoimipaikka			= "Kirjoita isoilla kirjaimilla, esim. TURKU"
		oletus.puhelin					= ""
		oletus.matkapuhelin				= ""
		oletus.email					= ""
		oletus.lisatiedot				= "Kerro lisätietokentässä yhteydenoton syy, esim. Olen muuttanut, vanha osoite on Mutkakatu2."

		sallitutMerkit.nimi				= "Sallitut merkit ovat kirjaimet, väliviiva, välilyönti sekä heittomerkki"
		sallitutMerkit.katu				= "Sallitut merkit ovat kirjaimet, numerot, väliviiva sekä välilyönti"
		sallitutMerkit.postinumero		= "Vain numerot ovat sallittuja"
		sallitutMerkit.postitoimipaikka	= "Sallitut merkit ovat kirjaimet, väliviiva sekä välilyönti"
		sallitutMerkit.puhelin			= "Vain numerot ovat sallittuja"
		sallitutMerkit.email			= "Sallitut merkit ovat kirjaimet, numerot, ala- ja väliviia, piste sekä @-merkki"
		sallitutMerkit.numerotJaPilkku	= "Vain numerot ja pilkku ovat sallittuja"
		sallitutMerkit.vainNumerot		= "Vain numerot ovat sallittuja"
		sallitutMerkit.yritys			= "Sallitut merkit ovat kirjaimet, numerot, väliviiva sekä välilyönti"
		
		break
		case 'en':
		
		
		//
		// Englanninkieliset tekstit
		//
		viesti.oletus					= ""
		viesti.ok						= "OK"
		viesti.pakollinen				= "This field is required"
		viesti.erikoismerkki			= "You have used special characters that are not allowed on this field. /sallitut_merkit/."
		viesti.oikeinkirjoitus			= "Please check the spelling. /ehdotus/."
		viesti.eiVoiLähettää			= "Unfortunetaly your request sheet has errors. Please check the filled information."
		viesti.postinumeronpituus4		= "Your zip code is incorrect. Zip code includes 4 characters."
		viesti.postinumeronpituus5		= "Your zip code is incorrect. Zip code includes 5 characters."
		viesti.puhelinMerkit			= "Only numbers are allowed on this field. Other characters have been deleted."
		viesti.outoNumero				= "Your phone number doesn’t start with 0 or you country area code. Please check your phone number."
		viesti.badEmail					= "Incorrect e-mail address. Please re-enter."
		
		oletus.etunimi					= ""
		oletus.sukunimi					= ""
		oletus.katu						= ""
		oletus.yritys					= ""
		oletus.postinumero				= ""
		oletus.postitoimipaikka			= "Write with capitals, ie. LONDON or CO CORK"
		oletus.puhelin					= ""
		oletus.matkapuhelin				= ""
		oletus.email					= ""
		oletus.lisatiedot				= "Kerro lisätietokentässä yhteydenoton syy, esim. Olen muuttanut, vanha osoite on Mutkakatu2."

		sallitutMerkit.nimi				= "Allowed characters are a-z, space and punctuations – “"
		sallitutMerkit.katu				= "Allowed characters are 1-9, a-z,  space and punctuation -"
		sallitutMerkit.postinumero		= "Only numbers are allowed."
		sallitutMerkit.postitoimipaikka	= "Allowed characters are A-Z,  space and punctuation -"
		sallitutMerkit.puhelin			= "Only numbers are allowed."
		sallitutMerkit.email			= "Allowed characters are a-z, 1-9 and punctuations - _ . @"
		sallitutMerkit.numerotJaPilkku	= "Allowed characters are 1-9 and punctuation ,"
		sallitutMerkit.vainNumerot		= "Only numbers are allowed."
		sallitutMerkit.yritys			= "Allowed characters are 1-9, a-z,  space and punctuation -"
		
		
		break
		case 'se':
		
		
		//
		// Ruotsinkieliset tekstit
		//
		viesti.oletus					= ""
		viesti.ok						= "OK"
		viesti.pakollinen				= "Detta fält är obligatoriskt"
		viesti.erikoismerkki			= "Du använde specialtecken vilka ej får användas. /sallitut_merkit/."
		viesti.oikeinkirjoitus			= "Kontrollera rättstavning.Ändring: /ehdotus/."
		viesti.eiVoiLähettää			= "Blanketten innehåller fel.Vänligen kontrollera."
		viesti.postinumeronpituus4		= "Postnumret är fel det bör innehålla 4 tecken."
		viesti.postinumeronpituus5		= "Postnumret är fel det bör innehålla 5 tecken."
		viesti.puhelinMerkit			= "Bara siffror tillåtna.Alla andra tecken borttagna."
		viesti.outoNumero				= "Ditt telefonnummer börjar ej med 0 och inte med landskod.Kontrollera ditt nummer."
		viesti.badEmail					= "Din e-postadress är oriktig.Kontrollera alla tecken."
		
		oletus.etunimi					= ""
		oletus.sukunimi					= ""
		oletus.katu						= ""
		oletus.yritys					= ""
		oletus.postinumero				= ""
		oletus.postitoimipaikka			= "Skriv med stora bokstäver, t.ex. VASA"
		oletus.puhelin					= ""
		oletus.matkapuhelin				= ""
		oletus.email					= ""
		oletus.lisatiedot				= "Kerro lisätietokentässä yhteydenoton syy, esim. Olen muuttanut, vanha osoite on Mutkakatu2."

		sallitutMerkit.nimi				= "Tillåtna tecken är bokstäver,siffror,bindestreck,mellanslag samt apostrof"
		sallitutMerkit.katu				= "Tillåtna tecken är bokstäver,siffror,bindestreck samt mellanslag."
		sallitutMerkit.postinumero		= "Endast siffror tillåtna"
		sallitutMerkit.postitoimipaikka	= "Tillåtna tecken är bokstäver, bindestreck samt mellanslag."
		sallitutMerkit.puhelin			= "Endast siffror tillåtna"
		sallitutMerkit.email			= "Tillåtna tecken är bokstäver,siffror,under- och bindestreck, samt@-tecken"
		sallitutMerkit.numerotJaPilkku	= "Endast siffror och punkt tillåtna"
		sallitutMerkit.vainNumerot		= "Endast siffror tillåtna"
		sallitutMerkit.yritys			= "Tillåtna tecken är bokstäver,siffror,bindestreck samt mellanslag."
		
		
		break
		case 'no':
		
		
		//
		// Norjankieliset tekstit
		//
		viesti.oletus					= ""
		viesti.pakollinen				= "norsk"
		viesti.ok						= ""
		viesti.erikoismerkki			= ""
		viesti.oikeinkirjoitus			= ""
		viesti.eiVoiLähettää			= ""
		
		oletus.etunimi					= ""
		oletus.sukunimi					= ""
		oletus.katu						= ""
		oletus.postinumero				= ""
		oletus.postitoimipaikka			= "Kaikki kirjaimet isolla"
		oletus.puhelin					= ""
		oletus.email					= ""

		sallitutMerkit.nimi				= ""
		sallitutMerkit.katu				= ""
		sallitutMerkit.postinumero		= ""
		sallitutMerkit.postitoimipaikka	= ""
		sallitutMerkit.puhelin			= ""
		sallitutMerkit.email			= ""
		
		
		break
		case 'is':
		
		
		//
		// Islanninkieliset tekstit
		//
		viesti.oletus					= ""
		viesti.pakollinen				= "islenska"
		viesti.ok						= ""
		viesti.erikoismerkki			= ""
		viesti.oikeinkirjoitus			= ""
		viesti.eiVoiLähettää			= ""
		
		oletus.etunimi					= ""
		oletus.sukunimi					= ""
		oletus.katu						= ""
		oletus.postinumero				= ""
		oletus.postitoimipaikka			= "Kaikki kirjaimet isolla"
		oletus.puhelin					= ""
		oletus.email					= ""

		sallitutMerkit.nimi				= ""
		sallitutMerkit.katu				= ""
		sallitutMerkit.postinumero		= ""
		sallitutMerkit.postitoimipaikka	= ""
		sallitutMerkit.puhelin			= ""
		sallitutMerkit.email			= ""
		
		
		break
		case 'de':
		
		
		//
		// Saksankieliset tekstit
		//
		viesti.oletus					= ""
		viesti.pakollinen				= "Dieses Feld ist pflichtmässig"
		viesti.ok						= ""
		viesti.erikoismerkki			= "Sie haben Sonderzeichen, die nicht zulässig sind, verwendet. /sallitut_merkit/."
		viesti.oikeinkirjoitus			= "Überprüfen Sie bitte die Rechtschreibung.Änderung: /ehdotus/"
		viesti.eiVoiLähettää			= "Es gibt Fehler auf dem Formular. Überprüfen Sie es bitte."
		viesti.postinumeronpituus4		= "Die Postleitzahl ist falsch. Sie muss 4 Nummern umfassen."
		viesti.postinumeronpituus5		= "Die Postleitzahl ist falsch. Sie muss 5 Nummern umfassen."
		viesti.puhelinMerkit			= "Nur Nummern sind zulässig. Alle andere Zeichen sind entfernt worden."
		viesti.outoNumero				= "Ihre Telefonnummer fängt nicht mit 0 oder mit einem Landvorwahl an. Überprüfen Sie bitte Ihre Nummer."
		viesti.badEmail					= "Ihre Email-Adresse ist falsch. Überprüfen Sie bitte alle Zeichen."
		
		oletus.etunimi					= ""
		oletus.sukunimi					= ""
		oletus.katu						= ""
		oletus.yritys					= ""
		oletus.postinumero				= ""
		oletus.postitoimipaikka			= "Bitte mit grossen Buchstaben schreiben, z.B.TURKU"
		oletus.puhelin					= ""
		oletus.matkapuhelin				= ""
		oletus.email					= ""
		oletus.lisatiedot				= ""

		sallitutMerkit.nimi				= "Zulässige Zeichen sind Buchstaben, Bindestrich, Leeranschlag und Auslassungszeichen"
		sallitutMerkit.katu				= "Zulässige Zeichen sind Buchstaben, Nummern, Bindestrich und Leeranschlag"
		sallitutMerkit.postinumero		= "Nur Nummern sind zulässig"
		sallitutMerkit.postitoimipaikka	= "Zulässige Zeichen sind Buchstaben, Bindestrich und Leeranschlag"
		sallitutMerkit.puhelin			= "Nur Nummern sind zulässig"
		sallitutMerkit.email			= "Zulässige Zeichen sind Buchstaben, Nummern, Unter- und Bindestriche, Punkt und @-Zeichen"
		sallitutMerkit.numerotJaPilkku	= "Nur Nummern und Komma sind zulässig"
		sallitutMerkit.vainNumerot		= "Nur Nummern sind zulässig"
		sallitutMerkit.yritys			= "Zulässige Zeichen sind Buchstaben, Nummern, Bindestrich und Leeranschlag"
		
		
		break
	}
	
}

// Erikoismerkkien tarkistus
// Eurooppalaiset merkit æ	ø Æ	Ø ü Ü ß é É à À â Â ç Ç è È é É ê Ê ë Ë î Î ï Ï ô Ô œ Œ ù Ù û
// http://webdesign.about.com/od/localization/l/blhtmlcodes-fr.htm
function checkBadCharacters(field, value) {
	var allowed
	switch (field) {
		case 'name':
			allowed = new RegExp(/[^a-zA-ZäÄöÖåÅæÆøØ\-\ \']/g)
			break
		case 'street':
			allowed = new RegExp(/[^0-9a-zA-ZäÄöÖåÅæÆøØ\-\ ]/g)
			break
		case 'zip':
			allowed = new RegExp(/[^0-9]/g)
			break
		case 'city':
			allowed = new RegExp(/[^a-zA-ZäÄöÖåÅæÆøØ\-\ ]/g)
			break
		case 'phone': case 'phone_number':
			allowed = new RegExp(/[^0-9]/g)
			break
		case 'email':
			allowed = new RegExp(/[^a-zA-Z0-9\-\_\ \@\.]/g)
			break
		case 'numbersLetters':
			allowed = new RegExp(/[a-zA-Z0-9]/g)
			break
		case 'letters':
			allowed = new RegExp(/[a-zA-Z]/g)
			break
		case 'numbers':
			allowed = new RegExp(/[^0-9\,]/g)
			break
	}
	var badCharacters = 0
	if (allowed.test(value) == true) {
		badCharacters = value.match(allowed)
	}
	return badCharacters
}

function stripBadCharacters(badCharacters, value) {
	for (var i = 0; i < badCharacters.length; i++) {
		value = value.replace(badCharacters[i], "")
	}
	return value
}

function checkIfEmpity (field) {
	var spaces = new RegExp(/[^\ ]/g)
	return spaces.test(document.getElementById(field).value)
}

function setWarningMessage (field, type, length) {
	var warningColor
	if (type == "empity") {
		document.getElementById(field + "_warning").innerHTML = viesti.pakollinen
		warningColor = "red"
	}
	else if (type == "ok") {
		document.getElementById(field + "_warning").innerHTML = viesti.ok
		warningColor = "green"
	}
	else if (type == "clear") {
		document.getElementById(field + "_warning").innerHTML = ""
		warningColor = "green"
	}
	else {
		switch (field) {
			case 'first_name': case 'last_name':
				if (type == "1") {
					document.getElementById(field+"_warning").innerHTML = viesti.erikoismerkki.replace("/sallitut_merkit/", 
						sallitutMerkit.nimi)
					warningColor = "red"
				}
				else if (type == null) {
					if (field = "first_name") {
						document.getElementById(field+"_warning").innerHTML = oletus.etunimi
					}
					else {
						document.getElementById(field+"_warning").innerHTML = oletus.sukunimi
					}
				}
				else {
					document.getElementById(field+"_warning").innerHTML = viesti.oikeinkirjoitus.replace("/ehdotus/", type)
					warningColor = "green"
				}
				break
			case 'street':
				if (type == "1") {
					document.getElementById(field+"_warning").innerHTML = viesti.erikoismerkki.replace("/sallitut_merkit/", 
						sallitutMerkit.katu)
					warningColor = "red"
				}
				else if (type == null) {
					document.getElementById(field+"_warning").innerHTML = oletus.katu
				}
				else {
					document.getElementById(field+"_warning").innerHTML = viesti.oikeinkirjoitus.replace("/ehdotus/", type)
					warningColor = "green"
				}
				break
			// Yritys
			case '00N200000016Y5S':
				if (type == "1") {
					document.getElementById(field+"_warning").innerHTML = viesti.erikoismerkki.replace("/sallitut_merkit/", 
						sallitutMerkit.yritys)
					warningColor = "green"
				}
				else if (type == null) {
					document.getElementById(field+"_warning").innerHTML = oletus.yritys
				}
				else {
					document.getElementById(field+"_warning").innerHTML = viesti.oikeinkirjoitus.replace("/ehdotus/", type)
					warningColor = "green"
				}
				break
			case 'zip':
				setWarningMessage('submitButton', 'clear')
				if (type == "1") {
					document.getElementById(field+"_warning").innerHTML = viesti.erikoismerkki.replace("/sallitut_merkit/", 
						sallitutMerkit.postinumero)
					warningColor = "green"
				}
				else if (type == "length") {
					if (length == 4)
						document.getElementById(field+"_warning").innerHTML = viesti.postinumeronpituus4
					else if (length == 5)
						document.getElementById(field+"_warning").innerHTML = viesti.postinumeronpituus5
					warningColor = "red"
				}
				else if (type == null) {
					document.getElementById(field+"_warning").innerHTML = oletus.postinumero
				}
				else if (type == "OK") {
					document.getElementById(field+"_warning").innerHTML = "";
				}
				break
			case 'city':
				setWarningMessage('submitButton', 'clear')
				if (type == null) {
					document.getElementById(field+"_warning").innerHTML = oletus.postitoimipaikka
					warningColor = "black"
				}
				else if (type == "1") {
					document.getElementById(field+"_warning").innerHTML = viesti.erikoismerkki.replace("/sallitut_merkit/", 
						sallitutMerkit.postitoimipaikka)
					warningColor = "red"
				}
				else if (type == "0") {
					document.getElementById(field+"_warning").innerHTML = ""
				}
				break
			case 'phone': case 'phone_number':
				if (field == "phone_number") {
					field = "phone";
				}
				setWarningMessage('submitButton', 'clear')
				if (type == null) {
					document.getElementById(field+"_warning").innerHTML = oletus.puhelin
					warningColor = "black"
				}
				else if (type == "1") {
					document.getElementById(field + "_warning").innerHTML = viesti.puhelinMerkit
					warningColor = "green"
				}
				else if (type == "badForm") {
					document.getElementById(field + "_warning").innerHTML = viesti.outoNumero
					warningColor = "green"
				}
				else if (type == "0") {
					document.getElementById(field+"_warning").innerHTML = ""
				}
				break
			case 'mobile': case 'mobile_number':
				setWarningMessage('submitButton', 'clear')
				if (type == null) {
					document.getElementById(field + "_warning").innerHTML = oletus.matkapuhelin
					warningColor = "black"
				}
				else if (type == "1") {
					document.getElementById(field + "_warning").innerHTML = viesti.puhelinMerkit
					warningColor = "green"
				}
				else if (type == "badForm") {
					document.getElementById(field + "_warning").innerHTML = viesti.outoNumero
					warningColor = "green"
				}
				else if (type == "0") {
					document.getElementById(field + "_warning").innerHTML = ""
				}
				break
			case 'moreInfo':
				setWarningMessage('submitButton', 'clear')
				if (type == null) {
					document.getElementById(field+"_warning").innerHTML = oletus.lisatiedot
					warningColor = "black"
				}
				else if (type == "0") {
					document.getElementById(field+"_warning").innerHTML = ""
				}
				break
			case 'numbers':
				// Rakennusvuosi
				if (type == "00N200000016N8E") {
					document.getElementById(type+"_warning").innerHTML = viesti.erikoismerkki.replace("/sallitut_merkit/", 
						sallitutMerkit.vainNumerot)
					warningColor = "red"
				}
				// Rakennuksen koko
				else if (type == "00N200000016N89") {
					document.getElementById(type+"_warning").innerHTML = viesti.erikoismerkki.replace("/sallitut_merkit/", 
						sallitutMerkit.numerotJaPilkku)
					warningColor = "red"
				}
				// Huonekorkeus
				else if (type == "00N200000017VEy") {
					document.getElementById(type+"_warning").innerHTML = viesti.erikoismerkki.replace("/sallitut_merkit/", 
						sallitutMerkit.numerotJaPilkku)
					warningColor = "red"
				}
				// Asukkaiden lkm
				else if (type == "00N200000016N7G") {
					document.getElementById(type+"_warning").innerHTML = viesti.erikoismerkki.replace("/sallitut_merkit/", 
						sallitutMerkit.vainNumerot)
					warningColor = "red"
				}
				// Kerroksia
				else if (type == "00N200000016N77") {
					document.getElementById(type+"_warning").innerHTML = viesti.erikoismerkki.replace("/sallitut_merkit/", 
						sallitutMerkit.vainNumerot)
					warningColor = "red"
				}
				break
			case 'email':
				if (type == null) {
					document.getElementById(field+"_warning").innerHTML = oletus.email
				}
				else if (type == "1") {
					document.getElementById(field+"_warning").innerHTML = viesti.erikoismerkki.replace("/sallitut_merkit/", 
						sallitutMerkit.email)
					warningColor = "red"
				}
				else if (type == "badForm") {
					document.getElementById("email_warning").innerHTML = viesti.badEmail
					warningColor = "red"
				}
				else if (type == "0") {
					document.getElementById(field+"_warning").innerHTML = ""
				}
				break
			case 'submitButton':
				if (type == null) {
					document.getElementById(field+"_warning").innerHTML = viesti.eiVoiLähettää
					warningColor = "red"
				}
				else if (type == "clear") {
					document.getElementById(field+"_warning").innerHTML = ""
					warningColor = "green"
				}
				break
			default:
				break
		}
	}
	if (field == "numbers") 
		document.getElementById(type + "_warning").style.color = warningColor
	else
		document.getElementById(field + "_warning").style.color = warningColor
}

function makeProperName(name) {
	
	// Luodaan väliaikainen käyttäjän syöttämän nimen kopion, tempName,
	// johon laitetaan sääntöjenmukaiset isot ja pienet kirjaimet
	// ja vertaillaan sen käyttäjän syöttämään nimeeseen.
	var tempName = name
	var addSpaces = new Array()
	var spaceCount = 0
	var mismatch = false
	var specialCharacters = new RegExp(/[\d\-\ \']/g)
	var numbers = new RegExp(/[\d]/g)
	for (var i = 0; i < name.length; i++) {
		if (i == 0) {
			tempName = tempName.substring(i,1).toUpperCase() + tempName.substring(1)
		}
		else if (i == (name.length-1)) {
			tempName = tempName.substring(0,i) + tempName.substring(i,i+1).toLowerCase()
			if (specialCharacters.test(tempName.substr(i-1, 1)) == true) {
				tempName = tempName.substring(0,i) + tempName.substring(i, i+1).toUpperCase() +
					tempName.substring(i+1)
			}
			if (numbers.test(tempName.substr(i-1, 1)) == true) {
				tempName = tempName.substring(0,i) + tempName.substring(i, i+1).toUpperCase() +
					tempName.substring(i+1)
			}
			if (numbers.test(tempName.substr(i,1)) == true && numbers.test(tempName.substr(i-1,1)) == false) {
				if (tempName.substr(i-1,1) != " ") {
					addSpaces[spaceCount] = i
					spaceCount++
				}
			}
		}
		else {
			tempName = tempName.substring(0,i) + tempName.substring(i,i+1).toLowerCase() + tempName.substring(i+1)
			if (specialCharacters.test(tempName.substr(i-1, 1)) == true) {
				tempName = tempName.substring(0,i) + tempName.substring(i, i+1).toUpperCase() +
					tempName.substring(i+1)
			}
			if (numbers.test(tempName.substr(i-1, 1)) == true) {
				tempName = tempName.substring(0,i) + tempName.substring(i, i+1).toUpperCase() +
					tempName.substring(i+1)
			}
			if (numbers.test(tempName.substr(i,1)) == true && numbers.test(tempName.substr(i-1,1)) == false) {
				if (tempName.substr(i-1,1) != " ") {
					addSpaces[spaceCount] = i
					spaceCount++
				}
			}
		}
		// Tarkistetaan täsmääkö kyseinen kirjain
		if (tempName.charAt(i) != name.charAt(i)) {
			mismatch = true
		}
	}
	
	if (spaceCount > 0) {
		for (var i = 0; i < addSpaces.length; i++) {
			tempName = tempName.substr(0,addSpaces[i]) + " " + tempName.substring(addSpaces[i])
		}
		mismatch = true
	}
	
	// Jos on käyttäjän syöttämä nimi osoittautui erilaiseksi kuin meidän sääntöjenmukainen mallimme,
	if (mismatch == true) {
		// Palauta korjattu nimi
		return tempName
	}
	// Jos nimet täsmäävät
	else {
		return null
	}
}

// INIT
function clearMessages() {
	setWarningMessage("phone","0")
	setWarningMessage("mobile","0")
	setWarningMessage("city","0")
}

// TODO:
// Description
// Tarkista onko käytetty mitään muita kuin sallittuja merkkejä
// Sallitut merkit: kirjaimet, väliviiva, välilyönti, heittomerkki
function checkName(type, finalCheck) {
	var result = false
	var name = document.getElementById(type + "_name").value

	var badCharacters = checkBadCharacters("name", name)
	// onko erikoismerkkejä?
	if (badCharacters.length > 0) {
		setWarningMessage(type + "_name", "1")
	}
	// jos ei
	else {
		// onko tyhjä kenttä
		if (!checkIfEmpity(type+"_name")) {
			if (finalCheck)
				setWarningMessage(type+ "_name","empity")
		}
		// jos ei
		else {
			// onko isot kirjaimet oikein
			var result = makeProperName(name)
			// jos eivät ole 
			if (result != null) {
				//setWarningMessage(type+"_name", result)
				document.getElementById(type + "_name").value = result;
				setWarningMessage(type+"_name", "clear");
				result = true
			}
			
			else {
				setWarningMessage(type+"_name", "clear")
				result = true
			}
		}
	}
	return result
}

function changeCountry() {
	document.getElementById("country_warning").innerHTML = ""; 
	// jos postinumero valittu, tarkista pituus
	if (checkIfEmpity("zip")) {
		var selectedCountry = document.getElementById("country").options[document.getElementById("country").selectedIndex].value;
		var zip = document.getElementById("zip").value;
		
		// maa  - suomi, ruotsi, pituus 5
		if (selectedCountry == "Finland" || selectedCountry == "Sweden") {
			if (zip.length != 5) {
				setWarningMessage("zip", "length", 5);
			}
			else {
				setWarningMessage("zip", "OK");
			}
		// maa - norja, tanska, pituus 4
		} else if (selectedCountry == "Norway" || selectedCountry == "Denmark") {
			if (zip.length != 4) {
				setWarningMessage("zip", "length", 4);
			}
			else {
				setWarningMessage("zip", "OK");
			}
		}
	}
	
	// jos postinumeroa ei ole valittu
	else {
		// ei tarvi tehdä mitään
	}
	
	countryIsSelected = true;
	
}

// Katuosoite
// Säännöt:
// 	- Ensimmäinen kirjain isolla kaikissa sanoissa
//	- Sallitut merkit: 0-9 a-z, A-Z, äÄ, öÖ, åÅ, -, väli
function checkStreet(finalCheck) {
	var result = false
	// Hae syötetty nimi
	var street = document.getElementById("street").value

	// Tarkista onko käytetty mitään muita kuin sallittuja merkkejä
	var badCharacters = checkBadCharacters("street", street)
	if (badCharacters.length > 0) {
		setWarningMessage("street", "1")
	}
	else {
		if (!checkIfEmpity("street")) {
			if (finalCheck)
				setWarningMessage("street","empity")
		}
		else {
			var result = makeProperName(street)
			if (result != null) {
				//setWarningMessage("street",result)
				document.getElementById("street").value = result;
				setWarningMessage("street", "clear");
				result = true
			}
			else {
				setWarningMessage("street", "clear");
				result = true
			}
		}
	}
	return result
}

// Yritys
// Säännöt:
// 	- Ensimmäinen kirjain isolla kaikissa sanoissa
//	- Sallitut merkit: 0-9 a-z, A-Z, äÄ, öÖ, åÅ, -, väli
function checkCompany(id, finalCheck) {
	var result = false
	// Hae syötetty nimi
	var nimi = document.getElementById(id).value

	// Tarkista onko käytetty mitään muita kuin sallittuja merkkejä
	var badCharacters = checkBadCharacters("street", nimi)
	if (badCharacters.length > 0) {
		setWarningMessage(id, "1")
		result = true
	}
	else {
		if (!checkIfEmpity(id)) {
			if (finalCheck)
				result = true
		}
		else {
			var result = makeProperName(nimi)
			if (result != null) {
				//setWarningMessage(id,result)
				document.getElementById(id).value = result;
				setWarningMessage(id, "clear");q
				result = true
			}
			else {
				setWarningMessage(id, "clear");
				result = true
			}
		}
	}
	return result
}

// Postinumero
// Säännöt:
//	- Sallitut merkit: 0-9
//	- Pituus 5 merkkiä suomessa
//	- Ei välilyöntejä eikä mitään muita erikoismerkkejä
//		* Otetaan välit väkisin pois (vihreä ilmoitus käyttäjälle)
function checkZip(finalCheck) {
	var result = false;
	// Hae syötetty postitoimipaikka
	var zip = document.getElementById("zip").value
	
	// Tarkista onko käytetty mitään muita kuin sallittuja merkkejä
	var badCharacters = checkBadCharacters("zip", zip)
	if (badCharacters.length > 0) {
		setWarningMessage("zip", "1")
		zip = stripBadCharacters(badCharacters, zip)
		document.getElementById("zip").value = zip
		result = true
	}
	// Jos zippi tyhjä
	if (zip.length == 0) {
		if (finalCheck)
			setWarningMessage("zip","empity")
		result = false
	}
	// jos ei ole tyhjä ja jos maa on valittu
	else if (countryIsSelected) {
		
		var selectedCountry = document.getElementById("country").options[document.getElementById("country").selectedIndex].value;
		// maa  - suomi, ruotsi, pituus 5
		if (selectedCountry == "Finland" || selectedCountry == "Sweden") {
			
			if (zip.length != 5) {
				setWarningMessage("zip", "length", 5);
			} else {
				setWarningMessage("zip", "OK");
				result = true;
			}
		// maa - norja, tanska, pituus 4
		} else if (selectedCountry == "Norway" || selectedCountry == "Denmark") {
			if (zip.length != 4) {
				setWarningMessage("zip", "length", 4);
			} else {
				setWarningMessage("zip", "OK");
				result = true;
			}
		}
		else {
			result = true;
			setWarningMessage("zip", "OK");
		}
	}
	
	// jos ei ole tyhjä ja maa ei ole valittu
	else {
		result = true;
		setWarningMessage("zip", "OK");
	}
	return result
}

// Postitoimipaikka
//	- Sallitut merkit: a-z, A-Z, äÄ, öÖ, åÅ, -, väli
//		* Funktion lainaus checkNameista
//  - kaikki kirjaimet korvataan ISOILLA
function checkCity(finalCheck) {
	setWarningMessage("city","0")
	var result = false
	// Hae syötetty postitoimipaikka
	var city = document.getElementById("city").value

	// Tarkista onko käytetty mitään muita kuin sallittuja merkkejä
	var badCharacters = checkBadCharacters("city", city)
	if (badCharacters.length > 0) {
		setWarningMessage("city","1")
	}
	else {
		if (!checkIfEmpity("city")) {
			if (finalCheck)
				setWarningMessage("city","empity")
		}
		else {
			
			// Muuta kaikki kirjaimet isoiksi, jos ei vielä ole
			var capitalCharacters = new RegExp(/[a-zäöå]/g)
			if (capitalCharacters.test(city) == true) {
				document.getElementById("city").value = city.toUpperCase()
			}

			setWarningMessage("city", "ok")
			result = true
		}
	}
	return result
}

// Lankapuhelin
//	- Sallitut merkit: 0-9
//	- '+' ja muut erikoismerkit pois
//		* kuten myös välilyönnit
//  - Ei pakollinen
function changePhoneCode(phoneType) {
	if (phoneType == null) {
		phoneType = "phone"
		numero = phoneNumber;
		koodi = phoneCode;
	}
	else {
		numero = mobileNumber;
		koodi = mobileCode;
	}
	koodi = document.getElementById(phoneType+"_code").options[document.getElementById(phoneType+"_code").selectedIndex].value;
	/*if (checkIfEmpity(phoneType)) {
		document.getElementById(phoneType).value = "" + maakoodi + puhelinNumero;
	}*/
	if (numero != "") {
		document.getElementById(phoneType).value = koodi + numero;
		/*if (phoneType == "phone_number") {
			document.getElementById("phone").value = maakoodi + puhelinNumero;
		}
		else 
			document.getElementById("mobile").value = maakoodi + puhelinNumero;*/
	}
	if (phoneType == "phone") {
		phoneCode = koodi;
	}
	else {
		mobileCode = koodi;
	}
}
function changeMobileCode() {
	var result = false
	// checkPhone("mobile")
	if (changePhoneCode("mobile")) {
		result = true
	}
	return result
}
function checkPhone(phoneType) {
	if (phoneType == null) {
		phoneType = "phone"
		numero = phoneNumber;
		koodi = phoneCode;
	}
	else {
		numero = mobileNumber;
		koodi = mobileCode;
	}
	setWarningMessage(phoneType,"0")
	var result = false
	var number = document.getElementById(phoneType+"_number").value
	/* checking bad characters for "phone" - same rules for phones no matter if what the field is */
	var badCharacters = checkBadCharacters("phone", number)
	if (badCharacters.length > 0) {
		number = stripBadCharacters(badCharacters, number)
		document.getElementById(phoneType+"_number").value = number
		setWarningMessage(phoneType, "1")
		result = true
	}
		if (!checkIfEmpity(phoneType+"_number")) {
			result = true
		}
		else {
			/* Poistetaan kaikki nollat numeron alusta */
			while (number.substring(0,1) == "0") {
				number = number.substr(1);
			}
			/* haetaan valittu maakoodi */
			
			/* jos maakoodia ei ole valuttu */
			if (koodi == "") {
				numero = number;
				koodi = document.getElementById(phoneType+"_code").options[document.getElementById(phoneType+"_code").selectedIndex].value;
			}
			/* jos maakoodi on valuttu */
			else {
					numero = document.getElementById(phoneType+"_number").value;
					
					/* Poistetaan kaikki nollat numeron alusta */
					while (numero.substring(0,1) == "0") {
						numero = numero.substr(1);
					}
			}
			number = numero;
			/* asetetaan piiloetun phone kentän arvo */
			if (numero != "") {
				document.getElementById(phoneType).value = koodi + numero;
				/*if (phoneType == "phone") {
					document.getElementById("phone").value = maakoodi + puhelinNumero;
				}
				else 
					document.getElementById("mobile").value = maakoodi + puhelinNumero;*/
			}
			//document.getElementById("phone_code")
			
			/* päivitä kenttä */
			document.getElementById(phoneType+"_number").value = number;
			setWarningMessage(phoneType, "ok")
			result = true
			
			/* Vanha funktio
			
			if (number.substr(0,3) != "358") {
				if (number.charAt(0) != "0") {
					setWarningMessage(phoneType, "badForm")
					result = true
				}
				else {
					// Lisätään maakoodi ja tulostetaan
					number = document.getElementById(phone_code).value + number.substr(1)
					
					document.getElementById(phoneType).value = number
					setWarningMessage(phoneType, "ok")
					result = true
				}
			}
			else {
				setWarningMessage(phoneType, "ok")
				result = true
			}*/
		}
		if (phoneType == "phone") {
			phoneNumber = numero;
			phoneCode = koodi;
		}
		else
		{
			if (!checkIfEmpity("mobile_number"))
			{
				if (finalCheck)
				setWarningMessage("mobile", "empity")
				result = false;
			}
			
			mobileNumber = numero;
			mobileCode = koodi;
		}
	return result
}

// Matkapuhelin
//	* Sama kuin lankapuhelin. Erillinen funktio "jos tulevaisuudessa tarvittais"
function checkMobile() {
	var result = false
	// checkPhone("mobile")
	if (checkPhone("mobile")) {
		result = true
	}
	return result
}

// Sähköposti
//	- Sallitut merkit: 0-9, a-z, A-Z, -, _, ., @
//	- Muodon tarkistus (etuosa, @, domain)
//  - Ei pakollinen
function checkEmail() {
	var result = false
	
	var email = document.getElementById("email").value
	
	var badCharacters = checkBadCharacters("email", email)
	if (badCharacters.length > 0) {
		setWarningMessage("email", "1")
	}
	else if (email.length == 0) {
		if (finalCheck)
			setWarningMessage("email","empity")
		result = false
	}
	else if (email.length > 0) {
		
		i=email.indexOf("@")
		j=email.indexOf(".",i)
		k=email.indexOf(",")
		kk=email.indexOf(" ")
		len=email.length
		// are there any numbers or letters before the @ char in email?
		if (checkBadCharacters("numbersLetters", email.substring(0,i)) == 0) {
			setWarningMessage("email", "badForm")
			result = false
		}
		// after @ char
		else if (checkBadCharacters("numbersLetters", email.substring(i)) == 0) {
			setWarningMessage("email", "badForm")
			result = false
		}
		// only letters after last . char
		else if (checkBadCharacters("letters", email.substring(email.lastIndexOf("."))) == 0) {
			setWarningMessage("email", "badForm")
			result = true
		}
		
		else if ((i>0) && (j>(1+1)) && (k==-1) && (kk==-1)) {
			setWarningMessage("email", "ok")
			result = true
		}
		else {
			setWarningMessage("email", "badForm")
			result = true
		}
		var atSigns = email.match(/\@/g)
		if (atSigns) {
			if (atSigns.length > 1) {
				setWarningMessage("email", "badForm")
				result = false
			}
		}
		
		var dotMatch = email.match(/[\.\@]/g)
		var doubleDot = false
		var pos = 0
		if (dotMatch) {
			for (var i = 0; i < dotMatch.length; i++) {

				pos = email.indexOf(dotMatch[i],pos+1)

				if (email.charAt(pos-1) == '.') {
					doubleDot = true
				}
				else if (email.charAt(pos-1) == '@') {
					doubleDot = true
				}
			}
		}
		if (doubleDot == true) {
			setWarningMessage("email", "badForm")
			result = false
		}
		if (pos == 0) {
			setWarningMessage("email", "badForm")
			result = false
		}
		
		document.getElementById("email").value = email.toLowerCase()
	}
	else {
		setWarningMessage("email", null)
		result = true
	}
	return result
}

function checkNumber (field) {
	var result = false
	var number = document.getElementById(field).value
	var badCharacters = checkBadCharacters("numbers", number)
	if (badCharacters.length > 0) {
		setWarningMessage("numbers", field)
		result = false
	}
	else if (!checkIfEmpity(field)) {
		document.getElementById(field + "_warning").value = ""
		// setWarningMessage(field, "0")
		result = true
	}
	else {
		// setWarningMessage(field, "ok")
		document.getElementById(field + "_warning").innerHTML = viesti.ok
		document.getElementById(field + "_warning").style.color = "green"
		result = true
	}
	return result

}

// Lisätiedot kenttä
// Pakollinen kenttä
// Ei rajoituksia
function checkMoreInfo(finalCheck) {
	var result = false
	
	setWarningMessage("moreInfo","0")

	if (!checkIfEmpity("moreInfo")) {
		if (finalCheck)
			setWarningMessage("moreInfo","empity")
		result = false
	}
	else {
		setWarningMessage("moreInfo", "ok")
		result = true
	}
	return result
}

function clear() {
	document.getElementById("submitButton").disabled = false
}
function checkCountry() {
	var selectedCountry = document.getElementById("country").options[document.getElementById("country").selectedIndex].value;
	if (selectedCountry == "-1") {
		document.getElementById("country_warning").innerHTML = viesti.pakollinen;
		document.getElementById("country_warning").style.color = "red";
		return false;
	}
	return true;
}

function finalCheck() {
	document.getElementById("submitButton").disabled = true
	var submit = true
	if (!checkName("first", true)) submit = false
	if (!checkName("last", true)) submit = false
	if (!checkStreet(true)) submit = false
	if (!checkCompany("00N200000016Y5S", true)) submit = false
	if (!checkZip(true)) submit = false
	if (!checkCity(true)) submit = false
	//if (!checkPhone()) submit = false
	if (!checkMobile()) submit = false
	if (!checkEmail()) submit = false
	if (!checkCountry()) sumbit = false
	if (document.getElementById("moreInfo"))
		if (!checkMoreInfo(true)) submit = false
	if (document.getElementById("00N200000016N8E"))
		if (!checkNumber("00N200000016N8E")) submit = false
	if (document.getElementById("00N200000016N89"))
		if (!checkNumber("00N200000016N89")) submit = false
	if (document.getElementById("00N200000017VEy"))
		if (!checkNumber("00N200000017VEy")) submit = false
	if (document.getElementById("00N200000016N7G"))
		if (!checkNumber("00N200000016N7G")) submit = false
	if (document.getElementById("00N200000016N77"))
		if (!checkNumber("00N200000016N77")) submit = false
	if (submit) {
		document.getElementById("lomake").submit()
	}
	else {
		if (document.getElementById("first_name"))
			checkName("first", true)
		checkName("last", true)
		checkStreet(true)
		checkCompany("00N200000016Y5S", true)
		checkZip(true)
		checkCity(true)
		checkPhone()
		checkMobile()
		checkEmail()
		if (document.getElementById("moreInfo"))
			checkMoreInfo(true)
		if (document.getElementById("00N200000016N8E"))
			checkNumber("00N200000016N8E")
		if (document.getElementById("00N200000016N89"))
			checkNumber("00N200000016N89")
		if (document.getElementById("00N200000017VEy"))
			checkNumber("00N200000017VEy")
		if (document.getElementById("00N200000016N7G"))
			checkNumber("00N200000016N7G")
		if (document.getElementById("00N200000016N77"))
			checkNumber("00N200000016N77")
		document.getElementById("submitButton").disabled = false
		setWarningMessage("submitButton", null)
	}
}

