/*
** Tacheles Newsletter validation routines.
*/

/**
** Get the bitset of all selected "MailingList_X" checkboxes. 
*/
function getNewsletterSelection()
{
	var mllIds = -1;
	
	if ( document.getElementById ) {
		var mask = 1;
		mllIds = 0;
		for ( var i = 0; i < 32; ++i ) {
			var id    = "MailingList_" + i.toString();
			var field = document.getElementById( id );
			if ( field && field.checked ) {
				mllIds = mllIds | mask;
			}
			mask = mask << 1;
		}
	}

	return mllIds;
}

/**
** Validate the subscribe input form data.
*/
function validateSubscribe( form )
{
	var message   = "";
	var seperator = "";

	if ( form ) {
		if ( form.Email.value == "" ) {
			message  += seperator;
			message  += "Bitte geben Sie Ihre Email Adresse ein.";
			seperator = '\n';
		} else if ( !validateEmail( form.Email.value  ) ) {
			message  += seperator;
			message  += "Bitte geben Sie eine gültige Email Adresse ein.";
			seperator = '\n';
		}
		
		if ( getNewsletterSelection() == 0 ) {
			message  += seperator;
			message  += "Bitte wähle Sie mindestens einen Newsletter Verteiler aus.";
			seperator = '\n';
		}
	}
	
	if ( message != "" ) {
		alert( message );
		return false;
	} else {
		return true;
	}
}

/**
** Validate the acknowledge input form data.
*/
function validateAcknowledge( form )
{
	var message   = "";
	var seperator = "";

	if ( form ) {
		if ( form.Email.value == "" ) {
			message  += "Bitte geben Sie Ihre Email Adresse ein.";
			seperator = '\n';
		} else if ( !validateEmail( form.Email.value  ) ) {
			message  += "Bitte geben Sie eine gültige Email Adresse ein.";
			seperator = '\n';
		}
		
		if ( form.Password.value == "" ) {
			message+= seperator;
			message+= "Bitte geben Sie das Passwort ein, dass Ihnen von uns zugeschickt wurde.";
			message+= seperator;
		} else if ( form.Password.value.length != 6 ) {
			message+= seperator;
			message+= "Das von Ihnen eingegebene Passwort ist ungültig. Bitte überprüfen Sie Ihre "
			        + "Eingabe und versuchen es dann erneut.";
			message+= seperator;
		}
	}
	
	if ( message != "" ) {
		alert( message );
		return false;
	} else {
		return true;
	}
}

/**
** Validate the update/modify login form data.
*/
function validateUpdateLogin( form )
{
	// same input fields as acknowledge
	return validateAcknowledge( form );
}


/**
** Validate the unsubscribe form data.
*/
function validateUnsubscribe( form )
{
	var message   = "";
	var seperator = "";

	if ( form ) {
		if ( form.Email.value == "" ) {
			message  += "Bitte geben Sie Ihre Email Adresse ein.";
			seperator = '\n';
		} else if ( !validateEmail( form.Email.value  ) ) {
			message  += "Bitte geben Sie eine gültige Email Adresse ein.";
			seperator = '\n';
		}

        // Due to Haralds spamming habits a password check is not reasonable.
        // --> Let it optional.
        if ( form.Password ) {		
		    if ( form.Password.value == "" ) {
			    message+= seperator;
			    message+= "Bitte geben Sie das Passwort ein, dass Ihnen von uns zugeschickt wurde.";
			    message+= seperator;
		    } else if ( form.Password.value.length != 6 ) {
			    message+= seperator;
			    message+= "Das von Ihnen eingegebene Passwort ist ungültig. Bitte überprüfen Sie Ihre "
			            + "Eingabe und versuchen es dann erneut.";
			    message+= seperator;
		    }
	    }
	}
	
	if ( message != "" ) {
		alert( message );
		return false;
	} else {
		return true;
	}
}

/**
** Validate the send password form input.
*/
function validateSendPw( form )
{
	var message   = "";
	var seperator = "";

	if ( form ) {
		if ( form.Email.value == "" ) {
			message  += seperator;
			message  += "Bitte geben Sie Ihre Email Adresse ein.";
			seperator = '\n';
		} else if ( !validateEmail( form.Email.value  ) ) {
			message  += seperator;
			message  += "Bitte geben Sie eine gültige Email Adresse ein.";
			seperator = '\n';
		}
	}
	if ( message != "" ) {
		alert( message );
		return false;
	} else {
		return true;
	}
}

/**
** Collected in the selected checkboxes
*/
function submitArchiveOptions( form )
{
	if ( getNewsletterSelection() != 0 ) {
		replaceSubmit( form );
	}
}

