var aTxtValid = new Array();
var aMultiValid = new Array();
var txtVer = new Array();

function classTekst(txt) {
		this.text = txt;
}

function validateEmail (emailStr) {

	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];
	
	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 domainArray=domain.match(domainPat)
	if (domainArray==null) {
		return false;
	}
	
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>4) {
		return false;
	}
	
	if (len<2) {
		return false;
	}
	
	return true;
}

function setTableDefaults(iElementNr, iDef, x) {
	
	sElement = "document.capture.t" + iElementNr + x + "i";
	
	for (rows = 1; rows <= eval("document.capture.rows" + iElementNr + ".value"); rows++) {
		colLen = eval(sElement + rows + ".length");
		
		isChecked = false
		for (cols = 0; cols < colLen; cols++) {
			if (eval(sElement + rows + "[cols].checked")) {
				isChecked = true
			}
		}
		
		if (!isChecked) {
			eval(sElement + rows + "[iDef-1].checked = true");
		}
	}
}
						
function cTxtValidator(sVarName, eNr, iType, iValue, sRowTxt) {
	 this.sVarName	= sVarName;
	 this.eNr		= eNr;
	 this.iType		= iType;
	 this.iValue	= iValue;
	 this.sRowTxt	= sRowTxt;
}

function cMultiValidator(sVarName, eNr, iMin, iMax) {
	 this.sVarName	= sVarName;
	 this.eNr		= eNr;
	 this.iMin		= iMin;
	 this.iMax		= iMax;
}

function IsNumeric(strString) {
	var strValidChars = "0123456789.-";
	var strChar;

	if (strString.length == 0) return false;

	for (j = 0; j < strString.length; j++) {
		strChar = strString.charAt(j);
		if (strValidChars.indexOf(strChar) == -1) return false;
	}
	return true;
}

function setNumericDefaults(myTxtBox) {
	if (eval("document.capture." + myTxtBox.sVarName + ".value") == "") {
		eval("document.capture." + myTxtBox.sVarName + ".value = myTxtBox.iValue");
	}
}

function validContent(myCheck, sLanguageID) {
	
	if (eval("document.capture." + myCheck.sVarName)) {
	
	    var s = eval("document.capture." + myCheck.sVarName + ".value");
    	
	    if ((eval("document.capture.iLock" + myCheck.eNr + ".value") == 1) || (s != "")) {
    	
	        // Email validator
	        if (myCheck.iType == 5) {
		        if (validateEmail(s)) {
			        return true;
		        } else {
			        alert(txtVer[9].text + '\n' + myCheck.sRowTxt);
			        eval("document.capture." + myCheck.sVarName + ".focus();");
			        enAbleButtons();
			        return false;
		        }
	        }

	        // Angiv venligst et gyldigt nummer!
	        if (!IsNumeric(s)) {
		        alert(myCheck.sRowTxt + '\n' + txtVer[0].text);
		        eval("document.capture." + myCheck.sVarName + ".focus();");
		        enAbleButtons();
		        return false;
	        }
	        var iVal = parseFloat(s);
        	
	        // Angiv venligst et gyldigt nummer på #VALUE# cifre!
	        if ((myCheck.iType == 1) && (s.length != myCheck.iValue)) {
		        var newstr = txtVer[1].text.replace('#VALUE#', myCheck.iValue);
		        alert(myCheck.sRowTxt + '\n' + newstr);
		        eval("document.capture." + myCheck.sVarName + ".focus();");		
		        enAbleButtons();
		        return false;
	        }
        	
	        // Angiv venligst et nummer på mindst #VALUE#!
	        if ((myCheck.iType == 2) && (iVal < myCheck.iValue)) {
		        var newstr = txtVer[2].text.replace('#VALUE#', myCheck.iValue);
		        alert(myCheck.sRowTxt + '\n' + newstr);
		        eval("document.capture." + myCheck.sVarName + ".focus();");		
		        enAbleButtons();
		        return false;
	        }
        	
	        // Angiv venligst et nummer på max #VALUE#!
	        if ((myCheck.iType == 3) && (iVal > myCheck.iValue)) {
		        var newstr = txtVer[3].text.replace('#VALUE#', myCheck.iValue);
		        alert(myCheck.sRowTxt + '\n' + newstr);
		        eval("document.capture." + myCheck.sVarName + ".focus();");		
		        enAbleButtons();
		        return false;
	        }
	    }
	}
	
	return true;
}

function validChecks(myCheck, sLanguageID) {
	
	
	// check if element exists (element might be set to invisible)
    if (eval("document.capture." + myCheck.sVarName)) {
    
	    var s = eval("document.capture." + myCheck.sVarName + ".value");
	    var count = 0;
    	
	    if (s == 1) {
		    if( eval("document.capture." + myCheck.sVarName + ".checked") ) {
			    var count = 1;
		    }
        } else {
	  	    for( ii = 0; ii <= eval("document.capture.noa" + myCheck.eNr + ".value-1"); ii++ ) {
	    		    if( eval("document.capture." + myCheck.sVarName + "[" + ii + "].checked") ) count++;
	    		    }
	    }
    	
	    if (myCheck.iMin != -1) {
		    if (count < myCheck.iMin) {
			    alert(eval("document.capture.question" + myCheck.eNr + ".value") + ":\nDer skal minimum markeres " + myCheck.iMin + " svarmuligheder.");
			    enAbleButtons();
			    return false;
		    }
	    }
	    if (myCheck.iMax != -1) {
		    if (count > myCheck.iMax) {
			    alert(eval("document.capture.question" + myCheck.eNr + ".value") + ":\nDer kan maximum markeres " + myCheck.iMax + " svarmuligheder.");
			    enAbleButtons();
			    return false;
		    }
	    }
	    
	}
	
	return true;
}

function disAbleButtons() {
	if (document.capture.backBtn) { document.capture.backBtn.disabled = true; }
	if (document.capture.printBtn) { document.capture.printBtn.disabled = true; }
	if (document.capture.nextBtn) { document.capture.nextBtn.disabled = true; }
}

function enAbleButtons() {
	if (document.capture.backBtn) { document.capture.backBtn.disabled = false; }
	if (document.capture.printBtn) { document.capture.printBtn.disabled = false; }
	if (document.capture.nextBtn) { document.capture.nextBtn.disabled = false; }
}

function validateSimpleChoice(eNr, sType) {
	if (eval("document.capture.noa" + eNr + ".value") == 1) {
		if( eval("document.capture." + sType + eNr + ".checked") ) {
			return true;
		} else {
			eval("document.capture." + sType + eNr + ".focus()");
			return false;
		}
    	} else {
	  	for( ii = 0; ii <= eval("document.capture.noa" + eNr + ".value-1"); ii++ ) {
	    		if( eval("document.capture." + sType + eNr + "[" + ii + "].checked") ) return true;
	    		}
	    	eval("document.capture." + sType + eNr + "[0].focus()");
	    	return false;
	}	    	
  	return false;
}

function validateMenu(eNr) {
	if( eval("document.capture.dm" + eNr + ".value > 0") ) {
		return true;
	} else {
		eval("document.capture.dm" + eNr + ".focus()");
		return false;
	}
}

function validateTextElements(eNr) {
  	for( ii = 1; ii <= eval("document.capture.noa" + eNr + ".value"); ii++ ) {
    		if( eval("document.capture.s" + eNr + "_" + ii + ".value.length < 1") ) return ii;
    		}
  	return 0;
}

function validateTableRow(eNr,eRow) {
	if (eval("document.capture.cols" + eNr + ".value == 1")) {
		if(! eval("document.capture.t" + eNr + "i" + eRow + ".checked") ) {
			eval("document.capture.t" + eNr + "i" + eRow + ".focus()");
			return false;
		} else {
			return true;
		}
	} else {
  		for( ii = 0; ii <= eval("document.capture.cols" + eNr + ".value-1"); ii++ ) {
  			if( eval("document.capture.t" + eNr + "i" + eRow + "[" + ii + "].checked == 1") ) { return true; }
    			}
    		eval("document.capture.t" + eNr + "i" + eRow + "[0].focus()");
  		return false;
  	}
}

function validateInnerExtendedTableRow(eNr,eRow) {

	if( eval("document.capture.xcols" + eNr + ".value > 1") ) {
	  	for( j = 0; j <= eval("document.capture.xcols" + eNr + ".value-1"); j++ )
	    		if( eval("document.capture.t" + eNr + "xi" + eRow + "[" + j + "].checked") ) {
	    			return true;
	    		}
	    	eval("document.capture.t" + eNr + "xi" + eRow + "[0].focus()");
	    	return false;
	} else {
		if( eval("document.capture.t" + eNr + "xi" + eRow + ".checked") ) {
	    		return true;
	    	}
	    	eval("document.capture.t" + eNr + "xi" + eRow + ".focus()");
	    	return false;				    	
	}
	
}
		
function validateExtendedTableRow(eNr,eRow) {
  	for( ii = 0; ii <= eval("document.capture.cols" + eNr + ".value-1"); ii++ )
  	{
		if( eval("document.capture.t" + eNr + "i" + eRow + "[" + ii + "]") ) {
			if( eval("document.capture.t" + eNr + "i" + eRow + "[" + ii + "].checked") ) {
				return validateInnerExtendedTableRow(eNr,eRow);
			}
		} else {
			if( eval("document.capture.t" + eNr + "i" + eRow + ".checked" ) ) {
		    		return validateInnerExtendedTableRow(eNr,eRow);	    			
			}
			else
				return false;
		}
	}
	
	if (eval("document.capture.t" + eNr + "i" + eRow + "[0]"))
		eval("document.capture.t" + eNr + "i" + eRow + "[0].focus()");
	else
		eval("document.capture.t" + eNr + "i" + eRow + ".focus()");
		    	
	return false;
	
}

function validering(move){
	if ((move == 'print') || (move == 'back'))
		return true;

	for ( i = 1; i < document.capture.noe.value+1; i++) {
		if (eval("document.capture.iType" +i)) {
			if (eval("document.capture.iLock" + i + ".value == 1")) {
				
				if ((eval("document.capture.iType" + i + ".value == 1")) || (eval("document.capture.iType" + i + ".value == 3"))) {

					sType = "";
					sText = "";
					if (eval("document.capture.iType" + i + ".value == 1")) { sType = "sc"; sText = txtVer[4].text + "\n"; }
					if (eval("document.capture.iType" + i + ".value == 3")) { sType = "ml"; sText = txtVer[6].text + "\n"; }
					
					if (!validateSimpleChoice(i, sType)) {
						alert(sText + eval("document.capture.question" + i + ".value"));
						enAbleButtons();
						return false;
					}
				 }

				if (eval("document.capture.iType" + i + ".value == 2") ) {
					if (!validateMenu(i)) {
						alert(txtVer[5].text + "\n" + eval("document.capture.question" + i + ".value"));
						enAbleButtons();
						return false;
					}
				 }

				if (eval("document.capture.iType" + i + ".value == 4")) {
					sTest = validateTextElements(i);
					if (sTest > 0) {
						alert(txtVer[7].text + "\n" + eval("document.capture._s" + i + "_" + sTest + ".value"));
						eval("document.capture.s" + i + "_" + sTest + ".focus()");
						enAbleButtons();
						return false;
					}
				 }
				
				
				if (eval("document.capture.iType" + i + ".value == 5") || eval("document.capture.iType" + i + ".value == 8")) {
					for (eRow = 1; eRow <= eval("document.capture.rows" + i + ".value"); eRow++) {
						if (!validateTableRow(i,eRow)) {
							alert(txtVer[8].text + "\n" + eval("document.capture.table" + i + "_" + eRow + ".value"));
							enAbleButtons();
							return false;
						}
					}
				 }
				 
				 if (eval("document.capture.iType" + i + ".value == 6")) {
				 	if (eval("document.capture.xcols" + i + ".value == 0")) {
						for (eRow = 1; eRow <= eval("document.capture.rows" + i + ".value"); eRow++) {
							if (!validateTableRow(i,eRow)) {
								alert(txtVer[8].text + "\n" + eval("document.capture.table" + i + "_" + eRow + ".value"));
								enAbleButtons();
								return false;
							}
						}
				 	} else {
						for (eRow = 1; eRow <= eval("document.capture.rows" + i + ".value"); eRow++) {
							if (!validateExtendedTableRow(i,eRow)) {
								alert(txtVer[8].text + "\n" + eval("document.capture.table" + i + "_" + eRow + ".value"));
								enAbleButtons();
								return false;
							}
						}
					}					 
				}
			}
		}
	}

	// Validate content of text boxes
	for (i = 0; i < aTxtValid.length; i++)
		if (!validContent(aTxtValid[i])) return false;

	for (i = 0; i < aMultiValid.length; i++)
		if (!validChecks(aMultiValid[i])) return false;

	return true;
}
		
proceedOk = true

var disable = false;
function submitIT(move) {
	if(!disable)  {
		if (validering(move)) {
			if(move != 'clear') {
				disable = true;
				actionAddr = 'survey.aspx';
				document.capture.move.value = move;
				document.capture.action = actionAddr;
				document.capture.method = 'POST';
				document.capture.submit();
			} else {
				document.capture.reSET();
			}
		}
	}
}