﻿function VerifyAndSend()
{
	var bStatus = true;
	var oItem, oText;
	var oNameItem;
	var sChk;
	var oChk;
	var iChkCount = 0;
	
	for (var i = 1; i <= RecipientCount; i++)
	{
		sChk = 'chk_' + i.toString();
		oChk = document.getElementById(sChk);
		
		if (oChk != null)
		{
			if (oChk.checked)
			{
				iChkCount = 1;
				break;
			}
		}
	}
	if (RecipientCount == 0 || iChkCount == 0)
	{
		alert ("Det måste finnas minst en mottagare!");
		return false;
	}
	
	oItem = document.getElementById("spanSubject");
	if (frmProtest.txtSubject.value.length > 0)
		oItem.style.display = 'none';
	else
	{
		oItem.style.display = 'inline';
		bStatus = false;
	}
		
	oItem = document.getElementById("spanText");
	oText = document.getElementById("txtText")
	if (oText.value.length > 0)
		oItem.style.display = 'none';
	else
	{
		oItem.style.display = 'inline';
		bStatus = false;
	}
	
	
	oNameItem = document.getElementById("spanName");
	if (frmProtest.txName.value.length > 0)
		oNameItem.style.display = 'none';
	else
	{
		oNameItem.style.display = 'inline';
		oNameItem.scrollIntoView(true);
		bStatus = false;
	}
	
	oItem = document.getElementById("spanEmail");
	if (frmProtest.txtEmail.value.length > 0)
	{
		bStatus = checkValidation(frmProtest.txtEmail, oItem);
		if (!bStatus)
		    oItem.scrollIntoView(true);
	}
	else
	{
	    if (oNameItem == null || oNameItem.style.display == 'none')
	        oItem.scrollIntoView(true);
	    
		oItem.value = "Du måste enge din e-postadress";
		oItem.style.display = 'inline';
		bStatus = false;
		
	}
		
	if (bStatus)
	{
		frmProtest.Status.value = "OK";
		return true;
	}
	else
		return false;
}

function checkValidation ( addressField, spanItem ) 
{
	var sError;
	var sValue = addressField.value;
	
	if ( stringEmpty ( sValue ) )
		sError = "Du måste enge din e-postadress";
	else if ( noAtSign ( sValue ) )
		sError = "Adressen innehåller inget '@' tecken, vilket den måste göra" ;
	else if ( nothingBeforeAt ( sValue ) )
		sError = "En e-post adress måste ha minst ETT tecken INNAN '@'-tecknet" ;
	else if ( noLeftBracket ( sValue ) )
		sError = "E-postadressen innehåller en rak vänsterställd \"bracket\" ']',\nmen ingen korresponderande högerställd \"bracket\" '['" ;
	else if ( noRightBracket ( sValue ) )
		sError = "E-postadressen innehåller en rak högerställd \"bracket\" '[',\nmen ingen korresponderande vänsterställd \"bracket\" ']'" ;
	else if ( noValidPeriod ( sValue ) )
		sError = "En e-postadress måste innehålla minst EN punkt '.'" ;
	else if ( noValidSuffix ( sValue ) )
		sError = "En e-postadress måste ha minst två bokstäver som suffix (ex '.se' eller '.com') efter punkten '.', och max 4 tecken (ex '.info')" ;
	else if ( noNoTextAfterAt ( sValue ) )
		sError = "Måste finnas en text mellan '@' och sista punkten '.'" ;
	else
		return (true);
		
	spanItem.innerHTML = sError;
	spanItem.style.display = 'inline';

	return ( false );
}

function stringEmpty ( address ) {
	// CHECK THAT THE STRING IS NOT EMPTY
	if ( address.length < 1 ) {
		return ( true );
	} else {
		return ( false );
	}
}

function noAtSign ( address ) {
	// CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
	if ( address.indexOf ( '@', 0 ) == -1 ) {
		return ( true )
	} else {
		return ( false );
	}
}

function nothingBeforeAt ( address ) {
	// CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
	if ( address.indexOf ( '@', 0 ) < 1 ) {
		return ( true )
	} else {
		return ( false );
	}
}

function noLeftBracket ( address ) {
	// IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
	if ( address.indexOf ( '[', 0 ) == -1 && address.charAt ( address.length - 1 ) == ']' ) {
		return ( true )
	} else {
		return ( false );
	}
}

function noRightBracket ( address ) {
	// IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
	if ( address.indexOf ( '[', 0 ) > -1 && address.charAt ( address.length - 1 ) != ']' ) {
		return ( true );
	} else {
		return ( false );
	}
}

function noValidPeriod ( address ) {
	// IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
	if ( address.indexOf ( '@', 0 ) > 1 && address.charAt ( address.length - 1 ) == ']' )
		return ( false );

	// CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
	if ( address.indexOf ( '.', 0 ) == -1 )
		return ( true );

	return ( false );
}

function noValidSuffix ( address ) {
	// IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
	if ( address.indexOf ( '@', 0 ) > 1 && address.charAt ( address.length - 1 ) == ']' )
		return ( false );

	// CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
	var len = address.length;
	var pos = address.lastIndexOf ( '.', len - 1 ) + 1;
	if ( ( len - pos ) < 2 || ( len - pos ) > 4 ) {
		return ( true );
	} else {
		return ( false );
	}
}
function noNoTextAfterAt ( address ) {
	// IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
	if ( address.indexOf ( '@', 0 ) > 1 && address.charAt ( address.length - 1 ) == ']' )
		return ( false );

	// CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
	var len = address.length;
	var posAt = address.indexOf ('@', 0)
	var pos = address.lastIndexOf ('.', len - 1);
	if ( pos == posAt + 1 ) {
		return ( true );
	} else {
		return ( false );
	}
}



