////////////////////////////////
function MakeParagraphs( OriginalMessage )
{
	ConvertedMessage = "";
	ParagraphArray = OriginalMessage.split("%0D%0A")
	for (i=0; i < ParagraphArray.length; i++)
	{
		ConvertedMessage = ConvertedMessage + ParagraphArray[i]  + "<br>"
	}
	return ConvertedMessage;
}
////////////////////////////////
function EscapeFormFields( iForm )
{
	for (i=0; i< iForm.length; i++)
	{
		with (iForm.elements[i])
		{
			if ( (type.toLowerCase().indexOf("radio") > -1) 
					|| (type.toLowerCase().indexOf("checkbox") > -1) 
						|| (type.toLowerCase().indexOf("text") > -1) )
			{
				value = escape(value)
			}
			if (type.toLowerCase() == "select-one")
			{
				options[selectedIndex].value = escape(options[selectedIndex].value)
			}
			if (type.toLowerCase() == "select-multiple")
			{
				for (j=0; j< length; j++)
				{
					if (options[j].selected)
					{
						options[j].value = escape(options[j].value)
					}
				}
			}
		}
	}
	return iForm;
}
////////////////////////////////
function unescapeArrayOfFormElements( oFormElementArray )
{
	for (i=0; i < oFormElementArray.length; i++)
	{
		with (oFormElementArray[i])
		{
			if (type.toLowerCase().indexOf("text") > -1)
			{
				value = unescape(value)
			}
			if (type.toLowerCase().indexOf("select") > -1) 
			{
				options[selectedIndex].value = unescape(options[selectedIndex].value)
			}
		}
	}
}
////////////////////////////////
function UnescapeFormFields( iForm )
{
	for (i=0; i< iForm.length; i++)
	{
		with (iForm.elements[i])
		{
			if (type.toLowerCase().indexOf("text") > -1)
			{
				value = unescape(value)
			}
			if (type.toLowerCase() == "select")
			{
				options[selectedIndex].value = unescape(options[selectedIndex].value)
				//alert(options[selectedIndex].value)
			}
			if (type.toLowerCase() == "select-multiple")
			{
				for (j=0; j< length; j++)
				{
					if (options[j].selected)
					{
						options[j].value = unescape(options[j].value)
					}
				}
			}
		}
	}
	return iForm;
}
////////////////////////////////
function getRadioValue( oRadioFormElement)
{
	var radioValue = "";
	for (i=0; i < oRadioFormElement.length; i++)
	{
		if (oRadioFormElement[i].checked)
		{
			radioValue = oRadioFormElement[i].value;
			return radioValue;
		}
	}
	return radioValue;
}
function cantBeEmpty( oFormElementArray )
{
	var alertString = "";
	for (i=0; i < oFormElementArray.length; i++)
	{
		//alert(oFormElementArray[i].name)
		if ( (oFormElementArray[i].type.toLowerCase().indexOf("text") > -1) && (oFormElementArray[i].value.length < 1) ) 
		{
			alertString = alertString + "\n\t" + AddSpaces(oFormElementArray[i].name)
		}
		if ( (oFormElementArray[i].type.toLowerCase().indexOf("hidden") > -1) && (oFormElementArray[i].value.length < 1) ) 
		{
			alertString = alertString + "\n\t" + AddSpaces(oFormElementArray[i].name)
		}
		if ( (oFormElementArray[i].type.toLowerCase().indexOf("select") > -1) && (oFormElementArray[i].selectedIndex == 0) ) 
		{
			alertString = alertString + "\n\t" + oFormElementArray[i].name
		}
		if ( (oFormElementArray[i].type.toLowerCase().indexOf("radio") > -1) ) 
		{
			alert(oFormElementArray[i].value)
			alertString = alertString + "\n\t" + oFormElementArray[i].name
		}
		if ( (oFormElementArray[i].type.toLowerCase().indexOf("file") > -1)  && (oFormElementArray[i].value.length < 1) ) 
		{
			alertString = alertString + "\n\t" + oFormElementArray[i].name
			//alert(oFormElementArray[i].name + " has a length of " + oFormElementArray[i].value.length)
		}
	}
	if (!(alertString == ""))
	{
		alert("You must fill in the following fields:" + alertString);
		return false;
	}
	else
	{
		return true;
	}
	//alert(oFormElement.name);
}
////////////////////////////////
function mustBeDate( oFormElementArray )
{
	var alertString = "";
	var i;
	for (i=0; i < oFormElementArray.length; i++)
	{
		if ( isNaN(new Date(oFormElementArray[i].value)) )
		{
			alertString = alertString + "\n\t" + AddSpaces(oFormElementArray[i].name)
		}
	}
	if (!(alertString == ""))
	{
		alert("The following field(s) must be a date:" + alertString);
		return false;
	}
	else
	{
		return true;
	}
	//alert(oFormElement.name);
}
////////////////////////////////
function isValidDate( sDateFieldName, sMonth, sDay, sYear, blankOK )
{
	var MonthLengths = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
	var alertString = "";
	var blankString = "";
	if (!sMonth=="" && !sDay=="")
	{
		if ( MonthLengths[sMonth-1] < sDay )
		{
			alertString = alertString + "\n\t" + sDateFieldName
		}
	}
	if ( (!(sDay=="") && sMonth=="") || (!(sDay=="") && sYear=="") || (!(sMonth=="") && sYear=="") || (!(sMonth=="") && sDay=="") || (!(sYear=="") && sMonth=="")|| (!(sYear=="") && sDay=="") )
	{
			alertString = alertString + "\n\t" + sDateFieldName
	}
	if (blankOK == false)
	{
		blankString = " or left blank"
	}
	if (!(alertString == ""))
	{	
		alert("The following field(s) must be a valid date" + blankString + ":" + alertString);
		return false;
	}
	else
	{
		return true;
	}
}

function mustBeNumeric( oFormElementArray )
{
	var alertString = "";
	var i;
	for (i=0; i < oFormElementArray.length; i++)
	{
		if ( (oFormElementArray[i].type.toLowerCase().indexOf("text") > -1) && (isNaN(oFormElementArray[i].value)) )
		{
			alertString = alertString + "\n\t" + AddSpaces(oFormElementArray[i].name)
		}
	}
	if (!(alertString == ""))
	{
		alert("The following field(s) must be a number:" + alertString);
		return false;
	}
	else
	{
		return true;
	}
	//alert(oFormElement.name);
}
////////////////////////////////
function EscapeArrayFields( iForm )
{
	for (i=0; i< iForm.length; i++)
	{
		with (iForm.elements[i])
		{
			if (type.toLowerCase().indexOf("text") > -1)
			{
				value = escape(value)
			}
		}
	}
	return iForm;
}
////////////////////////////////
function UnescapeArrayFields( oSearchArgArray )
{
	for (key in oSearchArgArray)
	{
		oSearchArgArray[key] = unescape(oSearchArgArray[key])
	}
	return oSearchArgArray;
}
////////////////////////////////
function AddSpaces( iString )
{
	var retString = "";
	var charIndex;
	for (charIndex=0; charIndex< iString.length; charIndex++)
	{
		if (iString.charCodeAt(charIndex) > 64 && iString.charCodeAt(charIndex) < 91)
		{
			retString = retString + " " + iString.charAt(charIndex)
		}
		else
		{
			retString = retString + iString.charAt(charIndex)
		}	
	}
	return retString;
}
//////////////////////////////////
function FormatDateForAccess(dateObj)
{
	FormattedDate = (dateObj.getMonth()+1) + "/" + dateObj.getDate() + "/" + dateObj.getFullYear() + " " + dateObj.getHours() + ":" + dateObj.getMinutes()  + ":" + dateObj.getSeconds()
	return FormattedDate;	
}
//////////////////////////////////
// step through form elements, and build an array of text elements that have been filled in with a search argument
function buildSearchArgArray (oForm)
{
	var oSearchArgArray = new Array
	for (i = 0; i < oForm.length; i++)
	{
		if ( (oForm.elements[i].type.toLowerCase().indexOf("text") > -1 ) && (oForm.elements[i].value.length > 0) )
		{
			oSearchArgArray[oForm.elements[i].name] = escape(oForm.elements[i].value)
		} 
  		if ( (oForm.elements[i].type.toLowerCase().indexOf("select") > -1) && (oForm.elements[i].selectedIndex>0) )
		{
			oSearchArgArray[oForm.elements[i].name] = escape(oForm.elements[i].options[oForm.elements[i].selectedIndex].value)
		} 
	} // end for
	return oSearchArgArray;
} // end function
/////////////////////////////////
function buildWhereClause (oSearchArgArray)
{
	var sWhereClause = ""
	var i = 0
	for (key in oSearchArgArray)
	{
		if (!(oSearchArgArray[key] == ""))
		{
			if ( i > 0  )
			{
				sWhereClause = sWhereClause + " AND "
			}
			else
			{
				sWhereClause = sWhereClause + " WHERE "
			}
			sWhereClause = sWhereClause + key + " LIKE '%" + oSearchArgArray[key] + "%'"
			i = i + 1;
		}
	} // end for
	return ( sWhereClause);
} // end function
function HandleNull(OldFieldValue)
{
	if (OldFieldValue=="")
	{
		return "NULL"
	}
	else
	{
		return "'" + HandleNull(ReplaceQuotes(OldFieldValue)) + "'"
	}
}
function ReplaceQuotes(OldFieldValue)
{
	// replace the " or ' characters with `
	NewFieldValue = ""
	for (i = 0; i < OldFieldValue.length; i++)
	{
	  if ( (OldFieldValue.charAt(i)=='"') || (OldFieldValue.charAt(i)=="'") )
		{
			NewFieldValue = NewFieldValue + "`"
		}
		else
		{
			NewFieldValue = NewFieldValue + OldFieldValue.charAt(i)
		}
	} // end for
	return NewFieldValue;
}
////////////
function multipleSelectToArray (oFormelement)
{
	FieldValue = "";
	prefix = "";
	for (i=0; i < oFormelement.length; i++)
	{
		if (oFormelement[i].selected)
		{
			FieldValue = FieldValue + prefix + oFormelement[i].value
			prefix = ","
		}
	}
	return FieldValue.split(",");
}
function GenerateSQLArgument(formname, elementname, elementtype, datatype)
{
	if (elementtype == "select")
	{
		MySelectedIndex = eval("document.forms." + formname + "." + elementname + ".selectedIndex")
		FieldValue = eval("document.forms." + formname + "." + elementname + ".options[" + MySelectedIndex + "].value")
	}
	else if  (elementtype == "MultipleSelect")
	{
		FieldValue = "";
		prefix = "";
		for (i=0; i< eval("document.forms." + formname + "." + elementname + ".length"); i++)
		{
			if (eval("document.forms." + formname + "." + elementname + "[i].selected"))
			{
				FieldValue = FieldValue + prefix + eval("document.forms." + formname + "." + elementname + "[i].value")
				prefix = ","
			}
		}
	}
	else if (elementtype == "checkbox")
	{
		FieldValue = eval("document.forms." + formname + "." + elementname + ".checked")
	}
	else
	{
		FieldValue = eval("document.forms." + formname + "." + elementname + ".value")
	}
	////////////////////////////////////////
	if (FieldValue == "") return "NULL";
	
	if (datatype == "string")
	{
		return "'" + ReplaceQuotes(FieldValue) + "'"
	}
	if (datatype == "date")
	{
		return "'" + ReplaceQuotes(FieldValue) + "'"
	}
	else if (datatype=="numeric")
	{
		return FieldValue
	}
	else if (datatype == "boolean")
	{
		return FieldValue
	}
} // end function
//
function getCheckedIndexes(formname,checkboxElementName)
{
	checkedIndexes = new Array();
	//alert ( eval("document.forms." + formname + "." + elementname + ".length"))
	arrayIndex = -1
	for (i=0; i < eval("document.forms." + formname + "." + checkboxElementName + ".length"); i++)
	{
		if ( (eval("document.forms." + formname + "." + checkboxElementName + "[" + i + "].checked")) == true )
		{
			arrayIndex++;
			checkedIndexes[arrayIndex] = i;
		}
	}
	return checkedIndexes;
}

function getCheckedValues(formname,elementName)
{
	checkedValues = new Array();
// this works for check boxes
	arrayIndex = -1
	for (i=0; i < eval("document.forms." + formname + "." + elementName + ".length"); i++)
	{
		if ( (eval("document.forms." + formname + "." + elementName + "[" + i + "].checked")) == true )
		{
			arrayIndex++;
			checkedValues[arrayIndex] = eval("document.forms." + formname + "." + elementName + "[" + i + "].value");
		}
	}
	return checkedValues;
}

function getSelectedValue(formname,selectListElementName)
{
	selectedIndex = eval("document.forms." + formname + "." + selectListElementName + ".selectedIndex");
	selectedValue = eval("document.forms." + formname + "." + selectListElementName + ".options[" + selectedIndex + "].value");
	return selectedValue;
}

function selectionMade(formname,selectListElementName)
{
	selectedIndex = eval("document.forms." + formname + "." + selectListElementName + ".selectedIndex");
	if (selectedIndex > 0)
	{
		//alert(selectListElementName + ": index # " + selectedIndex)
		return true;
	}
	return false;
}
