var ValidatorArray = new Array (); // holds validation statements to be evaluated in OnSubmit
var ValidatorArrayProperties = new Array();
ValidatorArrayProperties.ValidatorSuppress = false;  // if true, skip onSubmit validation

var i18nArray = new Array ();   //  hold translated strings; addressed as i18nArray('msgid');
i18nArray['requiredanswer'] = "Please answer the question. If not sure of what question this refers to, press the space bar.";
i18nArray['entervaluebetween'] = "Enter a value between %1 and %2";
i18nArray['entervaluenogreater'] = "Enter a value of %2 or below";
i18nArray['entervaluenoless'] = "Enter a value of %1 or above";
i18nArray['checknumbermsg'] = "Use 0 through 9, plus and minus, in format 1234";

//  Javascript to be used with Standard_ and compatible styles
//  (c) 2006 Cogix Corporation
//  May only be used as a component of a licensed Cogix product
function vwfOnSubmit() {
//	vwfOnSubmit is the function that validates and submits poll data to cogix
	
	if ( ValidatorArrayProperties == null || ValidatorArrayProperties.ValidatorSuppress == true || ValidatorArray == null )
	//	if broken, don't crash
		return true;
		for ( var k = 0 ; k < ValidatorArray.length ; k ++ ) {
			var validatorstring = ValidatorArray [k] ;
			var chk = eval ( validatorstring );
			if ( chk == false )
			return false;
		}
		return true;
	}

	function checkQuestionAnswered (group,empty,valuelow,valuehigh,valuetype) {
	//	verify that user has answered the question.
		if ( group == null || empty == null || valuelow == null || valuehigh == null || valuetype == null )
		return true;
		var emptyCheck = empty != " ";
		var rangeCheck = valuelow != "" || valuehigh != "" ;
		var numericCheck = valuetype == "2";
		var bgroup = false;
		if ( group.type == "select-one") {
			if ( ! emptyCheck || group.value != "" )
			return true;
		}
		else if ( group.type == "textarea") {
			if ( ! emptyCheck || group.value != "" )
			return true;
		}
		else if ( group.type == "text") {
			if ( ! emptyCheck ) {
				if ( group.value == "" ) {
					return true;
				}
				return checkQuestionAnswerInRange ( group, valuelow, valuehigh, valuetype );
			}
			if ( group.value != "" ) {
				return checkQuestionAnswerInRange ( group, valuelow, valuehigh, valuetype );
			}
		}
		else if ( group.type == "oldtext") {
			if ( ! emptyCheck || group.value != "" )
			return true;
		}
		else if ( group.type == null ) { // radio and checkbox groups
			if ( ! emptyCheck )
			return true;
			bgroup = true;
			for ( var k = 0 ; k < group.length; k ++ )
			if ( group[k].checked )
			return true;
		}
		else
		return true;
		alert (i18nArray['requiredanswer']);
		window.focus();
		if ( bgroup )
		group[0].focus();
		else
		group.focus();
		return false;
	}

	function checkQuestionAnswerInRange ( valuelement, valuelow, valuehigh, valuetype ) {
		if ( valuelow == "" && valuehigh == "" )
		return true;
		var valued = valuelement.value;
		var intcompare = valuetype == "2";
		var intvaluelow = 0;
		var intvaluehigh = 0;
		var intvalued = 0;
		var msg = i18nArray['entervaluebetween'];
		if ( valuelow == "" )
		msg = i18nArray['entervaluenogreater'];
		if ( valuehigh == "" )
		msg = i18nArray['entervaluenoless'];
		msg = msg.replace (/%1/, valuelow );
		msg = msg.replace (/%2/, valuehigh );
		if ( intcompare ) {
			intvalued = parseInt ( valued, 10);
			if ( isNaN (intvalued) ) {
				alert ( msg ); valuelement.focus();
				if ( window != null && window.event != null )
				window.event.returnValue = false;
				return false;
			}
			intvaluelow = parseInt ( valuelow, 10 );
			intvaluehigh = parseInt ( valuehigh, 10 );
		}
		var bOk = true;
		if ( valuelow != null && valuehigh != null ) {
			if ( ! intcompare ) {
				if ( valuelow != "" && valued < valuelow )
				bOk = false;
				if ( valuehigh != "" && valued > valuehigh )
				bOk = false;
			}
			else {
				if ( valuelow != "" && intvalued < intvaluelow )
				bOk = false;
				if ( valuehigh != "" && intvalued > intvaluehigh )
				bOk = false;
			}
		}
		if ( bOk )
		return true;
		vwfAlertAndFocus(msg,valuelement);
		return false;
	}

	function vwfAlertAndFocus ( msg, element ) {
		if ( msg != null )
		alert (msg);
		if ( window != null )
		window.focus();
		element.focus();
		/*
		if ( window != null && window.event != null )
		window.event.returnValue = false;
		*/
	}

	function vwfQhelper(d) {
		var h = document.getElementById ( d );
		if ( h == null )
		return;
		var v = h.style.display;
		var flip = v == 'none' ? 'block' : 'none';
		h.style.display = flip;
	}

	function vwfQlengthchecker(txt,slimit) {
		if ( slimit == null || ''==slimit )
		return;
		var limit = 0 + slimit;
		var nulength = txt.value.length;
		if ( nulength > limit )
		txt.value = txt.value.substring (0,limit);
	}

	function vwfTxtAdjustHeight (elemt) {
		if ( elemt == null || elemt.cols == null )
		return;
		var TxtMinCols = 10;
		var TxtMinRows = 2;
		var cols = elemt.cols;
		if ( cols < TxtMinCols )
		return;
		var lines = elemt.value.split('\n');
		var nlines = 0;
		for ( var k=0; k < lines.length; k++ ) {
			var thisline = lines [k];
			var linesinthisline = Math.floor ( ( thisline.length + cols - 1 ) / cols ) ;
			if ( linesinthisline == 0 )
			linesinthisline = 1;
			nlines += linesinthisline;
		}
		if ( nlines < TxtMinRows )
		nlines = TxtMinRows ;
		if ( nlines != elemt.rows ) {
			elemt.rows = nlines;
		}
	}

	function vfRadio (f,elname,bOther,skipTo) { return; }
	
	function vfRadioOther (f,elname,bOther,skipTo) {
		for ( var k = 0 ; k < f.elements.length; k++ ) {
			var e = f.elements[k];
			if ( ! bOther) {
				if ( e != null && e.name==elname && e.type == "text" ) {
					e.value = "";
					break;
				}
			}
			else {
				if ( e != null && e.name==elname && e.type == "radio" && e.value == "") {
					e.checked = true;
					break;
				}
			}
		}
	}