/*
________________________________________
¤¤¤ Validation JS: Template byBrick™ ¤¤¤
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
*/

// whitespace characters
var whitespace = " \t\n\r";

function isEmpty(s)
{
	return ((s == null) || (s.length == 0));
}

// Returns true if string s is empty or whitespace characters only.
function isWhitespace (s)

{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
	// Check that current character isn't whitespace.
	var c = s.charAt(i);

	if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}

// isEmail (STRING s [, BOOLEAN emptyOK])
// 
// Email address must be of form a@b.c ... in other words:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.

function isEmail (s)
{   if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
   
    // is s whitespace?
    if (isWhitespace(s)) return false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { 
    	i++;
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

function ForceEmail(objField, FieldName)
{
	var strField = new String(objField.value);
	if (!isEmail(strField, 1)) {
		alert(FieldName + ' verkar inte vara korrekt ifyllt.');
		objField.focus();
		objField.select();
		return false;
	}

	return true;
}


// Checks to see if a required field is blank.  If it is, a warning
// message is displayed...
function ForceEntry(objField, FieldName)
{
	var strField = new String(objField.value);
	if (isWhitespace(strField)) {
		alert("V.g. fyll i " + FieldName + ".");
		if (objField.type != 'hidden') {
			objField.focus();
			objField.select();
		}
		return false;
	}

	return true;
}

// Checks to see if a required field is numeric.  If it is not, a warning
// message is displayed...
function ForceEntryNumeric(objField, FieldName)
{
	if (isNaN(objField.value)) {
		alert("V.g. fyll i " + FieldName + " numeriskt.");
		if (objField.type != 'hidden') {
			objField.focus();
			objField.select();
		}
		return false;
	}

	return true;
}


// Checks to see if a required radio input is not checked.  If it is, a warning
// message is displayed...
function ForceEntryRadio(objField, FieldName){
	// is there any input-tag in the document named row, 
	// e.g. is there any radiobuttons named row?
	if(objField){
		// if radio buttons has a length it's an array, ...
		if (!isNaN(objField.length)){
			for (var i = 0; i < objField.length; i++) {
				if (objField[i].checked){
					//radio button is checked
					break;
				}
			}
			if(i == objField.length){
				alert("V.g. fyll i " + FieldName + ".");
				objField[0].focus();
				objField[0].select();
				return false;
			}
		}
		// ... else it's a variable (only one radiobutton named row has been made)
		else{
			if (objField.checked){
				//radio button is checked			
			}
			else{
				alert("V.g. fyll i " + FieldName + ".");
				objField.focus();
				objField.select();
				return false;
			}
		}
	}
	return true;
}

// Checks to see if maxlenght of the field is not exceeded. If it is, a warning
// message is displayed...
function StrMaxLength(objField, FieldName, iMaxChars){
	var strField = new String(objField.value);
	if(strField.length > iMaxChars){
		alert(FieldName + " far inte innehalla fler an " + iMaxChars + " tecken.");
		if (objField.type != 'hidden') {
			objField.focus();
			objField.select();
		}
		return false;
	}
	return true;
}

// Checks to see if maxlenght of the field is not exceeded. If it is, a warning
// message is displayed...
function StrMinLength(objField, FieldName, iMinChars){
	var strField = new String(objField.value);
	if(strField.length < iMinChars){
		alert(FieldName + " maste minst innehalla " + iMinChars + " tecken.");
		if (objField.type != 'hidden') {
			objField.focus();
			objField.select();
		}
		return false;
	}
	return true;
}
			
			
function ComparePasswords(objField1, objField2){
	var code1 = objField1.value;
	var code2 = objField2.value;
	var bEqual = true;
	if(code1.length == code2.length){
		for(var i=0; i < code1.length; i++){
			//alert(code1.charAt(i) + "\n" + code2.charAt(i));
			if (code1.charAt(i) != code2.charAt(i)){
				bEqual = false;
				break;
			}
		}
	}
	else{
		bEqual = false;
	}
	if (!bEqual){
		//alert('Lösenorden är inte lika! V.g. att skriv det igen.');
		alert('Ej lika! V.g. att skriv det igen.');
		if (objField2.type != 'hidden') {
			objField2.focus();
			objField2.select();
		}

	}
	return bEqual;
}	

