// Funktion som validerar angiven sträng och lokaliserar förbjudna tecken i strängen
// Funktionen bygger upp ett lämpligt meddelande som den sedan returnerar.
// Det meddelande kan sedan visas upp för användaren på lämpligt sätt.
function detectForbiddenChars( str, fieldName ) {
	allowedChars = "0123456789-_.abcdefghijklmnopqrstuvwxyz"; usedForbiddenChars = ""; errormessage = "";
	for( i = 0; i < str.length; i++ ) { chartocheck = str.charAt(i).toLowerCase(); if( allowedChars.indexOf( chartocheck ) == -1 ) { usedForbiddenChars += " " + chartocheck; } }
	if( usedForbiddenChars.length > 0 ) {
		errormessage += "\nDu försökte använda ";
		if( usedForbiddenChars.length > 2 ) { errormessage += "de förbjudna tecknen  "; }
		else { errormessage += "det förbjudna tecknet   "; }
		errormessage +=  "   \"   " + usedForbiddenChars + "   \"\n";
		errormessage += "i textfältet " + fieldName + ".\n";
		errormessage += "Endast siffror ( 0-1 ), bokstäver ( a-z ) och tecknen - och _\nkan användas i textfältet " + fieldName + ".";
	}
	return errormessage;
}

// Funktion som validerar angiven sträng och returnerar false om den innehåller tecken
// förutom dem som är angivna i variabeln allowedChars annars returnerar den true
function validateUsernameAndPassword( str ) {
	allowedChars = "0123456789-_.abcdefghijklmnopqrstuvwxyz";
	if( str.length < 5 || str.length > 10 ) {
		return false;
	}
	else {
		for( i = 0; i < str.length; i++ ) {
			chartocheck = str.charAt(i).toLowerCase();
			if( allowedChars.indexOf( chartocheck ) == -1 ) {
//				showAlertMessage( chartocheck  );
				return false;
			}
		}
	}
	return true;
}

// Start Funktioner som används för att validera användarnamn på sidorna där man registrerar sig och byter användarnamn

function validateusername() {
	paramurl = "username=" + $F( "username" ).strip();
	var checkusernamequest = createRequest();
	if ( $F( "username" ).strip() != "" ) {
		checkusernamequest.open( "POST", "validateusername.php", true );
		checkusernamequest.onreadystatechange = function doDOMChanges() {
			if( checkusernamequest.readyState == 4 ) {
				if( checkusernamequest.status == 200 ) {
					var response = checkusernamequest.responseText;
//			 		showAlertMessage( response );
					if (response == "True") { updateElement( "span", "Användarnamnet är inte tillgängligt." ); }
					if (response == "False") { updateElement( "span", "Användarnamnet är tillgängligt." ); }
					if (response == "too_short") { updateElement( "span", "Användarnamnet du skrev in är för kort." ); }
					if (response == "bad_data") { updateElement( "span", "Användarnamnet du skrev in är inte giltigt." ); }
				}
				else {
					showAlertMessage( "Det uppstod ett fel när användarnamnet skulle kontrolleras.\nFelkod: " + checkusernamequest.status );
				}
			}
			else {
				updateElement( "span", "<IMG SRC=pics/loading.gif BORDER=0 ALIGN=BOTTOM STYLE=\"text-align:bottom;\"> " +
				"Kontrollerar anv&auml;ndarnamn... Var god v&auml;nta..." );
			}
		}
		checkusernamequest.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
		checkusernamequest.send( paramurl );  
	}
	else {
		updateElement( "span", "Du glömde att skriva in användarnamnet." );
	}
}

function checkIfUsernameTyped() { if( $F( "username" ).strip() != ""  ) { validateusername(); } }

// Funktion som validerar formulärdata på registreringssidan
function clearBirthdateField() { if( $F( "birthdate" ) == "ÅÅÅÅ-MM-DD" ) { emptyElement( "regform" ); } }

function adjustTermsofuse() {
//	showAlertMessage( $( "chktermsofuse" ).checked );
	$( "termsofuse" ).value = $( "chktermsofuse" ).checked;
//	showAlertMessage( $F( "termsofuse" ) );
}

function validateRegForm() {
	errormessages = new Array();
	username = $F( "username" ).strip(); password = $F( "password" ).strip(); verpassword = $F( "verpassword" ).strip();
	firstname = $F( "firstname" ).strip(); lastname = $F( "lastname" ).strip(); birthdate = $F( "birthdate" ).strip(); 
	gender = $( "gender" ).options.selectedIndex; occupation = $F( "occupation" ).strip(); email = $F( "email" ).strip().toLowerCase();
	veremail = $F( "veremail" ).strip().toLowerCase(); address = $F( "address" ).strip(); zipcode = $F( "zipcode" ).strip();
	city = $F( "city" ).strip(); country = $F( "country" ).strip(); secretque = $F( "secretque" ).strip(); secretanswer = $F( "secretanswer" ).strip(); securitycode = $F( "randomimage" ).strip();
	if( !$( "chktermsofuse" ).checked ) { errormessages.push( "Du har inte läst och godkänt användarvillkoren." );  }

	if( username == "" ) { errormessages.push( "Du glömde att ange ditt användarnamn." );  }
	else { if( !validateUsernameAndPassword( username ) ) { errormessages.push( "Användarnamnet du angav är inte giltigt." ); } }
	if( password == "" ) { errormessages.push( "Du glömde att ange ditt lösenord." );  }
	else {
		if( !validateUsernameAndPassword( password ) ) { errormessages.push( "Lösenordet du angav är inte giltigt." ); }
		if( password != verpassword ) { errormessages.push( "Lösenorden i fälten Lösenord och Verifiera lösenord är inte likadana." ); }
	}

	if( firstname == "" ) { errormessages.push( "Du glömde att ange ditt förnamn." ); }
	if( lastname == "" ) { errormessages.push( "Du glömde att ange ditt efternamn." ); }
	if( birthdate == "" ) { errormessages.push( "Du glömde att ange ditt födelsedatum." ); }
	else {
		if ( !validateDate( birthdate ) ) {
			errormessages.push( "Du skrev inte in ditt födelsedatum i rätt format." );
		}
	}

	if( gender == "0" ) { errormessages.push( "Du glömde att ange om du är flicka eller pojke." ); }
	if( occupation == "" ) { errormessages.push( "Du glömde att ange din sysselsättning." ); }

	if( email == "" ) { errormessages.push( "Du glömde att ange din e-post adress." ); }
	else {
		if ( !validateEmail( email ) ) {
			errormessages.push( "E-post adressen du skrev in är inte en godkänd adress." );
			errormessages.push( "En godkänd e-post adress kan exempelvis se ut som: john_doe@hotmail.com" );
		}
		if( email != veremail ) { errormessages.push( "Adresserna i fälten E-post adress och Verifiera e-post adress är inte likadana." ); }
	}

	if( address == "" ) { errormessages.push( "Du glömde att ange din gatuadress." ); }
	if( zipcode == "" ) { errormessages.push( "Du glömde att ange ditt postnummer." ); }
	if( city == "" ) { errormessages.push( "Du glömde att ange din stad." ); }
	if( country == "" ) { errormessages.push( "Du glömde att ange vilket land du bor i." ); }

	if( secretque == "" ) { errormessages.push( "Du glömde att ange din hemliga fråga." ); }
	if( secretanswer == "" ) { errormessages.push( "Du glömde att ange svaret på din hemliga fråga." ); }

	if( securitycode == "" ) { errormessages.push( "Du glömde att skriva in säkerhetskoden." );  }
	if( errormessages.length > 0 ) {
		mes = "Följande fel inträffade:\n\n";
		for( i = 0; i < errormessages.length; i++ ) {
			mes += (i+1) + ": " + errormessages[i] + "\n";
		}
		showAlertMessage( mes );
		return false;
	}
// 	else { showAlertMessage( "Evertything is ok" ); }
	return true;
}
// Slut Funktioner som används för att validera användarnamn på sidorna där man registrerar sig och byter användarnamn

// Start hjälpfunktioner som visar och döljer hjälptexter till de olika elementen i formuläret
function showComponentDescription( index ) {
	helptexts = new Array(
									"Skriv det användarnamn du vill ha här. Ett godkänt användarnamn består av minst 5 och högst 10 tecken (endast 0-9, a-z och tecknen -_. kan användas)",
									"Kontrollera om det användarnamn du skrev in inte är upptaget",
									"Skriv det lösenord du vill ha här. Ett godkänt lösenord består av minst 5 och högst 10 tecken (endast 0-9, a-z och tecknen -_. kan användas)",
									"Här skriver du exakt samma lösenord som du skrev i textfältet LÖSENORD. ",
									"Här skriver du in din e-post adress.",
									"Här skriver du in exakt samma e-post adress som du skrev i textfältet MAILADRESS",
									"Här skriver du in en hemlig fråga som du kan svara på för att få ett nytt lösenord skickat till dig om du någon gång råkar glömma ditt lösenord.", 
									"Här skriver du in svaret på den hemliga frågan som du skrev i textfältet HEMLIG FRÅGA.",
									"Detta är säkerhetskoden som du måste skriva in i textfältet till höger om den här bilden.",
									"Skriv in säkerhetskoden här. Detta behövs för att förhindra dataprogram (skrivna av illvilliga personer) att använda sig av registreringsformuläret.",
									"Klicka här för att ta bort innehållet i alla textfält och börja om.",
									"Klicka här för att skicka iväg registreringsformuläret.",
									"Här skriver du in ditt förnamn.",
									"Här skriver du in ditt efternamn.",
									"Här skriver du in din gatuadress.",
									"Här skriver du in ditt postnummer.",
									"Här skriver du vilken stad du bor i.",
									"Här skriver du vilket land du bor i.",
									"Här skriver du in ditt födelsedatum i formatet ÅÅÅÅ-MM-DD.",
									"Här anger du om du är pojke eller flicka.",
									"Här anger du vad du jobbar med."
								);
	updateElement( "infodisplay", helptexts[index] );
}

function hideComponentDescription() { emptyElement( "infodisplay" ); }

// Slut hjälpfunktioner som visar och döljer hjälptexter till de olika elementen i formuläret

// Funktion som validerar inloggningsformul&auml;rets data
function validateLoginForm() {
	errormessage = "";
	if( $F( "loginusername" ) == "" ) { errormessage += "Du glömde att ange ditt användarnamn.\n"; selectField( "loginusername" ); }
	if( $F( "loginpassword" ) == "" ) { errormessage += "Du glömde att ange ditt lösenord.\n"; selectField( "loginpassword" ); }
	if( errormessage != "" ) {
		errormessage = "Följande fel inträffade:\n\n" + errormessage;
		showAlertMessage( errormessage );
		return false;
	}
	return true;
}

// Funktion som validerar lösenord på sidan där man byter e-post adress.
function validateEmailChange() {
	errormessages = new Array();
	email = document.emailform.email.value;
	oldemail = document.emailform.oldemail.value;
	veremail = document.emailform.veremail.value;
	i = 0;
	if( !validateEmail( email ) ) { errormessages[i] = "E-post adressen du skrev in är inte giltig."; i++; }
	if( veremail != email ) { errormessages[i] = "Adresserna i e-post adresssfälten är inte identiska."; i++; }
	if( oldemail == email ) { errormessages[i] = "Du angav din befintliga e-post adress som ny e-post adress."; i++; }
	if ( errormessages.length > 0 ) {
		messageToDisplay = "Följande fel inträffade:\n\n";
		for( j = 0; j < errormessages.length; j++ ) {
			if( errormessages.length > 1 ) {
				messageToDisplay += (j+1) + ": ";
			}
			messageToDisplay += errormessages[j] + "\n";
		}
		showAlertMessage( messageToDisplay );
		return false;
	}
	return true;
}


function passwordHelp3() {
	email = $F( "email" );
	secretanswer = $F( "secretanswer" );
	paramurl = "email=" + email + "&secretanswer=" + secretanswer;
	helpRequest = createRequest();
	var url = "sendnewpassword.php?" + paramurl;
	helpRequest.open( "POST", url, true); 
	messagespot = "passwordmessagespot";
	contentspot = "passwordcontentspot";
	helpRequest.onreadystatechange = function doDOMChanges() {
		if( helpRequest.readyState == 4 ) {
			if( helpRequest.status == 200 ) {
				response = helpRequest.responseText;
//				showAlertMessage( response );
				emptyElement( messagespot );
				updateElement( "helparea", response );
			}
			else {
				updateElement( messagespot, "Det uppstod ett fel n&auml;r ditt nya l&ouml;senord skulle skickas.\nFelkod: " + helpRequest.status );
			}
		}
		else {
			updateElement( messagespot, "<IMG SRC=pics/loading.gif BORDER=0 ALIGN=BOTTOM STYLE=\"text-align:bottom;\"> " + 
									"Skickar ditt nya l&ouml;senord... Var god v&auml;nta..." ); 
		}
	}
	helpRequest.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
	helpRequest.send( paramurl ); 
}

function passwordHelp2() {
	messagespot = "passwordmessagespot";
	emptyElement( messagespot );
	email = $F( "email" );
	if( !validateEmail( email ) ) {
		updateElement( messagespot, "Var snäll och skriv in en giltig e-post adress." );
		selectField( "email" );
	}
	else {
		paramurl = "email=" + email;
		secretqueRequest = createRequest();
		var url = "getsecretque.php?" + paramurl;
		secretqueRequest.open( "POST", url, true); 
		secretqueRequest.onreadystatechange = function doDOMChanges() {
			if( secretqueRequest.readyState == 4 ) {
				if( secretqueRequest.status == 200 ) {
					response = secretqueRequest.responseText;
//					showAlertMessage( response );
					if( response != 0 && response != 1 ) {
						email = $F( "email" );
						thisparamurl = "email=" + email + "&secretque=" + response;
//						showAlertMessage( thisparamurl );
						getPage3( createRequest(), 'secretqueform.php', messagespot, 'passwordcontentspot', thisparamurl, '', '' );
					}
					else {
						if( response == 0 ) {
							updateElement( messagespot, "E-post adressen du skrev in existerar inte i v&aring;r databas." );
						}
						if( response == 1 ) {
							message = "<DIV CLASS=bigblacklabel>";
							message += "Ditt konto har spärrats av en administratör.<BR>";
							message += "Vill du ha hjälp eller har frågor, ber vi dig att<BR>";
							message += "kontakta oss på alltomfamiljen.se.</DIV";
							updateElement( messagespot, message );
						}
					}
				}
				else {
					updateElement( messagespot, "Det uppstod ett fel n&auml;r din hemliga fr&aring;ga skulle h&auml;mtas.\nFelkod: " + secretqueRequest.status );
				}
			}
			else {
				updateElement( messagespot, "<IMG SRC=pics/loading.gif BORDER=0 ALIGN=BOTTOM STYLE=\"text-align:bottom;\"> H&auml;mtar din hemliga fr&aring;ga... Var god v&auml;nta..." ); 
			}
		}
		secretqueRequest.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
		secretqueRequest.send( paramurl ); 
	}
}


// Funktion som tar fram l&ouml;senordshj&auml;lpsformul&auml;ret
function passwordHelp() {
	getPage3( createRequest(), "passwordhelpform.php", "passwordmessagespot", "passwordcontentspot", "", "", "" );
	emptyElement( 'helparea' );
	emptyElement( 'loginerrormessage' );
}

