/*** Copyright (c) 2002-2004 more as ***/

var monthNames = new Array("Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember");
var monthDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var defaultInputMask = 'dd.mm.yyyy';

var currentYear;
var currentMonth;
var currentDateField;
var currentInputMask;
var cancelHideCalendar = false;
var cancelShowCalendar = false;

var currentDateCompare;
var currentSoftDateCompare;
var currentWizard;
var currentWizard;
var currentValidatemsg;
var currentSoftvalidatemsg;

function getAbsolutePosX(field) {
	var xpos = field.offsetLeft;
	while (field.offsetParent) {
		field = field.offsetParent;
		if (field) xpos += field.offsetLeft;
	}
	return xpos;
}

function getAbsolutePosY(field) {
	var ypos = field.offsetTop;
	while (field.offsetParent) {
		field = field.offsetParent;
		if (field) ypos += field.offsetTop;
	}
	return ypos;
}

function showCalendar(event, dateField, addOffsetLeft, addOffsetTop, inputMask, dateCompare, softdateCompare, validateMsg, softvalidateMsg, wizardId) {
	if (cancelShowCalendar) {
		cancelShowCalendar = false;
		return;
	}
	
	if (!dateField) return;
	
	if (!inputMask || (inputMask.length == 0)) {
		inputMask = defaultInputMask;
	}
	currentDateCompare = dateCompare;
	currentSoftDateCompare = softdateCompare;
	currentWizard = wizardId;
	currentValidatemsg = validateMsg;
	currentSoftvalidatemsg = softvalidateMsg;

	cancelHideCalendar = true;
	currentDateField = dateField;
	if (inputMask) {
		if (inputMask.indexOf('åååå') >= 0) {
			inputMask = inputMask.replace('åååå', 'yyyy');
		}
		currentInputMask = inputMask;
	} else {
		currentInputMask = '';
	}
	
	var now = new Date();
	var fieldValue = dateField.value;
	if (fieldValue.length >= 10) {
		var maskYearPos = inputMask.indexOf("yyyy");
		var maskMonthPos = inputMask.indexOf("mm");
		var maskDayPos = inputMask.indexOf("dd");
		
		var fieldDay = parseInt(fieldValue.substr(maskDayPos, 2));
		var fieldMonthStr = fieldValue.substr(maskMonthPos, 2);
		if (fieldMonthStr.charAt(0) == '0') fieldMonthStr = fieldMonthStr.charAt(1);
		var fieldMonth = parseInt(fieldMonthStr) - 1;
		var fieldYear = parseInt(fieldValue.substr(maskYearPos, 4));

		now = new Date(fieldYear, fieldMonth, fieldDay);
	}

	if (document.getElementById) { // Level 1 DOM
		mobject = document.getElementById('calendar');
	} else if (document.all) { // Old IE
		mobject = document.all.calendar;
	}

	
	var oDoc = mobject.contentWindow || mobject.contentDocument;
	if (oDoc) { // IFrame
		mobject.frameBorder = 'no';
		mobject.scrolling = 'no';
		mobject.style.width = 130;
		mobject.style.height = 140;
		oDoc.document.close();
		oDoc.document.write(drawCalendar(now, true));
	} else { // DIV
		mobject.style.width = 130;
		mobject.style.height = 130;
		mobject.innerHTML = drawCalendar(now, false);
	}
	mobject.style.left = getAbsolutePosX(dateField) + addOffsetLeft;
	mobject.style.top = getAbsolutePosY(dateField) + addOffsetTop;
	mobject.style.visibility = "visible";
	
}

function drawCalendar(showDate, useIframe) {
	var year = showDate.getFullYear();
	var month = showDate.getMonth();
	var selectedDate = showDate.getDate();
	var daysInMonth = monthDays[month];
	if (month == 1 && isLeap(year)) {
		daysInMonth = 29;
	}
	var day = 0;
	var today = new Date().getDate();
	var todayMonth = new Date().getMonth();
	var firstDayOfMonth = new Date(year, month, 1);
	var startDay = firstDayOfMonth.getDay();
	if (startDay == 0) startDay = 7;
	
	currentYear = year;
	currentMonth = month;
	var calendar = "";
	var tableStyle = "";
	if (useIframe == true) {
		var qpageCss = "<link rel=\"stylesheet\" type=\"text/css\" href=\"css/wizard.css\">";
		if (window.currentSkinId) {
			qpageCss +=	"<link rel=\"stylesheet\" type=\"text/css\" href=\"../servlet/StyleSheetServlet/" + window.currentSkinId + ".css\">";
		}
		calendar += "<html><head>" + qpageCss + "</head><body>";
		tableStyle = "style=\"background-color:#E8EBF1;border:1px solid black;padding:0px\"";
	}

	calendar += "<table " + tableStyle + " width=\"100%\" height=\"100%\" border=0 cellspacing=0 cellpadding=1><tr><td class=\"calendar\" colspan=7 align=center><a class=\"calendar\" href=\"#\" onClick=\"window.parent.prevMonth();return false;\"><b>&lt;</b></a>&nbsp;<b>" +
		monthNames[month] + " " + year + "</b>&nbsp;<a class=\"calendar\" href=\"#\" onClick=\"window.parent.nextMonth();return false;\"><b>&gt;</b></a></td></tr>" +
		"<tr align=right><td class=\"calendar\"><b>M</b></td><td class=\"calendar\"><b>T</b></td><td class=\"calendar\"><b>O</b></td><td class=\"calendar\"><b>T</b></td><td class=\"calendar\"><b>F</b></td><td class=\"calendar\"><b>L</b></td><td class=\"calendar\"><b>S</b></td></tr>";
	
	for (i=1;i<=6;i++) {
		calendar += "<tr>";
		for (j=1;j<=7;j++) {
			if ((i > 1) || (j >= startDay)) {
				day ++;
			}
			calendar += "<td align=right";
			if (day == selectedDate) {
				calendar += " bgcolor=#C3D3EC";
			}
			calendar += ">";
			if ((day > 0) && (day <= daysInMonth)) {
				calendar += "<a class=\"calendar\" href=\"#\" onClick='window.parent.selectDate(" + day + ")'>";
				if ((day == today)&&(month==todayMonth)) calendar += "<b>";
				calendar += day;
				if ((day == today)&&(month==todayMonth)) calendar += "</b>";
				calendar += "</a>";
			} else {
				calendar += "&nbsp;";
			}
			calendar += "</td>";
		}
		calendar += "</tr>";
	}
	calendar += "</table>";
	if (useIframe == true) {
		calendar += "</body></html>";
	}
	return calendar;
}

function prevMonth() {
	cancelHideCalendar = true;
	currentMonth --;
	if (currentMonth < 0) {
		currentMonth = 11;
		currentYear --;
	}
	var nextDate = new Date(currentYear, currentMonth, 1);
	if (document.getElementById) { // Level 1 DOM
		mobject = document.getElementById('calendar');
	} else if (document.all) { // Old IE
		mobject = document.all.calendar;
	}
//	mobject.innerHTML = drawCalendar(nextDate);
	var oDoc = mobject.contentWindow || mobject.contentDocument;
	if (oDoc) { // IFrame
		mobject.frameBorder = 'no';
		mobject.scrolling = 'no';
		oDoc.document.close();
		oDoc.document.write(drawCalendar(nextDate, true));
	} else { // DIV
		mobject.innerHTML = drawCalendar(nextDate, false);
	}
	mobject.style.visibility = "visible";
}

function nextMonth() {
	cancelHideCalendar = true;
	currentMonth ++;
	if (currentMonth > 11) {
		currentMonth = 0;
		currentYear ++;
	}
	var nextDate = new Date(currentYear, currentMonth, 1);
	if (document.getElementById) { // Level 1 DOM
		mobject = document.getElementById('calendar');
	} else if (document.all) { // Old IE
		mobject = document.all.calendar;
	}
//	mobject.innerHTML = drawCalendar(nextDate);
	var oDoc = mobject.contentWindow || mobject.contentDocument;
	if (oDoc) { // IFrame
		mobject.frameBorder = 'no';
		mobject.scrolling = 'no';
		oDoc.document.close();
		oDoc.document.write(drawCalendar(nextDate, true));
	} else { // DIV
		mobject.innerHTML = drawCalendar(nextDate, false);
	}
	mobject.style.visibility = "visible";
}

function hideCalendar() {
	if (!cancelHideCalendar) {
		if (document.getElementById) { // Level 1 DOM
			mobject = document.getElementById('calendar');
		} else if (document.all) { // Old IE
			mobject = document.all.calendar;
		}
		mobject.style.visibility = "hidden";
		mobject.style.width = 0;
		mobject.style.height = 0;
		mobject.style.left = 0;
		mobject.style.top = 0;
	}
}
function replaceAll(src, replace) {
	var start = 0;
	var index = src.indexOf(replace, start); 
	var index2;
	var newSrc = '';
	while (index > -1) {
		newSrc += src.substring(start, index);
		start = index + 1;
		index2 = index;
		index = src.indexOf(replace, start);
	}
	if (index2 < src.length) {
		newSrc += src.substring(index2 + 1);
	}
	return newSrc;
}
function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}
function getYear(dateFieldId) {
	var inputmask = getInputmask(dateFieldId);
	var dateField = document.qform[dateFieldId];
	var dateValue = '';
	if (dateField) dateValue = trim(dateField.value);
	if (dateValue.length > 0) {
		var imaskStart = inputmask.indexOf('yyyy');
		if (imaskStart < 0) imaskStart = inputmask.indexOf("åååå");
		return dateValue.substring(imaskStart, imaskStart + 4);
	}
	return 0;
}
function getMonth(dateFieldId) {
	var inputmask = getInputmask(dateFieldId);
	var dateField = document.qform[dateFieldId];
	var dateValue = '';
	if (dateField) dateValue = trim(dateField.value);
	if (dateValue.length > 0) {
		var imaskStart = inputmask.indexOf('mm');
		return dateValue.substring(imaskStart, imaskStart + 2);
	}
	return 0;
}
function getDay(dateFieldId) {
	var inputmask = getInputmask(dateFieldId);
	var dateField = document.qform[dateFieldId];
	var dateValue = '';
	if (dateField) dateValue = trim(dateField.value);
	if (dateValue.length > 0) {
		var imaskStart = inputmask.indexOf('dd');
		return dateValue.substring(imaskStart, imaskStart + 2);
	}
	return 0;
}
function getInputmask(dateFieldId) {
	var inputmask = defaultInputMask;
	if (document.qform[dateFieldId + '_inputmask'] && document.qform[dateFieldId + '_inputmask'].value.length > 0) {
		inputmask = document.qform[dateFieldId + '_inputmask'].value;
	}
	return inputmask;
}
function selectDate2(date) {
	if (!currentInputMask || (currentInputMask.length == 0)) currentInputMask = defaultInputMask;
	var newDate = '' + currentInputMask;
	var newMonth = (currentMonth < 9 ? "0" : "") + (currentMonth + 1);
	var newDay = (date < 10 ? "0" : "") + date;
	newDate = newDate.replace('dd', newDay);
	newDate = newDate.replace('mm', newMonth);
	if (newDate.indexOf("yyyy") >= 0) {
		newDate = newDate.replace('yyyy', currentYear);
	} else if (newDate.indexOf("yyyy") >= 0){
		newDate = newDate.replace('åååå', currentYear);
	}
	
	if (currentDateCompare.length > 0) { // Validate date
		var isGreaterThan = currentDateCompare.indexOf('>');
		var isLessThan = currentDateCompare.indexOf('<');
		if (isGreaterThan > -1 || isLessThan > -1) {
			var compareIndex = (isLessThan > -1) ? currentDateCompare.indexOf('<') : currentDateCompare.indexOf('>');
			var compareDateFieldId = 'A_' + currentDateCompare.substring(compareIndex + 1);
			var compareDateField = document.qform[compareDateFieldId];
			var compareDateFieldValue='';
			var compareDateInputmask='';
			if (compareDateField) {
				compareDateFieldValue = compareDateField.value;
				compareDateInputmask = getInputmask(compareDateFieldId);
			}
			if (compareDateFieldValue.length > 0) {
				var compareDateFieldValueCopy = compareDateFieldValue;
				compareDateFieldValue = replaceAll(compareDateFieldValue, '.');
			
				var year = getYear(compareDateFieldId);
				var month = getMonth(compareDateFieldId);
				var day = getDay(compareDateFieldId);
				
				if (compareDateInputmask.indexOf('mm') == -1) { // No month
					if (isGreaterThan > -1) {
						month = '12';
					} else {
						month = '01';
					}
				}
				if (compareDateInputmask.indexOf('dd') == -1) { // No day
					if (isGreaterThan > -1) {
						day = '31';
					} else {
						day = '01';
					}
				}
			
				var compareDatesum = parseInt('' + year + month + day, 10);
				var currentDatesum = parseInt('' + currentYear + newMonth + newDay, 10);
				var dateIsValid;
				if (isGreaterThan > -1) dateIsValid = currentDatesum > compareDatesum;
				else if (isLessThan > -1) dateIsValid = currentDatesum < compareDatesum;
				//alert("year=" + year + " month=" + month + " day=" + day + " compareDatesum=" + compareDatesum + " currentDatesum=" + currentDatesum + " dateIsValid=" + dateIsValid);
				if (! dateIsValid) {
					var compareText = isGreaterThan > -1 ? trans_GREATER : trans_LESS;
					//alert(trans_INVALID_DATE + " " + compareText + compareDateFieldValueCopy + "!");
					toggleQuestionHelp(trans_INVALID_DATE + " " + compareText + compareDateFieldValueCopy + "!",0,'Ugyldig dato',currentDateField.name,true);
					//currentDateField.focus();
					currentDateField.value = '';
					cancelHideCalendar = false;
					hideCalendar();
					return;
				}
			}
		}
	}
	if (currentSoftDateCompare.length > 0) { // Validate soft date rule
		var isGreaterThan = currentSoftDateCompare.indexOf('>');
		var isLessThan = currentSoftDateCompare.indexOf('<');
		if (isGreaterThan > -1 || isLessThan > -1) {
			var compareIndex = (isLessThan > -1) ? currentSoftDateCompare.indexOf('<') : currentSoftDateCompare.indexOf('>');
			var compareDateFieldId = 'A_' + currentSoftDateCompare.substring(compareIndex + 1);
			var compareDateField = document.qform[compareDateFieldId];
			var compareDateFieldValue='';
			var compareDateInputmask='';
			if (compareDateField) {
				compareDateFieldValue = compareDateField.value;
				compareDateInputmask = getInputmask(compareDateFieldId);
			}
			if (compareDateFieldValue.length > 0) {
				var compareDateFieldValueCopy = compareDateFieldValue;
				compareDateFieldValue = replaceAll(compareDateFieldValue, '.');
			
				var year = getYear(compareDateFieldId);
				var month = getMonth(compareDateFieldId);
				var day = getDay(compareDateFieldId);
				
				if (compareDateInputmask.indexOf('mm') == -1) { // No month
					if (isGreaterThan > -1) {
						month = '12';
					} else {
						month = '01';
					}
				}
				if (compareDateInputmask.indexOf('dd') == -1) { // No day
					if (isGreaterThan > -1) {
						day = '31';
					} else {
						day = '01';
					}
				}
			
				var compareDatesum = parseInt('' + year + month + day, 10);
				var currentDatesum = parseInt('' + currentYear + newMonth + newDay, 10);
				var dateIsSoftValid;
				if (isGreaterThan > -1) dateIsSoftValid = currentDatesum > compareDatesum;
				else if (isLessThan > -1) dateIsSoftValid = currentDatesum < compareDatesum;
				//alert("year=" + year + " month=" + month + " day=" + day + " compareDatesum=" + compareDatesum + " currentDatesum=" + currentDatesum + " dateIsSoftValid=" + dateIsSoftValid);
				if (! dateIsSoftValid) {
					var compareText = isGreaterThan > -1 ? trans_GREATER : trans_LESS;
					//alert(trans_INVALID_DATE + " " + compareText + compareDateFieldValueCopy + "!");
					toggleQuestionHelp(trans_NONSOFTVALID_DATE + " " + compareText + compareDateFieldValueCopy + "!",0,trans_SHOULD_DATE,currentDateField.name,true);
					//currentDateField.focus();
					//currentDateField.value = '';
					currentDateField.value = newDate;
					cancelHideCalendar = false;
					hideCalendar();
					return;
				}
			}
		}
	}
	
	currentDateField.value = newDate;
	cancelHideCalendar = false;
	cancelShowCalendar = true;
	try {
		currentDateField.focus();
	} catch(exception){
	}
	hideCalendar();
	
	if (currentDateField) {
		if (document.setFocusToTabindex) {
			var newTabindex = parseInt(currentDateField.tabIndex) + 1;
		//	confirm("curr Tabindex=" + currentDateField.tabIndex + " new=" + newTabindex);
			setFocusToTabindex(document.qform, newTabindex);
		}
	}
}

function selectDate(date) {
	if (!currentInputMask || (currentInputMask.length == 0)) currentInputMask = defaultInputMask;
	var newDate = '' + currentInputMask;
	var newMonth = (currentMonth < 9 ? "0" : "") + (currentMonth + 1);
	var newDay = (date < 10 ? "0" : "") + date;
	newDate = newDate.replace('dd', newDay);
	newDate = newDate.replace('mm', newMonth);
	if (newDate.indexOf("yyyy") >= 0) {
		newDate = newDate.replace('yyyy', currentYear);
	} else if (newDate.indexOf("yyyy") >= 0){
		newDate = newDate.replace('åååå', currentYear);
	}
	
	validateMessage = '';
	var iserrormessage = false;
	var isValid = true;
	var isSoftvalid = true;

	// Strict validation
	if (currentDateCompare && currentDateCompare.length > 0) {
		var comparearray = currentDateCompare.split("&&");
		var comparepart = true;
		for (k in comparearray) {
			var compareStr = comparearray[k];
			if (compareStr.length > 0) {
				comparepart = comparepart && compareDateValue(compareStr,newMonth,newDay,'');
			}
		}
		if (comparepart == false) {
			//validateMessage = getValidateMessage(strictvalidate, strictvalidatemsg, false, wizardid);
			validateMessage = getValidateDateMessage(currentDateCompare, currentValidatemsg, false, currentWizard);
			iserrormessage = true;
		}
		isValid = comparepart;
	}

	// Soft validation
	if (isValid && (currentSoftDateCompare && currentSoftDateCompare.length > 0)) {
		var softcomparearray = currentSoftDateCompare.split("&&");
		var softcomparepart = true;
		for (m in softcomparearray) {
			var softCompareStr = softcomparearray[m];
			if (softCompareStr.length > 0) {
				softcomparepart = softcomparepart && compareDateValue(softCompareStr,newMonth,newDay,newDate);
			}
		}
		if (softcomparepart == false) {
			//validateMessage = getValidateMessage(softvalidate, softvalidatemsg, true, wizardid);
			validateMessage = getValidateDateMessage(currentSoftDateCompare, currentSoftvalidatemsg, true, currentWizard);
		}
		isSoftvalid = softcomparepart;
	}
	
	if (! isValid) {
		//var compareText = isGreaterThan > -1 ? trans_GREATER : trans_LESS;
		//alert(trans_INVALID_DATE + " " + compareText + compareDateFieldValueCopy + "!");
		//toggleQuestionHelp(text1 + " " + compareText + compareDateFieldValueCopy + "!",0,text2,currentDateField.name,true);
		showValidateHelp(validateMessage, true, 'Validering feilet', currentDateField.name, true); // Send validation error message or empty string to information area
		//toggleQuestionHelp(validateMessage,0,'Validering feilet',currentDateField.name,true);
		//currentDateField.focus();
		//currentDateField.value = '';
		currentDateField.value = '';
		//currentDateField.value = selectedDate;
		cancelHideCalendar = false;
		hideCalendar();
	} else if (! isSoftvalid) {
		//var compareText = isGreaterThan > -1 ? trans_GREATER : trans_LESS;
		//alert(trans_INVALID_DATE + " " + compareText + compareDateFieldValueCopy + "!");
		showValidateHelp(validateMessage, true, trans_SHOULD_DATE, currentDateField.name, false); // Send validation error message or empty string to information area
		//toggleQuestionHelp(validateMessage,0,trans_SHOULD_DATE,currentDateField.name,false);
		//currentDateField.focus();
		//currentDateField.value = '';
		currentDateField.value = newDate;
		// If the target field has an onChange, invoke it so values depending on it are updated
		if (this.window["onChange" + currentDateField.name] !== undefined) {
			this.window["onChange" + currentDateField.name]();
		}
		cancelHideCalendar = false;
		hideCalendar();
	} else 
	
//	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
	//}
	
	//alert('isValid = ' + isValid);
	if (isValid) {
		currentDateField.value = newDate;
		cancelHideCalendar = false;
		cancelShowCalendar = true;
		currentDateField.focus();
		hideCalendar();
		//hideQuestionHelp();
		
		if (currentDateField) {
			// If the target field has an onChange, invoke it so values depending on it are updated
			if (this.window["onChange" + currentDateField.name] !== undefined) {
				this.window["onChange" + currentDateField.name]();
			}
			if (document.setFocusToTabindex) {
				var newTabindex = parseInt(currentDateField.tabIndex) + 1;
			//	confirm("curr Tabindex=" + currentDateField.tabIndex + " new=" + newTabindex);
				setFocusToTabindex(document.qform, newTabindex);
			}
		}
	}
}

function compareDateValue(dateCompare, selectedMonth, selectedDay, selectedDate) {
	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 = currentInputMask;
			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);
			}
			var response = getServerInfo('<Dateresultitem refName=\"'+compareDateFieldValue+'\" wizardId=\"' + currentWizard + '\"/>');
			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.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;
				}
			}
		
			var compareDatesum = parseInt('' + year + month + day, 10);
			var currentDatesum = parseInt('' + currentYear + selectedMonth + selectedDay, 10);

			switch (operator) {
				case '>'  : isValid = currentDatesum > compareDatesum; break;
				case '<'  : isValid = currentDatesum < compareDatesum; break;
				case '>=' : isValid = currentDatesum >= compareDatesum; break;
				case '<=' : isValid = currentDatesum <= compareDatesum; break;
			}
			//alert("year=" + year + " month=" + month + " day=" + day + " compareDatesum=" + compareDatesum + " currentDatesum=" + currentDatesum + " isValid=" + isValid);
		}
	}
	return isValid;
}

function getDatePart(dateValue,dateMask,type) {
	var imaskStart;
	var partLength;
	if (dateValue.length > 0 && dateMask.length > 0 && dateValue.length >= dateMask.length) {
		if (type == 'year') {
			imaskStart = dateMask.indexOf('yyyy');
			if (imaskStart < 0) imaskStart = dateMask.indexOf("åååå");
			partLength = 4;
		} else if (type == 'month') {
			imaskStart = dateMask.indexOf('mm');
			partLength = 2;
		} else if (type == 'day') {
			imaskStart = dateMask.indexOf('dd');
			partLength = 2;
		} else {
			return 0;
		}
		return dateValue.substring(imaskStart, imaskStart + partLength);
	}
	return 0;
}

function getValidateDateMessage(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;
				}
				
				//alert('validateStr = ' + validateStr);
				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.indexOf('$$VALUE$$') > -1) {
					exprValue = exprValue.substring(exprValue.indexOf('$$VALUE$$') + 9);
				} else {
					//var response = getServerInfo('<Dateresultitem refName=\"\" questionId=\"'+exprValue+'\" wizardId=\"' + currentWizard + '\"/>');
					//var node = response.getElementsByTagName('dateresultitem').item(0);
					//exprValue = node.getAttribute('value');
					//alert('Value returned is ' + exprValue + " qId = " + compareDateFieldId + ' length = ' + exprValue.length);

					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 = '' ; 
				}
				
				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;
}
var mouseDown = false;
function mDown() {
	mouseDown = true;
}
function mUp() {
	mouseDown = false;
}
function toggleColor(cell) {
	if (mouseDown) {
		mobject = eval('document.all.' + cell);
		pobject = eval('document.all.p' + cell);
		if ((mobject.bgColor == "#ffffff") || (mobject.bgColor == "")) {
			mobject.bgColor = "#000000";
			pobject.bgColor = "#000000";
		} else {
			mobject.bgColor = "";
			pobject.bgColor = "";
		}
	}
}
function isLeap(year) {
	return (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0));
}


