/*******************************************************************
 * Copyright (c) 2002-2007 More Optimized Registration Elements AS *
 *******************************************************************/

var cancelValidate = false;
var cancelValidateField;
var eventlogValidate = false;


function resetCancelValidate() {
	confirm("resetCancelValidate()");
	if (cancelValidateField) cancelValidateField.focus();
	cancelValidate = false;
}

function validateNumValue(value, expr, rowId, wizardid) {
	var isValid = true;
	if (expr.length > 0) {
		var operator;
		var exprValue;
		if ((expr.charAt(1) == '=') || (expr.charAt(1) == '<') || (expr.charAt(1) == '>')) {
			operator = expr.substr(0, 2);
			exprValue = expr.substr(2);
		} else {
			operator = expr.substr(0, 1);
			exprValue = expr.substr(1);
		}
		if (exprValue.charAt(0) == '#') {
			if (exprValue.indexOf('#', 1) > -1) {
				exprValue = exprValue.substr(1, exprValue.indexOf('#', 1) - 1);
				//alert('Found refname to validate : ' + exprValue);
			}
			if (rowId > 0) {
				exprValue += "_" + rowId;
			}
			var response = getServerInfo('<Resultitem refName=\"'+exprValue+'\" wizardId=\"'+wizardid+'\"/>');
			var node = response.getElementsByTagName('resultitem').item(0);
			exprValue = node.getAttribute('value');
			//alert('Value returned is ' + exprValue + " rowId = " + rowId);
		}

		if (exprValue && exprValue.length > 0) {
			isValid = false;
			switch (operator) {
				case '>'  : isValid = (Number(value) > Number(exprValue)); break;
				case '<'  : isValid = (Number(value) < Number(exprValue)); break;
				case '>=' : isValid = (Number(value) >= Number(exprValue)); break;
				case '=>' : isValid = (Number(value) >= Number(exprValue)); break;
				case '<=' : isValid = (Number(value) <= Number(exprValue)); break;
				case '=<' : isValid = (Number(value) <= Number(exprValue)); break;
				case '!=' : isValid = (Number(value) != Number(exprValue)); break;
				case '='  : isValid = (Number(value) == Number(exprValue)); break;
			}
		}
		if (isValid == false && eventlogValidate == true) {
			try {
				logValidate(operator+ '|' + exprValue + '|' + value);
			} catch (exc) {
			}
		}
		return isValid;
	}
}

function getRequest(){
	var request = null;
	try {
		request = new ActiveXObject("Msxml2.XMLHTTP"); 
	} catch (e) {
		try {
			request = new ActiveXObject("Microsoft.XMLHTTP"); 
		} catch (e2) {
			try {
				request = new XMLHttpRequest(); 
			} catch(e3) {}	
		}
	}
	return request;
}

function getServerInfo(xml) {
	var request = getRequest();
	request.open("POST", 'lookup/getServerInfo.jsp', false);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8;');			    
	xml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>'+xml
	request.send(xml);
	if (request.readyState == 4) {
		if (request.status == 200) {
			var response = null;
			if (window.ActiveXObject){
				response = new ActiveXObject("Microsoft.XMLDOM");
				response.async=false;
				response.loadXML(request.responseText);
			} else {
				response  = request.responseXML;
			}				
			request = null;
			return response;
		}
	}
	return null;
}

function validateNumeric(field, fieldname, inputmask, strictvalidate, softvalidate, strictvalidatemsg, softvalidatemsg, elmerAlert, realfieldname, wizardid) {
	// #,000
	if (cancelValidate && cancelValidateField != field) {
		cancelValidate = false;
		return;
	}

	validateMessage = '';
	var iserrormessage = false;
	var isValid = true;
	var isSoftValid = true;

	var fValue = field.value;
	var fieldValue = fValue.replace(' ', '');
	fieldValue = fieldValue.replace(',', '.');

	//if ((fieldValue.length > 0) && (isNaN(fieldValue))) {
	if ((fieldValue.length > 0) && (isNaN(fieldValue) || (fieldValue.replace(' ','').length == 0) )) {
		isValid = false;
		iserrormessage = true;
		validateMessage = trans_NUMERIC;
	} else if (fieldValue.length == 0) {
		isValid = true;
	} else {
		var signPos = inputmask.indexOf("#");
		var decimalSeparator = inputmask.substr(signPos + 1, 1);
		var decimals = inputmask.substr(signPos + 2);
		var valSignpos = fieldValue.indexOf(".");
		if (valSignpos == 0) {
			fieldValue = "0" + fieldValue;
			valSignpos = fieldValue.indexOf(".");
		}
		var valDecimals = fieldValue.substr(valSignpos + 1);
		if (valSignpos >= 0) { // Found float 
			while (decimals.length > valDecimals.length) {
				fieldValue = fieldValue + "0";
				valDecimals = fieldValue.substr(valSignpos + 1);
			}
			if (valDecimals.length > decimals.length) {
				fieldValue = fieldValue.substr(0, valSignpos + 1 + decimals.length);
			}
		}
		
		var rowId = 0;
		if (realfieldname.lastIndexOf("_") > -1) {
			var valStr = realfieldname.substring(realfieldname.lastIndexOf("_")+1);
			if ('A_' + valStr != realfieldname) {
				if (!isNaN(valStr)) {
					rowId = valStr;
				}
			}
		}
		
		// Strict validation
		if (strictvalidate.length > 0) {
			var validatearray = strictvalidate.split("&&");
			var validpart = true;
			for (k in validatearray) {
				var validateStr = validatearray[k];
				if (validateStr.length > 0) {
					validpart = validpart && validateNumValue(fieldValue, validateStr, rowId, wizardid);
				}
			}
			if (validpart == false) {
				validateMessage = getValidateMessage(strictvalidate, strictvalidatemsg, false, wizardid);
				iserrormessage = true;
			}
			isValid = validpart;
		}

		// Soft validation
		if (isValid && (softvalidate.length > 0)) {
			var softvalidatearray = softvalidate.split("&&");
			var softvalidpart = true;
			for (m in softvalidatearray) {
				var softValidateStr = softvalidatearray[m];
				if (softValidateStr.length > 0) {
					softvalidpart = softvalidpart && validateNumValue(fieldValue, softValidateStr, rowId, wizardid);
				}
			}
			if (softvalidpart == false) {
				validateMessage = getValidateMessage(softvalidate, softvalidatemsg, true, wizardid);
			}
			isSoftValid = softvalidpart;
		}
	}
	
	if (elmerAlert == true) {
		showValidateHelp(validateMessage, elmerAlert, fieldname, realfieldname, iserrormessage); // Send validation error message or empty string to information area
	} else {
		showValidateHelp(validateMessage, elmerAlert, fieldname, realfieldname, iserrormessage); // Send validation error message or empty string to information area
		//showHelp(validateMessage); // Send validation error message or empty string to information area
	}
	
	if (!isValid) {
		cancelValidateField = field;
		cancelValidate = true;
		window.cancelHideQuestionHelp = true;
		cancelShowCalendar = true;
		if (document.getElementById && !document.all) { // Detecting Firefox because focus() doesnt work properly
		    setTimeout(function(){field.focus();},10);
		} else {
			field.focus();
		}
	} else {
		cancelShowCalendar = false;
		if (isSoftValid) { // Keep softvalid helpmessage
			window.cancelHideQuestionHelp = false;
			hideQuestionHelp();
		} else {
			window.cancelHideQuestionHelp = true;
		}
	}
	return false;
}

function validateDate(field, fieldname, inputmask, elmerAlert, realfieldname, strictDateValidate, softDateValidate, validateMsg, softValidateMsg, wizardId) {
	// dd.mm.yyyy
	if (cancelValidate && cancelValidateField != field) {
		cancelValidate = false;
		return;
	}	
	var isValid = true;
	var isSoftvalid = true;
	var maskIsValid = true;
	var dateValue = field.value;
	var hasValue = true;

	if (dateValue.length > 0 && inputmask.length > 0 && dateValue.length < inputmask.length) {
		var newDateValue = '';
		var k = 0;
		var added = 0;
		for (var i = 0; i < inputmask.length; i ++) {
			a = inputmask.charAt(i);
			if ((a == 'd') || (a == 'm') || (a == 'y') || (a == 'å')) {
				if (k < dateValue.length) {
					b = dateValue.charAt(k);
					if (isNaN(b) == false) {
						newDateValue += b;
					}
				}
			} else {
				newDateValue += a;
				if (k < dateValue.length) {				
					if (a != dateValue.charAt(k)) {
						k--;
						added++;
					}
				}
			}
			k++;
		}
		if (newDateValue.length == inputmask.length && (dateValue.length + added == newDateValue.length)) {
			dateValue = newDateValue;
			field.value = dateValue;
			if (window["onChange" + realfieldname] !== undefined) {
				window["onChange" + realfieldname]();
			}
		}
	}
	if (dateValue.length == 0) {
		isValid = true;
		hasValue = false;
	} else if (dateValue.length != inputmask.length) {
		maskIsValid = false;
	} else {
		var maskYearPos = inputmask.indexOf("yyyy");
		if (maskYearPos < 0) maskYearPos = inputmask.indexOf("åååå");
		var maskMonthPos = inputmask.indexOf("mm");
		var maskDayPos = inputmask.indexOf("dd");
		
		var year;
		var month;
		var day;
		if (maskYearPos > -1) year = dateValue.substr(maskYearPos, 4);
		if (maskMonthPos > -1) month = dateValue.substr(maskMonthPos, 2);
		if (maskDayPos > -1) day = dateValue.substr(maskDayPos, 2);

		if ((maskYearPos > -1) && isNaN(year)/* && (isNaN(year) || (year < 1000))*/) {
			maskIsValid = false;
		} else if ((maskMonthPos > -1) && isNaN(month)/* && (isNaN(month) || (month > 12))*/) {
			maskIsValid = false;
		} else if ((maskDayPos > -1) && isNaN(day)/* && (isNaN(day) || (day > 31))*/) {
			maskIsValid = false;
		} else {
			for (var i = 0; i < inputmask.length; i ++) {
				a = inputmask.charAt(i);
				if ((a != 'd') && (a != 'm') && (a != 'y') && (a != 'å')) {
					b = dateValue.charAt(i);
					if (a != b) {
						//alert('not valid: a=' + a + "b=" + b + " i=" + i + " imask=" + inputmask + " dateValue=" + dateValue);
						//isValid = false;
						maskIsValid = false;
						break;
					}
				}
			}
		}
		
		if (maskIsValid) { // Verify date range
			if ((maskYearPos > -1) && (isNaN(year) || year < 1000)) {
				isValid = false;
			} else if ((maskMonthPos > -1) && (isNaN(month) || month > 12 || month < 1)) {
				isValid = false;
			} else if ((maskDayPos > -1) && (isNaN(day) || day > 31 || day < 1)) {
				isValid = false;
			}
			// Check that the date exists
			if (isValid && maskDayPos > -1) {
				if (maskMonthPos < 0) { // Cant check day and month
					isValid = day > 0 && day < 32;
				} else {
					var monthLength = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
					// Make february 29 days if leap year
					if (year/4 == parseInt(year/4)) {
						// Skip every hundred year, except if its divisable with 400
						if (! ((year % 400 != 0) && (year % 100 == 0))) {
							monthLength[1] = 29;
						}
					}
					if (day > monthLength[month-1]) {
						isValid = false;
					}
				}
			}
		}
	}
	
	var validateMessage = "";
	if (!isValid || !maskIsValid) {
		if (!isValid) { // Daterange out of bounds
			validateMessage = trans_DATE_NOT_EXISTING;
		} else { // !maskIsValid, means invalid dateformat
			validateMessage = trans_RECOMMENDED_MISSING_FIELD + fieldname + trans_FORMAT + inputmask;
		}
	} else {
		// Strict validation
		if (hasValue && isValid && maskIsValid && strictDateValidate && strictDateValidate.length > 0) {
			var validatearray = strictDateValidate.split("&&");
			var validatepart = true;
			for (k in validatearray) {
				var validateStr = validatearray[k];
				if (validateStr.length > 0) {
					validatepart = validatepart && validateDateValue(validateStr,year,month,day,'',inputmask,wizardId);
				}
			}
			if (validatepart == false) {
				//validateMessage = getValidateMessage(strictvalidate, strictvalidatemsg, false, wizardid);
				validateMessage = getValidateDateMessage(strictDateValidate, validateMsg, false, wizardId);
				iserrormessage = true;
			}
			isValid = validatepart;
		}
		// Soft validation
		if (hasValue && isValid && maskIsValid && softDateValidate && softDateValidate.length > 0) {
			var softvalidatearray = softDateValidate.split("&&");
			var softvalidatepart = true;
			for (m in softvalidatearray) {
				var softValidateStr = softvalidatearray[m];
				if (softValidateStr.length > 0) {
					softvalidatepart = softvalidatepart && validateDateValue(softValidateStr,year,month,day,'',inputmask,wizardId);
				}
			}
			if (softvalidatepart == false) {
				//validateMessage = getValidateMessage(softvalidate, softvalidatemsg, true, wizardid);
				validateMessage = getValidateDateMessage(softDateValidate, softValidateMsg, true, wizardId);
			}
			isSoftvalid = softvalidatepart;
		}
	}
	
	// Send validation error message or empty string to information area
	showValidateHelp(validateMessage, elmerAlert, fieldname, realfieldname, isSoftvalid);
	
	if (!isValid || !maskIsValid || !isSoftvalid) {
		cancelValidateField = field;
		if (!isValid || !maskIsValid) {
			cancelValidate = true;
			window.cancelHideQuestionHelp = true;
			field.focus();
		}
		return false;
	} else {
		window.cancelHideQuestionHelp = false;
		hideQuestionHelp();
	}
	return true;
}

function validateZipcode(field, fieldname, elmerAlert, realfieldname) {
	var isValid = false;
	var validateMessage = "";

	if ((field.value.length > 0) && (isNaN(field.value) || (field.value > 9999) || (field.value < 0) )) {
		isValid = false;
		validateMessage = trans_RECOMMENDED_MISSING_FIELD + fieldname + trans_ZIPCODE;
	} else {
		isValid = true;
	}
	
	// Send validation error message or empty string to information area
	showValidateHelp(validateMessage, elmerAlert, fieldname, realfieldname, true);

	if (!isValid) {
		//alert(msg);
		if (window.event) {
			window.event.cancelBubble = true;
			if (window.event.stopPropagation) window.event.stopPropagation();
		}
		return false;
	}
}

function validateFnr(field, fieldname, elmerAlert, realfieldname) {
	if (cancelValidate && cancelValidateField != field) {
		cancelValidate = false;
		return;
	}

	if (field.value.length > 0) {
		
		var lookupUrl = "lookup/validatefnr.jsp";
		var lookupData = "fnr=" + field.value + "&elmeralert=" + elmerAlert + "&fieldname=" + realfieldname + "&qtext=" + fieldname + "&errormsg=" + trans_INVALID_FNR;
		var lookupResponse = doPost(lookupUrl, lookupData);
		
		var errorMsg = lookupResponse.responseText;
		var isError = (errorMsg.length > 10);
		
		//showValidateHelp(message, elmerAlert, qtext, fieldname, iserror, hideHelp) {
		if (isError) {
			showValidateHelp(errorMsg, elmerAlert, fieldname, realfieldname, isError, false);
		} else {
			showValidateHelp('', elmerAlert, '', realfieldname, true, true);
		}
		
		//if (document.getElementById) { // Level 1 DOM
		//	document.getElementById('lookup').innerHTML = lookupResponse.responseText;
		//} else if (document.all) { // Old IE
		//	document.all.lookup.src = lookupResponse.responseText;
		//}

		//lookup("lookup/validatefnr.jsp?fnr=" + field.value + "&elmeralert=" + elmerAlert + "&fieldname=" + realfieldname + "&qtext=" + fieldname + "&errormsg=" + trans_INVALID_FNR);
	} else {
		showValidateHelp('', elmerAlert, '', realfieldname, true);
	}
}

function getXmlHttpRequest() {
	var httpRequest = false;
	if (window.XMLHttpRequest) {
		httpRequest = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		try {
			httpRequest = new ActiveXObject('Msxml2.XMLHTTP');
		} catch (e) {
			try {
				httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
			} catch (e) {}
		}
	}
	return httpRequest;
}

function doPost(url, text) {
	var request = getXmlHttpRequest();
	try {
		with (request) {
			open('POST', url, false);
			setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
			setRequestHeader("Content-Length", text != null ? text.length : 0);
			send(text);
			if (readyState == 4 && status >= 200 && status < 300) {
				return request;					
			} else { // Error?
				return null;
			}
		}
	} catch (error) {
	}
	return null;
};


function validateOrgnr(field, fieldname, elmerAlert, realfieldname) {
	if (cancelValidate && cancelValidateField != field) {
		cancelValidate = false;
		return;
	}

	if (field.value.length > 0) {
		lookup("lookup/validateorgnr.jsp?fnr=" + field.value + "&elmeralert=" + elmerAlert + "&fieldname=" + realfieldname + "&qtext=" + fieldname + "&errormsg=" + trans_INVALID_ORGNR);
	} else {
		showValidateHelp('', elmerAlert, '', realfieldname, true);
	}
}

function validateEmail(field, fieldname, elmerAlert, realfieldname) {
	if (field.value.length > 0) {
		lookup("lookup/validateemail.jsp?email=" + field.value + "&elmeralert=" + elmerAlert + "&fieldname=" + realfieldname + "&qtext=" + fieldname + "&errormsg=" + trans_INVALID_EMAIL);
	} else {
		showValidateHelp('', elmerAlert, '', realfieldname, true);
	}
}

function showValidateHelp(message, elmerAlert, qtext, fieldname, iserror, hideHelp) {
//	confirm("showValidateHelp, message=" + message + " elmerAlert=" + elmerAlert + " qtext=" + qtext + " fieldname=" + fieldname + " iserror=" + iserror + " helpHelp=" + hideHelp);
	if (!hideHelp) hideHelp = false; // Hidehelp overrides and hides questionhelp
	var validateDiv = document.getElementById('validateDiv' + fieldname);
	if (validateDiv) {
		//alert('qtext = ' + qtext);
		var html = "";
		var isIE = document.all && !window.opera  && !(typeof document.body.style.maxHeight != "undefined");
		if (isIE) {
			if (iserror) {
				html += "<a href=\"javascript:void(0)\" onClick=\"toggleQuestionHelp('" + message + "',0,'" + qtext +"','" + fieldname + "');\"><span id=\"errorImg" + fieldname + "\"><span style=\"height:20; width:21; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/questioncheck_error.png', sizingMethod='scale');\"></span></span></a>";
			} else {
				html += "<a href=\"javascript:void(0)\" onClick=\"toggleQuestionHelp('" + message + "',0,'" + qtext +"','" + fieldname + "');\"><span id=\"errorImg" + fieldname + "\"><span style=\"height:20; width:21; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/questioncheck_warning.png', sizingMethod='scale');\"></span></span></a>";
			}
		} else {
			if (iserror) {
				html += "<a href=\"javascript:void(0)\" onClick=\"toggleQuestionHelp('" + message + "',0,'" + qtext +"','" + fieldname + "');\"><span id=\"errorImg" + fieldname + "\"><img src=\"images/questioncheck_error.png\" border=\"0\" /></span></a>";
			} else {
				html += "<a href=\"javascript:void(0)\" onClick=\"toggleQuestionHelp('" + message + "',0,'" + qtext +"','" + fieldname + "');\"><span id=\"errorImg" + fieldname + "\"><img src=\"images/questioncheck_warning.png\" border=\"0\" /></span></a>";
			}
		}
		validateDiv.innerHTML = html;
	} else {
		alert('Could not find validatediv = ' + fieldname);
	}
	if (!hideHelp) {
		toggleQuestionHelp(message ,0, qtext, fieldname, true);
	} else if (hideHelp == true) {
		hideQuestionHelp();
	}
	
	if (message.length == 0) {
		if (validateDiv) {
			validateDiv.innerHTML = "";
		}
	}
}

function showHelp(message) {
	var helpTextField = document.getElementById('helpText');
	if (helpTextField) {
		var helpText = message;
		if (helpText.length == 0) helpText = '';
		helpTextField.innerHTML = helpText;
	}
}

function getValidateMessage(validateExpr, userDefinedMessage, soft, wizardid) {
	var validationErrorMessage = userDefinedMessage;
	if ((validationErrorMessage.length == 0) && (validateExpr.length > 0)) {
		var validatearray = validateExpr.split("&&");
		for (k in validatearray) {
			var validateStr = validatearray[k];
			if (validationErrorMessage.length > 0) {
				validationErrorMessage += trans_LOGICAL_AND;
				validationErrorMessage += '<br/>';
			}
			if (validateStr.length > 0) {
				if (soft) {
					validationErrorMessage += trans_SHOULD;
				} else {
					validationErrorMessage += trans_MUST;
				}
				
				var operator;
				var exprValue;
				if ((validateStr.charAt(1) == '=') || (validateStr.charAt(1) == '<') || (validateStr.charAt(1) == '>')) {
					operator = validateStr.substr(0, 2);
					exprValue = validateStr.substr(2);
				} else {
					operator = validateStr.substr(0, 1);
					exprValue = validateStr.substr(1);
				}
				
				var qtextSeparator = '';
				if (exprValue.charAt(0) == '#') {
					if (exprValue.indexOf('#', 1) > -1) {
						exprValue = exprValue.substr(1, exprValue.indexOf('#', 1) - 1);
						//alert('Found refname to validate : ' + exprValue);
					}
					var response = getServerInfo('<Questiontext refName=\"'+exprValue+'\" wizardId=\"'+wizardid+'\"/>');
					var node = response.getElementsByTagName('questiontext').item(0);
					exprValue = node.getAttribute('value');
					qtextSeparator = '' ; // are having problems with '\''
				}
				
				switch (operator) {
					case '>'  : validationErrorMessage += trans_GREATER; break;
					case '<'  : validationErrorMessage += trans_LESS; break;
					case '>=' : validationErrorMessage += trans_GREATER_OR_EQUAL; break;
					case '=>' : validationErrorMessage += trans_GREATER_OR_EQUAL; break;
					case '<=' : validationErrorMessage += trans_LESS_OR_EQUAL; break;
					case '=<' : validationErrorMessage += trans_LESS_OR_EQUAL; break;
					case '!=' : validationErrorMessage += trans_NOT_EQUAL; break;
					case '='  : validationErrorMessage += trans_EQUAL; break;
				}
				
				validationErrorMessage += qtextSeparator;
				validationErrorMessage += exprValue;
				validationErrorMessage += qtextSeparator;
				validationErrorMessage += '<br/>';						
			}
		}
	}
	//alert('built validate message :' + validationErrorMessage);
	return validationErrorMessage;
}

function validateDateValue(dateCompare, selectedYear, selectedMonth, selectedDay, selectedDate, inputMask, wizardId) {
	var isValid = true;
	var operator = '';
	var exprValue = '';
	if ((dateCompare.charAt(1) == '=') || (dateCompare.charAt(1) == '<') || (dateCompare.charAt(1) == '>')) {
		operator = dateCompare.substr(0, 2);
		exprValue = dateCompare.substr(2);
	} else {
		operator = dateCompare.substr(0, 1);
		exprValue = dateCompare.substr(1);
	}
	if (operator.length > 0) {
		var compareDateFieldValue='';
		var compareDateInputmask='';
		var year = '';
		var month = '';
		var day = '';
		if (exprValue.indexOf('$$VALUE$$') > -1) {
			compareDateFieldValue = exprValue.substring(exprValue.indexOf('$$VALUE$$') + 9);
			compareDateInputmask = inputMask;
			year = getDatePart(compareDateFieldValue,compareDateInputmask,'year');
			month = getDatePart(compareDateFieldValue,compareDateInputmask,'month');
			day = getDatePart(compareDateFieldValue,compareDateInputmask,'day');
		} else if (exprValue.indexOf('#') > -1) {
			compareDateFieldValue = exprValue.substring(exprValue.indexOf('#') + 1);
			//alert('compareDateFieldValue = ' + compareDateFieldValue);
			if (compareDateFieldValue.indexOf('#') > -1) {
				compareDateFieldValue = compareDateFieldValue.substr(0, compareDateFieldValue.indexOf('#', 0));
				//alert('Found refname to validate : ' + compareDateFieldValue);
			}
			//if (rowId > 0) {
				//compareDateFieldValue += "_" + rowId;
			//}
			//var response = getServerInfo('<Resultitem refName=\"'+exprValue+'\" wizardId=\"'+wizardid+'\"/>');
			//var node = response.getElementsByTagName('resultitem').item(0);
			//exprValue = node.getAttribute('value');
			//alert('Value returned is ' + exprValue + " rowId = " + rowId);

			var response = getServerInfo('<Dateresultitem refName=\"'+compareDateFieldValue+'\" wizardId=\"' + wizardId + '\"/>');
			var node = response.getElementsByTagName('dateresultitem').item(0);
			compareDateFieldValue = node.getAttribute('value');
			//alert('Value returned is ' + compareDateFieldValue + " qId = " + compareDateFieldId + ' length = ' + compareDateFieldValue.length);
			//compareDateFieldValue = exprValue;
			compareDateInputmask = node.getAttribute('mask');
			//alert('compareMask = ' + compareDateInputmask);
			year = getDatePart(compareDateFieldValue,compareDateInputmask,'year');
			month = getDatePart(compareDateFieldValue,compareDateInputmask,'month');
			day = getDatePart(compareDateFieldValue,compareDateInputmask,'day');
		}
		if (compareDateFieldValue.length > 0) {
			if (compareDateInputmask && compareDateInputmask.indexOf('mm') == -1) { // No month
				switch (operator) {
					case '>'  : month = '12'; break;
					case '<'  : month = '01'; break;
					case '>=' : month = '01'; break;
					case '<=' : month = '12'; break;
				}
			}
			if (compareDateInputmask.indexOf('dd') == -1) { // No day
				switch (operator) {
					case '>'  : day = '31'; break;
					case '<'  : day = '01'; break;
					case '>=' : day = '01'; break;
					case '<=' : day = '31'; break;
				}
			}

			if (inputMask.indexOf("mm") == -1) { // No month
				switch (operator) {
					case '>'  : selectedMonth = '12'; break;
					case '<'  : selectedMonth = '01'; break;
					case '>=' : selectedMonth = '01'; break;
					case '<=' : selectedMonth = '12'; break;
				}
			}
			if (inputMask.indexOf("dd") == -1) { // No day
				switch (operator) {
					case '>'  : selectedDay = '31'; break;
					case '<'  : selectedDay = '01'; break;
					case '>=' : selectedDay = '01'; break;
					case '<=' : selectedDay = '31'; break;
				}
			}						
		
			var compareDatesum = parseInt('' + year + month + day, 10);
			var currentDatesum = parseInt('' + selectedYear + selectedMonth + selectedDay, 10);
			//alert("year=" + year + " month=" + month + " day=" + day + " compareDatesum=" + compareDatesum + " currentDatesum=" + currentDatesum + " dateIsValid=" + isValid);

			switch (operator) {
				case '>'  : isValid = currentDatesum > compareDatesum; break;
				case '<'  : isValid = currentDatesum < compareDatesum; break;
				case '>=' : isValid = currentDatesum >= compareDatesum; break;
				case '<=' : isValid = currentDatesum <= compareDatesum; break;
			}
		}
	}
	return isValid;
}

function validateInputMask(field, inputMask) {
	var decimalLimit = 0;
	var sPos = inputMask.indexOf(',');
	if (sPos >= 0) {
		decimalLimit = inputMask.length - sPos - 1;
	}
	
	var fieldValue = field.value;
	fieldValue = fieldValue.replace(' ', '');
	fieldValue = fieldValue.replace('.', ',');
	if (field.value != fieldValue) field.value = fieldValue;
	var vPos = fieldValue.indexOf(',');
	if (vPos >= 0) {
		if (decimalLimit == 0) {
			field.value = fieldValue.substring(0, vPos);
		} else {
			var valueDecimals = fieldValue.length - vPos - 1;
			if (valueDecimals > decimalLimit) {
				field.value = fieldValue.substring(0, vPos + decimalLimit + 1);
			}
		}
	}
}

