// Search Template JavaScript Functions
// File:    searchTemplate.js
// Author:  Eric Baars
// WEBCAT:  2.1
// Version: 1.0
// History:
//    23 Jan 2001  Initial creation
//    27 Feb 2001  Required prompt processing...ETB

// Majority of JavaScript code moved out of XSL file to speed processing.

// Utility: Determine if a string has non-blank characters
function isBlank(s) {
	if (s.length < 1) return true;
	for (var i = 0; i < s.length; i++) {
		if (s.charAt(i) != ' ' &&
			s.charAt(i) != '\t' &&
			s.charAt(i) != '\n') {
			return false;
		}
	}
    return true;
}

// Utility: Verify that required prompts have a value
function validateRequiredPrompts() {
	var requiredFieldNames = "";
	// loop through prompts
	for (var i=0 ; i < document.SearchForm.elements.length; i++) {
		var e = document.SearchForm.elements[i];
		if (e.name.substr(0,3) == "POI") {
			if ((document.SearchForm.elements[i-1].value == '1') && isBlank(e.value)) {
				requiredFieldNames += document.SearchForm.elements[i-1].name + "\n";
			}
		}
	}
	if (requiredFieldNames.length > 0) {
		window.alert(msg_requiredfield + ":\n\n" + requiredFieldNames);
		return false;
	} else {
		return true;
	}
}

//-----------------------------------------------------------------------------
// Handler (text onBlur): Edit input field
// Multiple lines of input "AND"ed/"OR"ed according to radio options
function textBlur(textprompt,label) {
/*	if (textprompt.value != "/") return true;
	var parentTargetFieldIndex = -1;
	// find text prompt
	for (var i=0 ; i < document.SearchForm.elements.length; i++) {
		var e = document.SearchForm.elements[i];
		if (e.name == textprompt.name) {
			parentTargetFieldIndex = i;
			break;
		}
	}
	if (parentTargetFieldIndex == -1) {
		alert("SearchTemplate: Unexpected error ST001.\nCould not find prompt "+textprompt.name);
		return;
	}

	// setup window contents
	var cfContent = 'var cSelect = "/";\n';
	cfContent += 'if (document.ControlForm.elements[2].checked) cSelect = " ";\n';   // "AND" selected
	cfContent += 'var sResult="";\n';
	cfContent += 'var aryString = parent.SecDataFrame.document.DataForm.elements[0].value.split("\\n");\n';
	cfContent += 'for (var i=0; i<aryString.length; i++) {\n';
	cfContent += '  if (aryString[i].length > 0) sResult += ((sResult=="") ? "" : cSelect) + aryString[i];} \n';
	cfContent += 'top.opener.document.SearchForm.elements[' + parentTargetFieldIndex + '].value = sResult;\n';
	cfContent += 'top.close();\n';

	var dfContent = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> ';
	dfContent += '<HTML>\n<HEAD>\n<TITLE><\/TITLE><\/HEAD>\n';
	dfContent += '<BODY STYLE="background-color:gray;text-align:center;">\n';
	dfContent += '<FORM NAME="DataForm" STYLE="text-align:center;">';
    dfContent += '<P><TEXTAREA TABINDEX=1 NAME="EnteredText" ROWS="12" COLS="40">\n';
	dfContent += '<\/TEXTAREA><\/P>\n';
	dfContent += '<\/FORM>\n';
	dfContent += '<\/BODY><\/HTML>\n';

	var labels = new Array(6);
	labels[0] = txt_edit + " " + label;
	labels[1] = txt_okay;
	labels[2] = txt_close;
	labels[3] = "or";
	labels[4] = txt_and;
	labels[5] = txt_or;
	var winHandle = openSecondaryFrames(labels,cfContent,dfContent);*/
}

//-----------------------------------------------------------------------------
// Handler: Edit input field
// Multiple lines of input "AND"ed/"OR"ed according to radio options
function editText(button,label) {
	var parentTargetFieldIndex = -1;
	// find text prompt
	for (var i=0 ; i < document.SearchForm.elements.length; i++) {
		var e = document.SearchForm.elements[i];
		if (e == button) {
			parentTargetFieldIndex = i - 1;
			break;
		}
	}
	if (parentTargetFieldIndex == -1) {
		alert("SearchTemplate: Unexpected error ST001.\nCould not find prompt "+button.name);
		return;
	}

	// setup window contents
	var cfContent = 'var cSelect = "/";\n';
	cfContent += 'if (document.ControlForm.elements[2].checked) cSelect = " ";\n';   // "AND" selected
	cfContent += 'var sResult="";\n';
	cfContent += 'var aryString = parent.SecDataFrame.document.DataForm.elements[0].value.split("\\n");\n';
	cfContent += 'for (var i=0; i<aryString.length; i++) {\n';
	cfContent += '  if (aryString[i].length > 0) sResult += ((sResult=="") ? "" : cSelect) + aryString[i];} \n';
	cfContent += 'top.opener.document.SearchForm.elements[' + parentTargetFieldIndex + '].value = sResult;\n';
	cfContent += 'top.close();\n';

	var dfContent = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> ';
	dfContent += '<HTML>\n<HEAD>\n<TITLE><\/TITLE><\/HEAD>\n';
	dfContent += '<BODY STYLE="background-color:gray;text-align:center;">\n';
	dfContent += '<FORM NAME="DataForm" STYLE="text-align:center;">';
    dfContent += '<P><TEXTAREA TABINDEX=1 NAME="EnteredText" ROWS="12" COLS="40">\n';
	dfContent += '<\/TEXTAREA><\/P>\n';
	dfContent += '<\/FORM>\n';
	dfContent += '<\/BODY><\/HTML>\n';

	var labels = new Array(6);
	labels[0] = txt_edit + " " + label;
	labels[1] = txt_okay;
	labels[2] = txt_close;
	labels[3] = "or";
	labels[4] = txt_and;
	labels[5] = txt_or;
	var winHandle = openSecondaryFrames(labels,cfContent,dfContent);
}

//-----------------------------------------------------------------------------
// Handler: Edit input field
// Date
function editDate( button, label ) {
	if( browserType == 'nn' && browserVersion < 5 ) {
		editText( button, label ) ;
		return ;
	}
	var actionCode = 'var dataForm = parent.SecDataFrame.document.DataForm ; '
		+ 'if ( !dataForm.elements[0].value || !dataForm.elements[1].value || !dataForm.elements[2].value ) { return; }'
		+ 'var sResult=dataForm.elements[1].options[dataForm.elements[1].value-1].text + " " + ' 
		+ 'dataForm.elements[0].value + '
		+ '", " + dataForm.elements[2].value;\n'
		+ 'top.opener.button.value = sResult;\n'
		+ 'top.close();\n';

	var dfContent = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\n';
	dfContent += "<HEAD>\n<SCRIPT LANGUAGE='JavaScript'>\n<!-- Original:  Nick Korosi (nfk2000@hotmail.com) -->\n<!-- Updated and Modified for Eloquent Systems 2002-->\n" +
					"<!-- Begin\n" + 
					"var dDate = new Date();var dCurMonth = dDate.getMonth();var dCurDayOfMonth = dDate.getDate();var dCurYear = dDate.getFullYear();var objPrevElement = new Object();\n" +
					
					
					"function fToggleColor(myElement) {var toggleColor = '#ff0000';if (myElement.getAttribute('id') == 'calDateText') {" +
					"if (myElement.getAttribute('color') == toggleColor) {myElement.setAttribute('color', '' );} else {myElement.setAttribute( 'color', toggleColor );}} else if (myElement.id == 'calCell') {for (var i = 0 ; i < myElement.childNodes.length; i++ ) {if (myElement.childNodes.item(i).getAttribute('id') == 'calDateText') {if (myElement.childNodes.item(i).getAttribute('color') == toggleColor) {" +
					"myElement.childNodes.item(i).setAttribute( 'color', '' ) ;} else {myElement.childNodes.item(i).setAttribute( 'color', toggleColor ) ;}}}}}" +
					"function fSetSelectedDay(myElement,isReturn){if (myElement.getAttribute('id') == 'calCell') {" +
					"if (!isNaN(parseInt(myElement.childNodes.item(0).childNodes.item(0).nodeValue))) {myElement.bgColor = '#c0c0c0';objPrevElement.bgColor = '';document.DataForm.calSelectedDate.value = parseInt(myElement.childNodes.item(0).childNodes.item(0).nodeValue);objPrevElement = myElement;if( isReturn == true) { top.SecControlFrame.buttonAction();}}}}" +
					"function fGetDaysInMonth(iMonth, iYear) {var dPrevDate = new Date(iYear, iMonth, 0);return dPrevDate.getDate();}function fBuildCal(iYear, iMonth, iDayStyle) {var aMonth = new Array();aMonth[0] = new Array(7);aMonth[1] = new Array(7);aMonth[2] = new Array(7);aMonth[3] = new Array(7);aMonth[4] = new Array(7);aMonth[5] = new Array(7);aMonth[6] = new Array(7);var dCalDate = new Date(iYear, iMonth-1, 1); var iDayOfFirst = dCalDate.getDay();var iDaysInMonth = fGetDaysInMonth(iMonth, iYear);var iVarDate = 1;var i, d, w;if (iDayStyle == 2) {aMonth[0][0] = 'Sunday';aMonth[0][1] = 'Monday';aMonth[0][2] = 'Tuesday';aMonth[0][3] = 'Wednesday';aMonth[0][4] = 'Thursday';aMonth[0][5] = 'Friday';aMonth[0][6] = 'Saturday';" +
					"} else if (iDayStyle == 1) {aMonth[0][0] = 'Sun';aMonth[0][1] = 'Mon';aMonth[0][2] = 'Tue';aMonth[0][3] = 'Wed';aMonth[0][4] = 'Thu';aMonth[0][5] = 'Fri';aMonth[0][6] = 'Sat';} else {aMonth[0][0] = 'Su';aMonth[0][1] = 'Mo';aMonth[0][2] = 'Tu';aMonth[0][3] = 'We';aMonth[0][4] = 'Th';aMonth[0][5] = 'Fr';aMonth[0][6] = 'Sa';}for (d = iDayOfFirst; d < 7; d++) {aMonth[1][d] = iVarDate;iVarDate++;}for (w = 2; w < 7; w++) {for (d = 0; d < 7; d++) {if (iVarDate <= iDaysInMonth) {aMonth[w][d] = iVarDate;iVarDate++;}}}return aMonth;}" +
					"\nfunction fDrawCal(iYear, iMonth, iCellWidth, iCellHeight, sDateTextSize, sDateTextWeight, iDayStyle) {\n" + 
					"document.DataForm.elements[2].value = iYear;\nvar myMonth;\nmyMonth = fBuildCal(iYear, iMonth, iDayStyle);\n" + 
					"document.write('<table border=\"1\">');\ndocument.write('<tr>');\ndocument.write('<td align=\"center\" style=\"FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold\">' + myMonth[0][0] + '</td>');\ndocument.write('<td align=\"center\" style=\"FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold\">' + myMonth[0][1] + '</td>');\n" + 
					"document.write('<td align=\"center\" style=\"FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold\">' + myMonth[0][2] + '</td>');\ndocument.write('<td align=\"center\" style=\"FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold\">' + myMonth[0][3] + '</td>');\ndocument.write('<td align=\"center\" style=\"FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold\">' + myMonth[0][4] + '</td>');\n" + 
					"document.write('<td align=\"center\" style=\"FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold\">' + myMonth[0][5] + '</td>');\ndocument.write('<td align=\"center\" style=\"FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold\">' + myMonth[0][6] + '</td>');\ndocument.write('</tr>');" +
					"for (w = 1; w < 7; w++) {document.write('<tr>');for (d = 0; d < 7; d++) {document.write('<td align=\"left\" valign=\"top\" width=\"' + iCellWidth + '\" height=\"' + iCellHeight + '\" id=calCell style=\"CURSOR:Hand\" onMouseOver=\"fToggleColor(this)\" onMouseOut=\"fToggleColor(this)\" onDblClick =\"fSetSelectedDay(this,true)\" onclick=fSetSelectedDay(this,false)>'); if (!isNaN(myMonth[w][d])) {document.write('<font id=calDateText onMouseOver=\"fToggleColor(this)\" style=\"CURSOR:Hand;FONT-FAMILY:Arial;FONT-SIZE:' + sDateTextSize + ';FONT-WEIGHT:' + sDateTextWeight);" +
					"document.write( '\" onMouseOut=\"fToggleColor(this)\" onclick=fSetSelectedDay(this)>' + myMonth[w][d] + '</font>');} else {document.write('<font id=calDateText onMouseOver=\"fToggleColor(this)\" style=\"CURSOR:Hand;FONT-FAMILY:Arial;FONT-SIZE:' + sDateTextSize + ';FONT-WEIGHT:' + sDateTextWeight + '\" onMouseOut=\"fToggleColor(this)\" onclick=fSetSelectedDay(this)>&#160;</font>');}document.write('</td>');}document.write('</tr>');}document.write('</table>');}" +
					"function fUpdateCal(iYear, iMonth) {myMonth = fBuildCal(iYear, iMonth);objPrevElement.bgColor = '';document.DataForm.calSelectedDate.value = '';var trList = document.getElementsByTagName('body').item(0).getElementsByTagName('table').item(1).getElementsByTagName('tr');for (w = 1; w < 7; w++) {var tdList = trList.item(w);for (d = 0; d < 7; d++) {if (!isNaN(myMonth[w][d])) {tdList.childNodes.item(d).childNodes.item(0).childNodes.item(0).nodeValue = myMonth[w][d];} else {tdList.childNodes.item(d).childNodes.item(0).childNodes.item(0).nodeValue = ' ' ;}}}}" +
					"// End --></script></head></HEAD><BODY><CENTER>" +
					"<form name='DataForm' method='post' onSubmit='fUpdateCal(DataForm.tbSelYear.value, document.DataForm.tbSelMonth.value);return false;' action=''><input type='hidden' name='calSelectedDate' value=''><table border='1'><tr><td>&#160;<select name='tbSelMonth' onchange='fUpdateCal(document.DataForm.tbSelYear.value, document.DataForm.tbSelMonth.value)'><option value='1'>January</option><option value='2'>February</option><option value='3'>March</option><option value='4'>April</option><option value='5'>May</option><option value='6'>June</option><option value='7'>July</option><option value='8'>August</option><option value='9'>September</option><option value='10'>October</option><option value='11'>November</option><option value='12'>December</option></select>" +
					"&#160;<INPUT NAME='tbSelYear' SIZE='5' VALUE='' onchange='fUpdateCal(DataForm.tbSelYear.value, document.DataForm.tbSelMonth.value)'>&#160;<INPUT NAME='' TYPE='BUTTON' VALUE='Get'>&#160;</select></td></tr><tr><td>" +
					"<script language='JavaScript'><!-- Begin\n" + 
					"var dCurDate = new Date(" 
	var dateValue = button.value ;
	if (!isNaN( new Date( dateValue ).getMonth() ) ) {
		dfContent += "'" + dateValue + "'" ;
	}					
	dfContent +=	"); document.DataForm.elements[1].options[dCurDate.getMonth()].selected = true;document.DataForm.elements[2].value = dCurDate.getYear(); document.DataForm.elements[0].value = dCurDate.getDate( ); for (i = 0; i < document.DataForm.tbSelYear.length; i++)if (DataForm.tbSelYear.options[i].value == dCurDate.getFullYear())DataForm.tbSelYear.options[i].selected = true;\nfDrawCal(dCurDate.getFullYear(), dCurDate.getMonth()+1, 30, 30, '12px', 'bold', 1);" +
					"var trList = document.getElementsByTagName('body').item(0).getElementsByTagName('table').item(1).getElementsByTagName('tr');" +
					"for( var i = 1 ; i < trList.length ; i++ ) { var tdList = trList.item(i).childNodes ;for( var j = 0 ; j < tdList.length ; j++ ) {if ( tdList.item(j).childNodes.item(0).hasChildNodes() ) {var dayValue = parseInt( tdList.item(j).childNodes.item(0).childNodes.item(0).nodeValue ) ;" +
					"if ( dayValue == dCurDate.getDate( ) ) {fSetSelectedDay(trList.item(i).childNodes.item(j)) ;}}}}" +
					"//  End -->\n</script>\n" +
					"</td></tr></table></form></CENTER></BODY>" ;
	// display edit window
	var labels = new Array();
	labels[0] = txt_edit + ' ' + button.name ;
	labels[1] = txt_okay;
	labels[2] = txt_close;
	var windowSetting = new windowProperties( "1|0|0|0|0|0|0|0|60|30|20|40|T|16|Edit" ) ;
	var winHandle = top.openSecondaryFrames( labels,actionCode,dfContent,windowSetting,1 ) ;
}
