function verifyPreference(objForm)
{
	//var objForm = eval('document.'+ strFormName);
	var numItemsMax = 0;
	var numItemsCount = 0;
	var bolcheck = true;
	var bolnonreq = true;
	outer_loop:
	for (var j=0; j<objForm.length; j++) {
		objptext = objForm.elements[j];
		if (objptext.name.search(/ptext/gi) == 0) {	
			objptextID = objptext.name.substring(0, objptext.name.search(/\_/gi));
			if ((objptext.name.search(objptextID +'num')==-1) && (objptext.name.search(objptextID +'req')==-1)) {
				if (objForm.elements[objptextID +'req'].value == 'True') {
					bolnonreq = true;
				} else {
					bolnonreq = false;
					//check this non required preference question for content
					inner_loop:
					for (var k=0; k<objForm.length; k++) {
						objptext2 = objForm.elements[k];
						if (objptext2.name.search(objptextID +'_')==0) {
							if (objptext2.value != '') {
								bolnonreq = true;
								break inner_loop;
							}//if
						}//if
					}//for
				}//if
				
				if (bolnonreq) {
					if (numItemsMax == 0 || numItemsCount > numItemsMax) {
						//check existing array
						if (!checkPrefs(objForm)) {
							bolcheck = false;
							break outer_loop;
						}//if
						//create array
						arrayPrefs = null;
						numItemsMax = objForm.elements[objptextID +'num'].value-1;
						numItemsCount = 0;
						arrayPrefs = new Array(numItemsMax);
					}//if
					//populate array
					arrayPrefs[numItemsCount] = new Array(2);
					arrayPrefs[numItemsCount][0] = objptext.name;
					arrayPrefs[numItemsCount][1] = objptext.value;
					numItemsCount += 1;
				}//if
			}//if
		}//if
	}// for
	
	//check existing array
	if (bolcheck) {
		if (!checkPrefs(objForm)) { 
			arrayPrefs = null;
			return false;
		} else { 
			arrayPrefs = null;
		}
	} else {
		arrayPrefs = null;
		return false;
	}
	arrayPrefs = null;
	return true;
}//verifyPreference

function sortPrefs(a, b) 
{
	var iNum = 1;
	var aVal = parseInt(a[iNum]);
	var bVal = parseInt(b[iNum]);
    if (aVal > bVal) {
		return 1;
    } else if (aVal < bVal) {
		return -1;
    } else {
		return 0;
	}
}//sortPrefs

function checkPrefs(objForm)
{
	if (arrayPrefs && objForm) {
		for (var k=0; k<arrayPrefs.length; k++) {
			if (isNaN(arrayPrefs[k][1])) {
				verifyMessage('', 'pref', 'number>zero');
				objForm.elements[arrayPrefs[k][0]].select();
				return false;
			}//if
			if (arrayPrefs[k][1]=='') {
				verifyMessage('', 'pref', 'missing>zero');
				objForm.elements[arrayPrefs[k][0]].select();
				return false;
			}//if
		}//for
		arrayPrefs.sort(sortPrefs);
		for (var k=0; k<arrayPrefs.length; k++) {
			if (arrayPrefs[k][1] < 1) {
				verifyMessage('', 'pref', 'number>zero');
				objForm.elements[arrayPrefs[k][0]].select();
				return false;
			} else if (k+1 < arrayPrefs[k][1]) {
				verifyMessage('', 'pref', 'missedsequencenumber');
				objForm.elements[arrayPrefs[k][0]].select();
				return false;
			}else if (k+1 > arrayPrefs[k][1]) {
				verifyMessage('', 'pref', 'samenumberonce');
				objForm.elements[arrayPrefs[k][0]].select();
				return false;
			}//if
		}//for
	}//if
	return true;
}//checkPrefs

function calChange(iQid)
{
	var objCal = document.getElementById('date'+ iQid +'_obj');
	var objDate = document.getElementById('atext'+ iQid);
	objDate.value = objCal.day +'/'+ objCal.month +'/'+ objCal.year;
}//calChange

function calChange2(objElement, iQid)
{
	var objDate = document.getElementById('atext'+ iQid);
	var objDay = document.getElementById('date'+ iQid +'_day');
	var objMonth = document.getElementById('date'+ iQid +'_month');
	var objYear = document.getElementById('date'+ iQid +'_year');
	objDate.value = objDay.options[objDay.selectedIndex].value +'/'+ objMonth.options[objMonth.selectedIndex].value +'/'+ objYear.options[objYear.selectedIndex].value;
	if ((objDay.options[objDay.selectedIndex].value != 0) && (objMonth.options[objMonth.selectedIndex].value != 0) && (objYear.options[objYear.selectedIndex].value != 0)) {
		if (!chkdate(objDate.value)) {
			verifyMessage('','notValidDate','');
			objElement.focus();
			return false; 
		}
	}
}//calChange2

function calCheck(oElement, sItem)
{
	var objDay = document.getElementById('date'+ sItem +'_day');
	var objMonth = document.getElementById('date'+ sItem +'_month');
	var objYear = document.getElementById('date'+ sItem +'_year');
	if ((objDay.selectedIndex != 0) && (objMonth.selectedIndex != 0) && (objYear.selectedIndex != 0)) {
		var sDate = objDay.options[objDay.selectedIndex].value +'/'+ objMonth.options[objMonth.selectedIndex].value +'/'+ objYear.options[objYear.selectedIndex].value;
		if (!chkdate(sDate)) {
			verifyMessage('','notValidDate','');
			oElement.focus();
			return false; 
		}
	}
}//calCheck

function chkdate(strDate) 
{
	//var strDatestyle = "US"; //United States date style
	var strDatestyle = "EU";  //European date style
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array(12);
	strMonthArray[0] = "Jan";
	strMonthArray[1] = "Feb";
	strMonthArray[2] = "Mar";
	strMonthArray[3] = "Apr";
	strMonthArray[4] = "May";
	strMonthArray[5] = "Jun";
	strMonthArray[6] = "Jul";
	strMonthArray[7] = "Aug";
	strMonthArray[8] = "Sep";
	strMonthArray[9] = "Oct";
	strMonthArray[10] = "Nov";
	strMonthArray[11] = "Dec";
	
	if (strDate.length < 1) {
		return true;
	}
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if (strDateArray.length != 3) {
				err = 1;
				return false;
			}
			else {
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
		booFound = true;
		}
	}
	if (booFound == false) {
		if (strDate.length>5) {
		strDay = strDate.substr(0, 2);
		strMonth = strDate.substr(2, 2);
		strYear = strDate.substr(4);
	   }
	}
	if (strYear.length == 2) {
		strYear = '20' + strYear;
	}
	// US style
	if (strDatestyle == "US") {
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
	}
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) {
		err = 2;
		return false;
	}//if
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		for (i = 0;i<12;i++) {
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
		   }//if
		}//for
		if (isNaN(intMonth)) {
			err = 3;
			return false;
	   }//if
	}//if
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) {
		err = 4;
		return false;
	}
	if (intMonth>12 || intMonth<1) {
		err = 5;
		return false;
	}
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
		err = 6;
		return false;
	}
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
		err = 7;
		return false;
	}
	if (intMonth == 2) {
		if (intday < 1) {
			err = 8;
			return false;
		}//if
		if (LeapYear(intYear) == true) {
			if (intday > 29) {
				err = 9;
				return false;
			}//if
		}//if
	else {
		if (intday > 28) {
			err = 10;
			return false;
		}
	}
	}
	return true;
}//chkdate

function LeapYear(intYear)
{
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0) { return true; }
	} else {
		if ((intYear % 4) == 0) { return true; }
	}
	return false;
}//LeapYear