function isDate(date) {
    var pattern = "^((((31\\/(0?[13578]|1[02]))|((29|30)\\/(0?[1,3-9]|1[0-2])))\\/(1[6-9]|[2-9]\\d)?\\d{2})|(29\\/0?2\\/(((1[6-9]|[2-9]\\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))|(0?[1-9]|1\\d|2[0-8])\\/((0?[1-9])|(1[0-2]))\\/((1[6-9]|[2-9]\\d)?\\d{2})) (20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$";
	var filter = new RegExp( pattern, "g" );
	return filter.test(date);
}


// Is the string empty?
function isEmpty(s) {
   return ((s == null) || (s.length == 0))
}

// Returns true if the string s is emtpy or contains a whitespace
function isWhitespace(s) { 
	var i;
	// Whitespace signs.
	var whitespace = " \t\n\r";

    // Is s empty?
    if (isEmpty(s)) return true;

	// Searching through all charaters in s until the first whitespace.
	// If a whitespace exists - return false; if not return true
    for (i = 0; i < s.length; i++)
    {   
        // Is the character a whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}

function isEmailAdress(s) {  
    // Is it whitespace
    if (isWhitespace(s)) return false;
    
    // Det må være >= 1 tegn før @, så vi starter
    // å se på tegnet i posisjon 1.
    var i = 1;
    var sLengde = s.length;

    // Ser etter @
    while ((i < sLengde) && (s.charAt(i) != "@")) {
    	i++
    }

    if ((i >= sLengde) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // Ser etter .
    while ((i < sLengde) && (s.charAt(i) != ".")) {
    	i++
    }
    
    // Det må være minst et tegn etter .
    if ((i >= sLengde - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

function isInteger(checkStr) {
	var checkOK = "0123456789-+";
  	for (i = 0;  i < checkStr.length;  i++){
    	ch = checkStr.charAt(i);
    	for (j = 0;  j < checkOK.length;  j++)
      		if (ch == checkOK.charAt(j))
        		break;
    	if (j == checkOK.length){
      		return false;
      	}
  	}

   return true;
}

function isNumber(checkStr) {
	var checkOK = "0123456789.-+";
  	for (i = 0;  i < checkStr.length;  i++){
    	ch = checkStr.charAt(i);
    	if (ch==',')
    		ch='.';
    	for (j = 0;  j < checkOK.length;  j++)
      		if (ch == checkOK.charAt(j))
        		break;
    	if (j == checkOK.length){
      		return false;
      	}
  	}

   return true;
}

function validText(s,sign,formName) {
	var checkOK = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ"+sign+String.fromCharCode(160)+" \t\r\n\f";
 	var allValid = true;
	var i, j;
  	for (i = 0;  i < s.length;  i++){
    	ch = s.charAt(i);
    	for (j = 0;  j < checkOK.length;  j++)
      		if (ch == checkOK.charAt(j))
        		break;
    	if (j == checkOK.length){
      		allValid = false;
      		break;
    	}
  	}
  	if (!allValid){
    	//last//alert("Du har skrevet inn et ulovlig tegn, "+ch+", i '"+formName+"'");
	    //alert("Du har skrevet inn et ulovlig tegn, "+ch+", i '"+formName+"', charcode: '"+ch.charCodeAt(0)+"' plassering: '"+i+"' Tekst: '"+s.substr(i-10, 20)+"'");
		return false;
  	}
  	return true;	
}

function rightLength(s,min,max,formName) {
	if (s != null) {
		if (s.length < min) {
			//alert("Innholdet i '"+formName+"' er ikke langt nok. Lenge må være minimum "+min+" og maks "+max+" tegn.");
			return false;
		}else if(s.length > max){
			//alert("Innholdet i '"+formName+"' er for langt. Lenge må være minimum "+min+" og maks "+max+" tegn.");
			return false;
		}else{
			return true;
		}
	}
}

function left(str, length) {
	if (str.length >= length){
		return str.substring(0, length);
	}else{
		return str.substring(0);
	}
}

function right(str, length){
	if (str.length >= length){
		return str.substring(str.length - length, str.length);
	}else{
		return str.substring(0);
	}
}