///////////////////////////////////////////////////////////
//
// email_ok
//
// DESC : Validates emailadresse
// Parameters:
// 	emailadresse	: Adress to validate
// Return values:
//	return true if emailadresse is OK
///////////////////////////////////////////////////////////

function validateform(GSform) {
	var i,InputValue, ValidationRes;
	if (validation) {	
		for (i=0;i<validation.length;i++) {
			InputValue=eval("GSform."+validation[i].name+".value");
			if (validation[i].Mandatory) {
				if (!InputValue) {
					if (GSform.GSFormLang.value==45)
						alert('Indtast venligst ' + validation[i].name);
					else alert('Please enter ' + validation[i].name);
					eval('GSform.'+validation[i].name+'.focus();');
					return false;
				}
			}

			if (validation[i].Validation) {
				switch(validation[i].Validation) {
					case "Email":
						if (InputValue) {
							if (!email_ok(InputValue)) {
								if (GSform.GSFormLang.value==45)
									alert('Email Addressen er ugyldig: ' + InputValue);
								else
									alert('Email Address not valid : ' + InputValue);
								eval('GSform.'+validation[i].name+'.focus();');
								return false;
							}
						}
					break;
					case "Number":
						if (!Check(InputValue, validation[i].NumberLength)) {
							if (GSform.GSFormLang.value==45)
								alert('Tallet er forkert: ' + InputValue);
							else
								alert('Number not in range: '  + InputValue);
							eval('GSform.'+validation[i].name+'.focus();');
							return false;
						}
					break;
					case "Costum":
						ValidationRes=null;
						var CostumValidator=validation[i].CostumValidator;
						if (eval("typeof("+CostumValidator+")")=='function') {
							eval("ValidationRes="+CostumValidator+'()');
							if (!ValidationRes) {
								if (GSform.GSFormLang.value==45)
									alert('Validering fejlet!');	
								else
									alert('Validate costum Error');	
								eval('GSform.'+validation[i].name+'.focus();');
								return false;
							} 
						} else {
							if (GSform.GSFormLang.value==45)
								alert('Valideringsfejl: functionen '+CostumValidator+'() blev ikke fundet');
							else
								alert('Validator Error: function not found:'+CostumValidator+'()');
						}
					break;
				} // switch
			} // if 
			
		} // for
	} // if
	return true;
}


//#############################################################################
//#############################################################################
//#############################################################################
function Check(number, length) {
  var valid = "0123456789";
  var str = String(number);
  if (length!=null) {
  	if (str.length>length) return false;
  }
  var i=0;
  while ((i<str.length) && (valid.indexOf(str.substring(i, i+1)) != -1)) { i = i +1; };

  return i==str.length?true:false;
}


function email_ok(emailadresse)	{
	EmailLaengde=emailadresse.length;
	// Undersøg om der er skrevet noget i adressen:
	if (emailadresse=="") {
		return false;
	}
	// Undersøg for ugyldige tegn:
	strAlert="";
	blnfejl="false";
	for (i=0;i<EmailLaengde;i++) {
		x=emailadresse.charAt(i);
		if(!( ((x>="a")&&(x<="z")) || ((x>="A")&&(x<="Z")) || ((x>="0")&&(x<="9")) || (x=="-") || (x=="_") || (x==".") || (x=="@") ))
			{
			strAlert = strAlert + "\nTegn nr. " + (i+1) + " : " + x;
			blnfejl="true";
			} 
		}
	if (blnfejl=="true")
		{	
		return false;
		}
	startTegn = emailadresse.substring(0,1);
	if ((startTegn == "-") || (startTegn == "_") || (startTegn == "."))
		{
		return false;
		}	
	slutTegn = emailadresse.substring(EmailLaengde,1);
	if ((slutTegn == "-") || (slutTegn == "_"))
		{
		return false;
		}	
	// Test for om tegnet @	findes
	posAt = emailadresse.indexOf("@",0)
	if (posAt==-1)
		{
		return false;
		}
	if (posAt==0)
		{
		return false;
		}	
	// Test for om der er for mange @'er	
	if (emailadresse.indexOf("@",posAt+1)!=-1)
		{
		return false;
		}	
	// Test for om der er et punktum i teksten efter @'et	
	posPunktum=emailadresse.indexOf(".",posAt)
	if (posPunktum==-1)	
		{
		return false;
		}
	// Test for specialtegn tegn lige før eller efter @ 
	specialTegn = ".-_";
	for(i=0;i<specialTegn.length;i++)
	 	{ 
		q=specialTegn.charAt(i);
		if(emailadresse.indexOf(q,posAt-1)==posAt-1)
			{
			return false;	
			}
		}	
	for(i=0;i<specialTegn.length;i++) 
		{
		q=specialTegn.charAt(i);
		if(emailadresse.indexOf(q,posAt+1)==posAt+1)
			{
			return false;	
			}
		}	
	// Test for fejlen "2 specilategn".	
   			specialTegn=".-_";
	for(i=0;i<specialTegn.length;i++)
		{	
		for(j=0;j<specialTegn.length;j++)
			{
			z=specialTegn.charAt(i)+specialTegn.charAt(j)
			if (emailadresse.indexOf(z)!=-1)
				{
				return false;
				}
			}
		}		
	// Tjek for mindst 2 tegn efter sidste punktum	
	posSidstePunktum=emailadresse.lastIndexOf(".")
	if (posSidstePunktum>=EmailLaengde-2)
		{
		return false;
		}
	// Tjek for ugyldige tegn i domænenavn	
	domaeneNavn=emailadresse.substring(posSidstePunktum+1,EmailLaengde);
	strAlert="";
	blnfejl="false";
	for (i=0;i<domaeneNavn.length;i++)
   		{
		y=domaeneNavn.charAt(i);
		if( !( ((y>="a")&&(y<="z")) || ((y>="A")&&(y<="Z")) ) )
			{
			strAlert = strAlert + "\nTegn nr. " + (i+1) + " : " + y;
			blnfejl="true";
			} 
		}
	if (blnfejl=="true")
		{	
		return false;
		}
	// Ingen fejl fundet:	
	return true;
}
// END Validate Email adresse
	
	
	
