var numbers = ["00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"];
//var tabindex = 0;
/*
var glossId = 0;
var currentGloss = '';
function hideGloss(id) {
	document.getElementById("glossary_"+id).style.display = "none";
}
function showGloss(id) {
	document.getElementById("glossary_"+id).style.display = "block";
}

function getTabIndex (prevIndex) {
	if (prevIndex) {
		return prevIndex;
	} else {
		tabindex++;
		return tabindex;
	}
}
*/
function getJavascript(inputHash,num) {
	var inputOptions = "";
	var func_arr = ""
	var param_arr = ""

	if (inputHash.js_all != null) {
		inputOptions += " " + inputHash.js_all;
	}else if (inputHash.js_parent_event != null) {
		func_arr = inputHash.js_parent_function.split("::");
		event_arr = inputHash.js_parent_event.split("::");
		var max = (func_arr.length <= event_arr.length) ? event_arr.length : func_arr.length;
	
		if (typeof (inputHash["js_parent_function_param"]) != "undefined") {
			param_arr = inputHash.js_parent_function_param.split("::");
		}

//		inputOptions += " " + inputHash["js_parent_event"] + "=\"";

//		for (var i = 0; i < func_arr.length; i++) {
		for (var i = 0; i < max; i++) {
			if (i < event_arr.length) {
				if (i > 0) {
					inputOptions += "\"";
				}
				inputOptions += " " + event_arr[i] + "=\"";
			}
			var js_add_value = "";
			var js_parent_function_param = "";

			if (typeof (param_arr[i]) == "undefined") {
				js_parent_function_param += num;
			} else {
				if (inputHash.js_parent_function_param != null) {
					js_parent_function_param = param_arr[i];
					js_add_value += ".value";
				}
				if (num != null) {
					js_parent_function_param += "_"+num+js_add_value+","+num;
				} else {
					js_parent_function_param += js_add_value;
				}
			}

			inputOptions += func_arr[i] + "(" + js_parent_function_param + ");";
		}
		inputOptions += "\"";
	}
/*	if (currentGloss != '') {
		inputOptions = ' onBlur="hideGloss(\''+currentGloss+'\')" onFocus="showGloss(\''+currentGloss+'\')"' + inputOptions;
	}*/
	return inputOptions;
}

function getFdat(inputHash, num, repeat_number) {
	var fdat = inputHash["fdat_name"];
	if (repeat_number != null) {
		fdat += repeat_number;
	}
	if (num != null) {
		fdat += "_"+num
	}
	return fdat;
}

function selectYearDefaults(inputHash,num,repeat_number,tabindex) {
	return selectYear(inputHash, num, repeat_number,tabindex,"d");
}

function selectRange(inputHash,num,repeat_number,tabindex) {
	var content = "";
	var fdat = getFdat(inputHash,num,repeat_number);
	var fdat_value = (fdat_value_hash[fdat] != null) ? fdat_value_hash[fdat] : "";
	var max = inputHash["input_value_max"];
	var min = inputHash["input_value_min"];
	var inputOptions = getJavascript(inputHash,num);
//	content += '<select tabindex='+getTabIndex(tabindex)+' name="'+fdat+'" class="login_select" ' + inputOptions + '>\n';
	content += '<select name="'+fdat+'" class="login_select" ' + inputOptions + '>\n';

	if (inputHash["input_display"+lang] != null) {
		content += '<option value="">'+inputHash["input_display"+lang]+'</option>\n';
	}
	for (var i = min; i <= max; i++) {
		if (i == fdat_value) {
			content += '<option value="' + i + '" selected>' + i + '</option>\n';
		} else {
			content += '<option value=' + i + '>' + i + '</option>\n';
		}
	}
	content += '</select>\n';
	return content;
}
function selectYear(inputHash,num,repeat_number,tabindex,defaultYear) {
	var content = "";
	var d = new Date();
	var $current_year = d.getFullYear();
	var fdat = getFdat(inputHash,num,repeat_number);
	var fdat_value = (fdat_value_hash[fdat] != null) ? fdat_value_hash[fdat] : "";
	if (fdat_value == "") {
		if (inputHash.input_default != null){
			if (defaultYear == "d") {
				defaultYear =  eval(inputHash["input_default"]);
			} else {
				fdat_value =  eval(inputHash["input_default"]);
			}
		}
	}
	var maxYear = $current_year + 1;
	var minYear = $current_year;
	if (inputHash.input_value_max != null) {
		maxYear = eval(inputHash["input_value_max"]);
	}
	if (inputHash.input_value_min != null) {
		minYear = eval(inputHash["input_value_min"]);
	}
	var inputOptions = getJavascript(inputHash,num);
//	content += '<select tabindex='+getTabIndex(tabindex)+' name="'+fdat+'" class="login_select" ' + inputOptions + '>\n';
	content += '<select name="'+fdat+'" class="login_select" ' + inputOptions + '>\n';

	if (inputHash["input_display"+lang] != null && defaultYear == null) {
		content += '<option value="">'+inputHash["input_display"+lang]+'</option>\n';
	}
	for (var i = maxYear; i >= minYear; i--) {
		if (defaultYear == i && fdat_value == "") {
			content += '<option value="" selected>' + inputHash["input_display"+lang] + '</option>\n';
		}
		if (i == fdat_value) {
			content += '<option value="' + i + '" selected>' + i + '</option>\n';
		} else {
			content += '<option value=' + i + '>' + i + '</option>\n';
		}
	}
	content += '</select>\n';
	return content;
}

function selectMonth(inputHash,num,repeat_number,tabindex) {
	var content = "";
	var d = new Date();
	var $current_month = d.getMonth() + 1;
	var fdat = getFdat(inputHash,num,repeat_number);
	var fdat_value = (fdat_value_hash[fdat] != null) ? fdat_value_hash[fdat] : eval(inputHash["input_default"]);
	var inputOptions = getJavascript(inputHash,num);
	var months;
	var month;
	if (lang == "_en") {
		months = ['','January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
		month = "Month";
	} else {
		months = ["","Janvier", "F&eacute;vrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Ao&ucirc;t", "Septembre", "Octobre", "Novembre", "D&eacute;cembre"];
		month = "Mois";
	}
//	content += '<select tabindex='+getTabIndex(tabindex)+' name="'+fdat+'" class="login_select" ' + inputOptions + '>\n\
	content += '<select name="'+fdat+'" class="login_select" ' + inputOptions + '>\n\
						<option value="">'+month+'</option>';
	for (var i = 1; i <= 12; i++) {
		if (i == fdat_value) {
			content += '<option value="' + numbers[i] + '" selected>' + months[i] + '</option>\n';
		} else {
			content += '<option value=' + numbers[i] + '>' + months[i] + '</option>\n';
		}
	}
	content += '</select>\n';
	return content;
}

function selectDay(inputHash,num,repeat_number,tabindex) {
	var content = "";
	var d = new Date();
	var $current_day = d.getDate();
	var fdat = getFdat(inputHash,num,repeat_number);
	var fdat_value = (fdat_value_hash[fdat] != null) ? fdat_value_hash[fdat] : eval(inputHash["input_default"]);
	var inputOptions = getJavascript(inputHash,num);
	var dat;
	if (lang == "_en") {
		day = "Day";
	} else {
		day = "Jour";
	}
//	content += '<select tabindex='+getTabIndex(tabindex)+' name="'+fdat+'" class="login_select" ' + inputOptions + '>\
	content += '<select name="'+fdat+'" class="login_select" ' + inputOptions + '>\
						<option value="">'+day+'</option>';
	for (var i = 1; i <= 31; i++) {
		if (i == fdat_value) {
			content += '<option value="' + numbers[i] + '" selected>' + i + '</option>\n';
		} else {
			content += '<option value=' + numbers[i] + '>' + i + '</option>\n';
		}
	}
	content += '</select>\n';
	return content;
}

function copyArray(oldArray) {
	var newArray = new Array();
	for (var i in oldArray) {
		newArray[i] = oldArray[i];
	}
	return newArray;
}

function buildSelectList(inputHash,num,repeat_number) {
	var newInputHash = copyArray(inputHash);
	var fdat = getFdat(newInputHash, num,repeat_number);
	if (extraValues[fdat] != null) {
		if (newInputHash["input_display"+lang] != null) {
			if (newInputHash["input_values"] == null){
				newInputHash["input_values"] = "";
			}

			if (extraValues[fdat + "_inVal"] != null){
				newInputHash["input_values"] += "::"+extraValues[fdat + "_inVal"];
			} else {
				newInputHash["input_values"] += "::"+extraValues[fdat];
			}
		} else {
			newInputHash["input_values"] = extraValues[fdat];
		}
		if (extraValues[fdat+"_input"] != null) {
			if (newInputHash["input_display"+lang] != null) {
				newInputHash["input_display"+lang] += "::"+extraValues[fdat+"_input"];
			} else {
				newInputHash["input_display"+lang] = extraValues[fdat+"_input"];
			}
		} else {
			if (newInputHash["input_display"+lang] != null) {
				newInputHash["input_display"+lang] += "::"+extraValues[fdat];
			} else {
				newInputHash["input_display"+lang] = extraValues[fdat];
			}
		}
		return selectList(newInputHash,num);
	} else if (extraValues[fdat+"_specific"] != null) {
		newInputHash["input_display"+lang] = extraValues[fdat+"_specific"];
		newInputHash["input_values"] = extraValues[fdat+"_specific"];
		return selectList(newInputHash,num);
	}
	return "";
}

function selectList(inputHash,num,repeat_number,tabindex) {
	var content = "";
	var fdat = getFdat(inputHash,num,repeat_number);
	var fdat_value = (fdat_value_hash[fdat] != null) ? fdat_value_hash[fdat] : "";
	
	if (inputHash.input_default != null && fdat_value == ""){
		fdat_value = inputHash["input_default"];
	}
	var option_arr = inputHash["input_display"+lang].split("::");
	var value_arr = inputHash["input_values"].split("::");
	var inputOptions = getJavascript(inputHash,num);
//	content += '<select tabindex='+getTabIndex(tabindex)+' name="' + fdat + '" class="login_select" ' + inputOptions + '>\n';
	content += '<select name="' + fdat + '" id = "' + fdat + '" class="login_select" ' + inputOptions + '>\n';
	for (var i = 0; i < value_arr.length; i++) {
		if (value_arr[i] == fdat_value) {
			content += '<option value="' + value_arr[i] + '" selected>' + option_arr[i] + '</option>\n';
		} else {
			content += '<option value="' + value_arr[i] + '">' + option_arr[i] + '</option>\n';
		}
	}
	content += '</select>\n';
	return content;
}

function buildMultipleCheckboxes(inputHash,num,repeat_number,tabindex) {
	var content = "";
	var fdat = inputHash["fdat_name"];
	var option_arr = inputHash["input_display"+lang].split("::");
	var value_arr = inputHash["input_values"].split("::");
	var inputOptions = getJavascript(inputHash,num);
	var fdat_value = (fdat_value_hash[fdat] != null) ? fdat_value_hash[fdat] : "";

	var check_array = new Array(value_arr.length);

	if (inputHash.input_default != null && fdat_value == ""){
		fdat_value = inputHash["input_default"];
	}
	var fdat_string = fdat_value_hash[fdat + '_' + num];

	if (fdat_string == null){
		indexArray = 0;
	} else {
		//Parse out ::
		var indexArray = 0;							//Index of the array element
		var indexCol = fdat_string.indexOf("::");	//Index of the end, where substring ends
		while (indexCol != -1){
			check_array[indexArray] = fdat_string.substring(0, indexCol);
			fdat_string = fdat_string.substring(indexCol+2, fdat_string.length);
			indexCol = fdat_string.indexOf("::");
			indexArray++;
		}
		indexArray--;
	}

	//Print the check boxes
	for (var i = 0; i < value_arr.length; i++) {
		fdat_full = fdat + '_' + value_arr[i] + '_' + num;
		matched = false;		//flag

		//Check to see if the checkbox has previously been checked, if so, check it
		for (var j = 0; j <= indexArray; j++){
			if (check_array[j] == value_arr[i]) {
//				content += '<input type=checkbox tabindex='+getTabIndex(tabindex)+' name="' + fdat_full + '" checked>' + option_arr[i] + '<BR>\n';
				content += '<input type=checkbox name="' + fdat_full + '" checked>' + option_arr[i] + '<BR>\n';
				matched = true;
			}
		}

		if (!matched){
//			content += '<input type=checkbox tabindex='+getTabIndex(tabindex)+' name="' + fdat_full + '">' + option_arr[i] + '<BR>\n';
			content += '<input type=checkbox name="' + fdat_full + '">' + option_arr[i] + '<BR>\n';
		}
	}
	return content;
}

function button (inputHash,num,repeat_number) {
	var content = "";
	var button_arr = inputHash["input_display"+lang].split("::");
	if (inputHash.input_values != null) {
		content = '<a href="'+inputHash["input_values"]+'"><img src="'+pic_path+button_arr[0]+'.gif" alt="'+button_arr[1]+'" align=bottom border="0"></a><br>';
	} else {
		content = '<input type=image src="'+pic_path+button_arr[0]+'.gif" alt="'+button_arr[1]+'" align=bottom border="0" value=submit><br>';
	}
	return content;
}

function textBox (inputHash,num,repeat_number,tabindex) {
	var content = "";
	var inputOptions = "";
	var fdat = getFdat(inputHash,num,repeat_number);
	var fdat_value = (fdat_value_hash[fdat] != null) ? fdat_value_hash[fdat] : "";
	if (inputHash.input_maxlength != null) {
		inputOptions += 'maxlength="' + inputHash["input_maxlength"] + '" ';
	}
	var classes = "login_select";
	if (inputHash["input_display"+lang] && inputHash["input_display"+lang].match("^class=")) {
		classes += " " + inputHash["input_display"+lang].replace("class=","");
		classes = classes.replace("\"","");
	}
	if (inputHash.input_size != null) {
		inputOptions += 'size="' + inputHash["input_size"] + '" ';
	}
	inputOptions += getJavascript(inputHash,num);
//	content += '<input tabindex='+getTabIndex(tabindex)+' name="'+fdat+'" class="'+classes+'" type="text" value="'+fdat_value+'" '+inputOptions+'>';
	content += '<input name="'+fdat+'" class="'+classes+'" type="text" value="'+fdat_value+'" '+inputOptions+'>';
	return content;
}

function staticText (inputHash,num,repeat_number) {
	var content = "";
	var inputOptions = "";
	var fdat = getFdat(inputHash,num,repeat_number);
	var fdat_value = (fdat_value_hash[fdat] != null) ? fdat_value_hash[fdat] : "";
	if (inputHash.input_maxlength != null) {
		inputOptions += 'maxlength="' + inputHash["input_maxlength"] + '" ';
	}
	if (inputHash.input_size != null) {
		inputOptions += 'size="' + inputHash["input_size"] + '" ';
	}
	inputOptions += getJavascript(inputHash,num);

	if (fdat_value == "") {
		var option_arr = inputHash["input_display"+lang];
//		var value_arr = inputHash["input_values"];
		content += '<label>'+option_arr+'</label>';
	} else {
		content += '<label>'+fdat_value+'</label>';
	}
	return content;
}


function buildMultipleTitleSection(titleString,num) {

	var title_arr = titleString.split("::");

	// if it only has 1 title element then return it
	if (title_arr.length == 1) {
		return titleString;
	}

	var content = "";
	var num_suffix = "_" + num;

	// multiple titles - assume that if there are more than 1 each is a (title, id) pair
	// the even indexes (0,2,...) are the titles and (1,3,...) are the ids

	for (var i=0;i<title_arr.length;i=i+2) {
		content += '<div id='+title_arr[i+1]+num_suffix;
		if (i > 0) {
			content += ' style="display:none"';
		}
		content += '>'+title_arr[i]+'</div>\n';
	}

	return content;

}

function buildRepeating2RowTemplate(questionHash,num,repeat_number) {
	var content = "";
	var num_suffix;
	if (num != null) {
		num_suffix = "_" + num;
	}
	var start = 1;
	var end = questionHash["input_repeat_count"];
	if (repeat_number != null) {
		start = repeat_number;
		end = end * 1 + repeat_number * 1 - 1;
	}
	//Deal with inputs. Quick hack for having inputs separated by ::
	if(questionHash.input_id.match(/::/)){
		var ar = questionHash.input_id.split("::");
		questionHash.input_id = ar[0];
		for (var i = 1; i < ar.length; i++){
			questionHash['input_id' + (i+1)] = ar[i];
		}
	}
	for (var i=start;i<=end;i++ ) {
//		if ( questionHash.div_id != null ) {
//			if (num != null) {
//				content += '<div id='+questionHash["div_id"]+i+num_suffix+'>\n';
//			} else {
//				content += '<div id='+questionHash["div_id"]+i+'>\n';
//			}
//		}
	content += '<div id='+questionHash["div_id"]+i+num_suffix+'>\n';

		content += '<table width="100%" cellpadding="0" cellspacing="0" border="0">\n';
		var eClass = (var_error_list[questionHash["error_id"]+ i + num_suffix])? "error":"";
		if (i == 1 || repeat_number != null) {
			content += '\
					<tr>\
						<td width="35"></td>\
						<td>\
							<span class="'+eClass+'">'+buildMultipleTitleSection(questionHash["title"+lang],num)+'</span>\
						</td>\
					</tr></table>\n';
			content += '<table width="100%" cellpadding="0" cellspacing="0" border="0">\n';
		}
		content += '\
				<tr>\
					<td width="35"></td>\
					<td width="260" valign="middle">\n';
		content += functionList[inputArray[questionHash["input_id"]]["template"]](inputArray[questionHash["input_id"]],num,i);
		content += '</td><td width="10"></td><td>';
		
		if (questionHash.input_id2 != null) {
			content += functionList[inputArray[questionHash["input_id2"]]["template"]](inputArray[questionHash["input_id2"]],num,i);
		}
		if (questionHash.input_id3 != null) {
			content += functionList[inputArray[questionHash["input_id3"]]["template"]](inputArray[questionHash["input_id3"]],num,i);
		}
		if (questionHash.input_id4 != null) {
			content += functionList[inputArray[questionHash["input_id4"]]["template"]](inputArray[questionHash["input_id4"]],num,i);
		}
		content += '\
						</td>\
					</tr>\
				</table>\
			<img width=1 height=3 border=0 alt=""><br>\n';
//		if ( questionHash.div_id != null ) {
			content += '</div>\n';
//		}
	}  // end the question repeating loop
	return content;
}

function buildRepeating2RowTemplateAlarm(questionHash,num,repeat_number) {
	var content = "";
	var num_suffix = "_" + num;
	var start = 1;
	var end = questionHash["input_repeat_count"];
	if (repeat_number != null) {
		start = repeat_number;
		end = end * 1 + repeat_number * 1 - 1;
	}
	for (var i=start;i<=end;i++ ) {
		if ( questionHash.div_id != null ) {
			if (num != null) {
				content += '<div id='+questionHash["div_id"]+i+num_suffix+'>\n';
			} else {
				content += '<div id='+questionHash["div_id"]+i+'>\n';
			}
		}
		content += '\
				<table width="100%" cellpadding="0" cellspacing="0" border="0">\
					<tr>\
						<td width="35"><img width=35 height=1 border=0 alt=""></td>\
						<td width="270"><img width=270 height=1 border=0 alt=""></td>\
						<td width="265"><img width=265 height=1 border=0 alt=""></td>\
					</tr> \n';
		var eClass = (var_error_list[questionHash["error_id"]+ i + num_suffix])? "error":"";
		if (i == 1 || repeat_number != null) {
			content += '\
					<tr>\
						<td height="25" valign="middle" align="right"></td>\
						<td colspan="2">\
							<span class="'+eClass+'">'+buildMultipleTitleSection(questionHash["title"+lang],num)+'</span>\
						</td>\
					</tr>\n';
		}
			content += '\
					<tr>\
						<td></td>\
						<td valign="middle" align="right">Device #'+i+':&nbsp; \n';
		content += '</td><td>';
		content += functionList[inputArray[questionHash["input_id"]]["template"]](inputArray[questionHash["input_id"]],num,i);
		if (questionHash.input_id2 != null) {
//			content += functionList[inputArray[questionHash["input_id2"]]["template"]](inputArray[questionHash["input_id2"]],num,i);
		}
		if (questionHash.input_id3 != null) {
//			content += functionList[inputArray[questionHash["input_id3"]]["template"]](inputArray[questionHash["input_id3"]],num,i);
		}
		content += '\
						</td>\
					</tr>\
					<tr>\
						<td colspan="3"></td>\
					</tr>\
				</table>\
			<img width=1 height=3 border=0 alt=""><br>\n';
		if ( questionHash.div_id != null ) {
			content += '</div>\n';
		}
	}  // end the question repeating loop
	return content;
}
//	i_input_id:{"template", "input_display_(en|fr)", "fdat_name", "input_values", "input_value_max", "input_value_min", "js_parent_event", "js_parent_function", "js_parent_function_param"},
//	q_question_id:{"template", "input_id", "title_(en|fr)", "glossary_id", "div_id", "error_id", "input_id2", "input_id3", "input_repeat_count"},

function buildTemplate(questionHash, num, repeat_number, tabindex, div_exist) {
	var content = "";
	var num_suffix = "";
	if (num != null){
		num_suffix = "_"+num;
	}
	if (repeat_number != null) {
		num_suffix = repeat_number + num_suffix;
	}
	
	// Include the div if required
	if (div_exist == null) {
		var ques_class;
		if (questionHash.div_id == 'ques_blank') {
			ques_class = "ques_blank";
		} else {
			ques_class = "ques";
		}
		
		var div_id = '';
		if (questionHash["div_id"]) {
			div_id = questionHash["div_id"]+num_suffix;
		}
		
		content += '<div class=' +ques_class+ ' style="position:relative" id='+div_id+'>\n';
	/*
		if (glossaryArray[questionHash.glossary_id] != null) {
			glossId++;
			currentGloss = glossId;
			content += '<div id=glossary_'+glossId+' class=gloss>'+glossaryArray[questionHash.glossary_id].content+'</div>';
		} else {
			currentGloss = '';
		}
	*/
	}

	if (questionHash.template == "question_row_template_no_glossary") {
		content += '\
							<table width="100%" cellpadding="0" cellspacing="0" border="0">\
								<tr>\
									<td width="5" height="25" valign="middle" align="left">\n';
	} else {
		content += '\
							<table width="100%" cellpadding="0" cellspacing="0" border="0">\
								<tr>\
									<td width="35" height="25" valign="middle" align="left">\n';
	}
	if ( questionHash.glossary_id != null ) {
		content += '\
							<a href =. onClick="window.open(\'/glossary?glossary_id=' + questionHash["glossary_id"] +'&quoter_link='+quoter+'&session_id='+session_id+'\',\'date\',\'scrollbars=yes,width=375,height=375\');return false;"><img src="'+pic_path+'help.gif" alt="glossary item" border="0"></a>';
	}
		
	var eClass = (var_error_list[questionHash["error_id"]+num_suffix])? "error":"";
	
	content += '\
								</td>\
								<td class="tdQTitle"><span class="'+eClass+'">' + buildMultipleTitleSection(questionHash["title"+lang],num) + '</span></td>\
								<td width="10"></td>\
								<td valign="top" class="ques_input">\n';
	if ( questionHash.link_glossary_id != null && questionHash.template != "question_row_template_long") {
		content += '\
									<table width="100%" cellspacing="0" cellpading="0" border="0">\
										<tr>\
											<td width="50%">\n';
	}
	
	//Allow multiple input_ids separated by ::
	if (questionHash.input_id != null) {
		var ids = questionHash.input_id.split("::");
		for (var i = 0; i < ids.length; i++){
			content += functionList[inputArray[ids[i]]["template"]](inputArray[ids[i]],num, repeat_number);
		}
	}
	if (questionHash.input_id2 != null) {
		content += functionList[inputArray[questionHash["input_id2"]]["template"]](inputArray[questionHash["input_id2"]],num, repeat_number);
	}
	if (questionHash.input_id3 != null) {
		content += functionList[inputArray[questionHash["input_id3"]]["template"]](inputArray[questionHash["input_id3"]],num, repeat_number);
	}
	if ( questionHash.link_glossary_id != null ) {
		if ( questionHash.template != "question_row_template_long") {
			content += '\
											</td>\n\
				                            <td width="50%">\n';
		} else if ( questionHash.template != "question_row_template_long") {
			content += '<br>\n';
		}
		content += '\
												<a href =. onClick="window.open(\'/glossary?glossary_id='+questionHash["link_glossary_id"]+'&quoter_link='+quoter+'&session_id='+session_id+'\',\'date\',\'scrollbars=yes,width=375,height=375\');return false;">'+questionHash["link_title"+lang]+'</a>\n';
		if ( questionHash.template != "question_row_template_long") {
			content += '\
											</td>\
										</tr>\
									</table>\n';
		}
	}
	content += '\
								</td>\
							</tr>\
						</table>\n';

	if (div_exist == null) {
		content += '</div>\n';
	}


	return content;
}

function buildHomeTemplate(questionHash, num, repeat_number) {
	var content = "";
	var num_suffix = "";
	if (num != null){
		num_suffix = "_"+num;
	}
	if (repeat_number != null) {
		num_suffix = repeat_number + num_suffix;
	}
	if ( questionHash.div_id != null ) {
			content += '<div id='+questionHash["div_id"]+num_suffix+'>\n';
	}
	var eClass = (var_error_list[questionHash["error_id"]+num_suffix])? "error":"";
	content += '\
						<table width="100%" cellpadding="0" cellspacing="0" border="0">\
							<tr>\
								<td width="220"><img width=220 height=1 border=0 alt=""></td>\
								<td width="5"><img width=5 height=1 border=0 alt=""></td>\
								<td width="100%"><img width=100% height=1 border=0 alt=""></td>\
							</tr>\
							<tr>\
								<td><span class="'+eClass+'">' + buildMultipleTitleSection(questionHash["title"+lang],num) + '</span></td>\
								<td></td>\
								<td valign="middle">\n';
	if (questionHash.input_id != null) {
		content += functionList[inputArray[questionHash["input_id"]]["template"]](inputArray[questionHash["input_id"]],num, repeat_number);
	}
	if (questionHash.input_id2 != null) {
		content += functionList[inputArray[questionHash["input_id2"]]["template"]](inputArray[questionHash["input_id2"]],num, repeat_number);
	}
	if (questionHash.input_id3 != null) {
		content += functionList[inputArray[questionHash["input_id3"]]["template"]](inputArray[questionHash["input_id3"]],num, repeat_number);
	}
	content += '\
								</td>\
							</tr>\
						</table>\n';
	if ( questionHash.div_id != null ) {
		content += '</div>\n';
	}
	return content;
}

function buildTemplateTip(questionHash,num,repeat_number) {
    var content = "";

    //determine id
    var divId="";
    if ( questionHash.div_id != null ) {
        if (num != null) {
            divID = questionHash["div_id"]+"_"+num;
        } else {
            divID = questionHash["div_id"];
        }
    }

    var img_src = "/pics/";
    var text = "Close";
    text +=  " <img src='/pics/qa_close.gif' border=0 style='margin-bottom:-4px'/>";
    content = " <div id='" + divID + "_outer' style='position:relative;'>\n";
    content += "<div style='display:none' class='quoteAlert' id='" + divID + "'>\n";

    content += "<div class='container'><div class='shadedQATop'></div><div class='contentQA'>"
            + questionHash["title"+lang]
            + "<br /><table cellpadding='0' style='' width='100%'><tr><td width='75%'>&nbsp;</td><td><div id='"+divID+'_closeLink'+"' style='cursor:pointer;'><span>"+text+"</span></div></td></tr></table>"
            + "</div><div class='shadedQABottom'></div></div>";

    content += "</div></div>\n";
    return content;
}

function displaySectionHeading(heading) {
	return '<p class="pSubHeader"><span class="page_sub_header">'+heading+'</span></p>';
}

function displayButton(image,alt,javascript) { 
	return displayConfirmButton(image,alt,javascript,"");
}

function displayConfirmButton(image,alt,javascript,onclick_js) {
	return '\
	<p><p>\
	<table border="1" cellpadding="0" cellspacing="0" width="100%">\n\
		<tr align=right>\n\
			<td>\n\
				<a href="'+javascript+'" onClick="'+onclick_js+'"><img src="'+pic_path+'/'+image+'" alt="'+alt+'" border="0"></a><br>\n\
			</td>\n\
		</tr>\n\
	</tbody></table>\n';
}

function displayConfirmButtonWithText(image,text,text_align,alt,javascript,onclick_js) {
    return '\
	<table border="0" cellpadding="0" cellspacing="0" width="100%">\n\
	 <tbody>\n\
		<tr>\n\
			<td width="10"><img alt="" border="0" height="0" width="15"></td>\n\
			<td width="371"><img alt="" border="0" height="0" width="371"></td>\n\
			<td width="10"><img alt="" border="0" height="0" width="10"></td>\n\
			<td><br></td>\n\
			<td width="10"><img alt="" border="0" height="0" width="15"></td>\n\
		</tr>\n\
		<tr align=right>\n\
			<td><img alt="" border="0" width="1"></td>\n\
			<td align="'+text_align+'">'+text+'</td>\n\
			<td><img alt="" border="0" width="1"></td>\n\
			<td>\n\
				<a href="'+javascript+'" onClick="'+onclick_js+'"><img src="'+pic_path+'/'+image+'" alt="'+alt+'" border="0"></a><br>\n\
			</td>\n\
			<td><img alt="" border="0" width="1"></td>\n\
		</tr>\n\
	 </tbody>\n\
	</table>\n';

}

function displayButtonWithText(image,text,alt,href) {
			//<input src="'+pic_path+'/'+image+'" alt="'+alt+'" '+javascript+' value="submit" align="baseline" border="0" type="image"><br>\n\
	return '\
<table class="light_border" width="100%"><tr><td width="100%">\n\
	<p></p><p><table border="0" cellpadding="0" cellspacing="0" width="100%">\n\
	<tbody><tr>\n\
		<td width="5"><img alt="" border="0" height="1" width="5"></td>\n\
		<td width="431"><img alt="" border="0" height="1" width="431"></td>\n\
		<td width="10"><img alt="" border="0" height="1" width="10"></td>\n\
		<td width="100%"><img alt="" border="0" height="1" width="100%"></td>\n\
	</tr>\n\
	<tr>\n\
		<td><img alt="" border="0" height="37" width="1"></td>\n\
		<td>'+text+'</td>\n\
		<td><img alt="" border="0" height="37" width="1"></td>\n\
		<td align="right">\n\
			<a href="'+href+'"><img src="'+pic_path+'/'+image+'.gif" alt="'+alt+'" border="0"></a><br>\n\
		</td>\n\
	</tr>\n\
</tbody></table></td></tr></table>\n';
}

function buildButtonWithTextSection(image,text,alt,href,width) {
	return '\
	<table border="0" cellpadding="0" cellspacing="0" width="100%">\n\
	<tbody><tr>\n\
		<td width="5"><img alt="" border="0" height="1" width="5"></td>\n\
		<td></td>\n\
		<td width="10"><img alt="" border="0" height="1" width="10"></td>\n\
		<td></td>\n\
	</tr>\n\
	<tr>\n\
		<td><img alt="" border="0" height="37" width="1"></td>\n\
		<td>'+text+'</td>\n\
		<td><img alt="" border="0" height="37" width="1"></td>\n\
		<td>\n\
		<a href="'+href+'"><img src="'+pic_path+image+'.gif" alt="'+alt+'" border="0"></a><br>\n\
		</td>\n\
	</tr>\n\
	</table>\n';
}

function displayTwoButtonsWithText(image1,text1,alt1,href1,image2,text2,alt2,href2) {
	
	var shtml = "<table class=\"light_border divQ\" cellpadding=\"4\" cellspacing=\"0\" border=\"0\">\n";
	shtml += "<tr><td width=\"50%\">\n";
	shtml += buildButtonWithTextSection(image1,text1,alt1,href1,200);
	shtml += "</td><td width=\"10\"><img alt=\"\" border=\"0\" height=\"1\" width=\"10\"></td><td width=\"*\">\n";
	shtml += buildButtonWithTextSection(image2,text2,alt2,href2,200);
	shtml += "</td></tr>\n";
	shtml += "</table>\n";

	return shtml;

}

function buildRepeatingQuestion(questionHash,num) {
	var content = '';
	var num_suffix = '';
	if (num != null) {
		num_suffix = "_"+num;
	}
	
	for (var i=1;i<=questionHash["input_repeat_count"];i++ ) {
	
		var repeat_num = i;
		if (questionHash["input_repeat_count"] == 1) {
			repeat_num = '';
		}
	
		if ( questionHash.div_id != null ) {
				content += '<div id='+questionHash["div_id"]+repeat_num+num_suffix+'>\n';
		}

		var inputs = new Array();
		
		if (questionHash.input_id != null){
			inputs[0] = questionHash["input_id"];
		}
		
		if (questionHash.input_id2 != null){
			inputs[1] = questionHash["input_id2"];
		}
		if (questionHash.input_id3 != null){
			inputs[2] = questionHash["input_id3"];
		}

		content += displayQuestions(inputs,num,repeat_num);

		if ( questionHash.div_id != null ) {
			content += '</div>\n';
		}
	}  // end the question repeating loop
	return content;
}
function blank(hash) {
	return 'Build this function<br>';
}

var functionList = new Array();
functionList["question_row_template"]=buildTemplate;
functionList["question_row_template_no_glossary"]=buildTemplate;
functionList["question_home_template"]=buildHomeTemplate;
functionList["question_row_template_long"]=buildTemplate;
functionList["question_repeat_template"]=buildRepeating2RowTemplate;
functionList["question_repeat_template_alarm"]=buildRepeating2RowTemplateAlarm;
functionList["question_row_template_tip"]=buildTemplateTip;
functionList["select_list"]=selectList;
functionList["select_month"]=selectMonth;
functionList["select_day"]=selectDay;
functionList["select_year_defaults"]=selectYearDefaults;  // TODO - create this function
functionList["select_year"]=selectYear;
functionList["select_range"]=selectRange;
functionList["static_text"]=staticText;
functionList["text_box"]=textBox;
functionList["button"]=button;
functionList["select_city"]=buildSelectList;
functionList["select_county"]=buildSelectList;
functionList["radio_buttons"]=blank;
functionList["select_insurance_companies_gap_rating"]=buildSelectList;
functionList["select_occupation"]=buildSelectList;
functionList["select_list_db_lookup"]=buildSelectList;
functionList["select_list_lookup"]=selectList;
functionList["repeating_question_group"]=buildRepeatingQuestion;
functionList["multiple_checkboxes"]= buildMultipleCheckboxes; //selectList; //buildMultipleCheckboxes;
//functionList["tip_box"]=tipBox;

function displayQuestions(questions, num, repeat_number, tabindex, div_exist) {
	var content = "";
	for (var i=0;i<questions.length;i++) {
//		console.log(questions[i], questionArray[questions[i]], functionList[questionArray[questions[i]]["template"]]);
		try {
			content += functionList[questionArray[questions[i]]["template"]](questionArray[questions[i]],num, repeat_number, tabindex, div_exist);
		} catch (e) {
			alert("Error building question == "+questions[i]);
			throw(e);
		}
	}
	return content;
}

