addFriendColCount = 8;

function addFriend() {
	if (addFriendColCount < 15) {
		addFriendColCount++;
		document.getElementById("row" + addFriendColCount).style.display = "block";
		
	}else if (addFriendColCount == 15) {
		document.getElementById("row" + addFriendColCount).style.display = "block";
		document.getElementById("addFriendButton").style.display = "none";
	} 
}

function checkForm() {
	var errorConditions = false;
	resetAllErrorMessages();
	
	
	if ((document.getElementById("first_name_from").value == '') || !(checkEMailValidation(document.getElementById("email_from").value))) {
		document.getElementById("errormsg_from").style.display = "block";
		errorConditions = true;
	}
	
	for (var i = 1; i <= addFriendColCount; i++) {
		var currentFirstName = document.getElementById("first_name_" + i).value;
		var currentName = document.getElementById("name_" + i).value;
		var currentEMail = document.getElementById("email_" + i).value;
		
		resetErrorMessage(i);
		
		/*Checken ob im aktuellen Datensatz alle drei Felder leer sind, wenn ja --> Schleife abbrechen, wenn nein --> weitere Tests*/
		if (currentFirstName == '' && currentName == '' && currentEMail == '') {
			if (i == 1) {
				displayErrorMessage("email", i);
				return (false);
			}else{
				if(errorConditions){
					return (false);
				}else{
					return (true);
				}
			}
		/*Checken, ob eines der drei Felde nicht ausgefuellt wurde*/	
		}else if (currentFirstName == '' || currentName == '' || currentEMail == '') {
			displayErrorMessage("email", i);
			errorConditions = true;	
		}else{
			/*Checken ob Vorname und Nachname zusammen kuerzer als die erlaubte Zeichenanzahl sind, wenn ja --> Email-Check, wenn nein --> Fehler*/
			if (checkNameLength(currentFirstName, currentName)) {
				/*Checken ob eine gueltige E-Mail-Adresse angegeben wurde, wenn ja --> naechste Schleife, wenn nein --> Fehler*/
				if (checkEMailValidation (currentEMail)){
					continue;
				}else{
					displayErrorMessage("email", i);
					errorConditions = true;
				}
			}else{
				displayErrorMessage("name", i);
				errorConditions = true;
			}
		}
	} 
}

function resetAllErrorMessages (){
	document.getElementById("errormsg_name").style.display = "none";
	document.getElementById("errormsg_email").style.display = "none";
	document.getElementById("errormsg_from").style.display = "none";
}

function resetErrorMessage (highlightRow){
	document.getElementById("Lfirst_name_" + highlightRow).className = "";
	document.getElementById("Lname_" + highlightRow).className = "";
	document.getElementById("Lemail_" + highlightRow).className = "";
}


function displayErrorMessage(id, highlightRow){
	document.getElementById("errormsg_" + id).style.display = "block";
	document.getElementById("Lfirst_name_" + highlightRow).className = "error";
	document.getElementById("Lname_" + highlightRow).className = "error";
	document.getElementById("Lemail_" + highlightRow).className = "error";
}


function checkEMailValidation(emailString) {

    if (stringEmpty(emailString)) {
    	return (false);
    } else if (noAtSign( emailString)) {
    	return (false);
    } else if (nothingBeforeAt(emailString)) {
    	return (false);
    } else if (noLeftBracket(emailString)) {
    	return (false);
    } else if (noRightBracket(emailString)) {
    	return (false);
    } else if (noValidPeriod(emailString)) {
    	return (false);
    } else if (noValidSuffix(emailString)) {
   		 return (false);
    } else {
        return (true);
    }

    var objType = typeof(emailString.focus);
    if (objType == "object" || objType == "function") {
         emailString.focus();
    }

    return (false);
}


function stringEmpty (formField) {
    // CHECK THAT THE STRING IS NOT EMPTY
    if ( formField.length < 1 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noAtSign (formField) {
    // CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
    if (formField.indexOf ('@', 0) == -1) {
        return ( true )
    } else {
        return ( false );
    }
}

function nothingBeforeAt (formField) {
    // CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
    if ( formField.indexOf ( '@', 0 ) < 1 ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noLeftBracket (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
    if ( formField.indexOf ( '[', 0 ) == -1 && formField.charAt (formField.length - 1) == ']') {
        return ( true )
    } else {
        return ( false );
    }
}

function noRightBracket (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
    if (formField.indexOf ( '[', 0 ) > -1 && formField.charAt (formField.length - 1) != ']') {
        return ( true );
    } else {
        return ( false );
    }
}

function noValidPeriod (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if (formField.indexOf ( '@', 0 ) > 1 && formField.charAt (formField.length - 1 ) == ']')
        return ( false );

    // CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
    if (formField.indexOf ( '.', 0 ) == -1)
        return ( true );

    return ( false );
}

function noValidSuffix(formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if (formField.indexOf('@', 0) > 1 && formField.charAt(formField.length - 1) == ']') {
        return ( false );
    }

    // CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
    var len = formField.length;
    var pos = formField.lastIndexOf ( '.', len - 1 ) + 1;
    if ( ( len - pos ) < 2 || ( len - pos ) > 4 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function checkNameLength (firstName, lastName) {
	if(firstName.length + lastName.length <= 19){
		return (true);
	}else{
		return (false);
	}	
}
