
function isEmail(emailStr){
var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^\\s" + specialChars + "\]";
var quotedUser="(\"[^\"]*\")";
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=emailStr.match(emailPat);
if(matchArray==null){
return false;
}
var user=matchArray[1];
var domain=matchArray[2];
for(i=0; i<user.length; i++){
if(user.charCodeAt(i)>127){
return false;
}
}
for(i=0;i<domain.length;i++){
if(domain.charCodeAt(i)>127){
return false;
}
}
if(user.match(userPat)==null){
return false;
}
var IPArray=domain.match(ipDomainPat);
if(IPArray!=null){
for(var i=1;i<=4;i++){
if(IPArray[i]>255){
return false;
}
}
return true;
}
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for(i=0;i<len;i++){
if(domArr[i].search(atomPat)==-1){
return false;
}
}
if(domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1){
return false;
}
if(len<2){
return false;
}
return true;
}


function cf(){}
function cfi(object){cf();var str=parseInt(object.value)+0;if(isNaN(str)){window.alert('Feltet skal indeholde et tal.');object.focus();return false;}else{object.value=str;return true;}}
function y2k(year) { return (year < 100) ? parseInt(year) + 2000 : year;}
function isDateOK(day,month,year){var date = new Date();month=((!month)?date.getMonth:month);year=((!year)?date.getYear:year);var test = new Date(year,month-1,day);if((y2k(test.getYear()) == y2k(year)) && (month == test.getMonth()+1) && (day == test.getDate())) return day+'-'+month+'-'+y2k(year);else return ''}

function isDateTimeOK(day,month,year,hour,min) {
	min=((!min)?'00':min);
    var test = new Date(year,month-1,day,hour,min);

	if ( (y2k(test.getYear()) == y2k(year)) &&
         (month == test.getMonth()+1) &&
         (day == test.getDate()) &&
         (hour == test.getHours()) &&
         (min == test.getMinutes()) )
        return day+'-'+month+'-'+y2k(year)+' '+hour+':'+min;
    else
        return ''
}

function isDate(str){var d='';var r1 = new RegExp('^[0-9]{2}-[0-9]{2}-20[0-9]{2}$');var r2 = new RegExp('^[0-9]{2}|[0-9]{4}|[0-9]{6}$');var r3 = new RegExp('^[0-9]{4}20[0-9]{2}$');if (r1.test(str)){d = isDateOK(str.substring(0,2),str.substring(3,5),str.substring(6,10));}else if (r2.test(str)){d = isDateOK(str.substring(0,2),str.substring(2,4),str.substring(4,6));} else if (r3.test(str)){d = isDateOK(str.substring(0,2),str.substring(2,4),str.substring(4,8));}return d;}
function cfd(object){cf();if (object.value=='')
{return true;}else{var str=isDate(object.value);if (str=='') {window.alert('Feltet skal indeholde en dato\ni formatet:\ndd-mm-yyyy\neller\nddmmyy\neller\nddmm20yy');object.focus();return false;}else{object.value=str;cf();return true;}}}
function isDateTime(str){
	var d='';
	var r1 = new RegExp('^[0-9]{2}-[0-9]{2}-20[0-9]{2} [0-9]{2}:[0-9]{2}$');
	var r2 = new RegExp('^[0-9]{6} [0-9]{4}$');
	var r3 = new RegExp('^[0-9]{6}[0-9]{4}$');
	if (r1.test(str)){	
		d=isDateTimeOK(str.substring(0,2),str.substring(3,5),str.substring(6,10),str.substring(11,13),str.substring(14,16));
		}
	else if (r2.test(str)){
		d=isDateTimeOK(str.substring(0,2),str.substring(2,4),str.substring(4,6),str.substring(7,9),str.substring(9,11));
		}
	else if (r3.test(str)){
		d=isDateTimeOK(str.substring(0,2),str.substring(2,4),str.substring(4,6),str.substring(6,8),str.substring(8,10));
	}
	return d;
}
function cfdt(object){
	cf();
	var str=isDateTime(object.value);
	if (str==''){window.alert('Feltet skal indeholde en dato og tid\ni formatet:\ndd-mm-yyyy hh:nn\neller\nddmmyy hhnn\neller\nddmmyyhhnn');object.focus();return false;}else{object.value=str;return true;}}

function cfe(object){
	cf();
	if (!isEmail(object.value)){
		window.alert('Feltet skal indeholde en korrekt e-mail adresse.');
		object.focus();
		return false;
	}else{return true;}
}

function cfdtg(object,smallObject){
	var str,d1,d2
	if (cfdt(object))
	{
		str = object.value;
		d2=isDateTimeOK(str.substring(0,2),str.substring(3,5),str.substring(6,10),str.substring(11,13),str.substring(14,16));
		str = smallObject.value;
		d1=isDateTimeOK(str.substring(0,2),str.substring(3,5),str.substring(6,10),str.substring(11,13),str.substring(14,16));
		if (d2<d1)
		{
			window.alert('Feltet skal indeholde en større dato og tid.');
			object.focus();
			return false;
		} else
		{ return true; }
	} else
	{ return false;}
}

function cff(object){cf();if (object.value==''){return true;}var str=parseFloat(object.value)+0;if (isNaN(str)){window.alert('Feltet skal indeholde en pris.');object.focus();return false;}else{object.value=str;return true;}}

var FieldArray = ':';

function setValidate(field){
FieldArray += field+':';
}

function validateFields(Object) {

	var valid = true;
	var myType;
	var ObjectName;
	var sDummy='';
	var StartT=null;
	var EndT=null;
	var checkBoxes = false;
	var checkboxChecked = false;
	var radioButtons = false;
	var radioChecked = false;

    for (var i=0, j=Object.elements.length; i<j; i++) {
		myType = Object.elements[i].type;
		ObjectName = Object.elements[i].name;


		if (FieldArray.indexOf(':'+ObjectName+':')!=-1){
			
			if (myType=='select-one'|| myType == 'select-multiple') {
				if (-1==Object.elements[i].options[Object.elements[i].selectedIndex].value){
						valid = false; 
						sDummy += '\''+ObjectName+'\' skal vælges.\n';
						Object.elements[i].style.backgroundColor="#FFFF99";
					}
			} else
			if (myType=='text' || myType == 'password' || myType == 'textarea') { 
				if (''==Object.elements[i].value){
						valid = false;
						sDummy += '\''+ObjectName+'\' skal udfyldes.\n';
						Object.elements[i].style.backgroundColor="#FFFF99";
				}
			} else
			{
				if (myType == 'radio') {
					radioButtons = true;
					if (Object.elements[i].checked) radioChecked = true;
				}

				if (myType == 'checkbox') {
					checkBoxes = true;
					if (Object.elements[i].checked){checkboxChecked = true;}else {Object.elements[i].style.backgroundColor="#FFFF99";}
				}
			}
		} 
    }

	if (radioButtons && !radioChecked){
		for (var i=0, j=Object.elements.length; i<j; i++) {
			myType = Object.elements[i].type;
			ObjectName = Object.elements[i].name;

			if (FieldArray.indexOf(':'+ObjectName+':')!=-1){
				
				if (myType == 'radio') {
					Object.elements[i].style.backgroundColor="#FFFF99";
				}
			} 
		}
	}


    if ((checkBoxes && !checkboxChecked) || (radioButtons && !radioChecked)){ valid = false;sDummy+=ObjectName+'\n'}

    if (!valid){
		sDummy = '\nAlle gule felter skal benyttes.'
        alert(sDummy);
	}

    return valid;
}

function changeImage(name,src) {
    if (document.images)
        document.images[name].src = src;
}
