var FSPDblnAlertFlag 	= false
var FSPDblnError     	= false
var FSPDblnWarning   	= false
var FSPDblnInfo      	= false
var errObjs      		= new Array()
var arrErrContainers 	= new Array()
var intErrContainerCnt 	= 0;

function errObj() {
	this.type       	= ""
	this.message    	= ""
	this.beforeHTML 	= ""
	this.afterHTML  	= ""
	this.addErrObject 	= addErrObject
	
	function addErrObject() {
	   errObjs[this.type] = this
	}
}
function initErrors() {
	FSPDblnAlertFlag 	= false
	FSPDblnError     	= false
	FSPDblnWarning   	= false
	FSPDblnInfo      	= false
	clearFormElements()
	clearErrContainerArray()
}

function addToErrContainerArray(objContainer)
{
	arrErrContainers[intErrContainerCnt++] = objContainer
}

function removeMessage(strErrType, objContainer, objFormElement) {
	objContainer.innerHTML = "";
	setElementColor(objFormElement, "")
}

function writeErrMessage(strErrType, objContainer, objFormElement) {
	addToErrContainerArray(objContainer)

   if (objContainer.innerHTML > "")  {
     objContainer.innerHTML += "<BR>" + errObjs[strErrType].beforeHTML + "<span style='color:red;font-family:verdana;font-size:10pt'><img src='/Images/ErrWarningAnim.gif'>&nbsp;" + errObjs[strErrType].message + "</span>" + errObjs[strErrType].afterHTML
   }
   else  {
     objContainer.innerHTML += errObjs[strErrType].beforeHTML + "<span style='color:red;font-family:verdana;font-size:10pt'><img src='/Images/ErrWarningAnim.gif'>&nbsp;" + errObjs[strErrType].message + "</span>" + errObjs[strErrType].afterHTML
   }
   setElementColor(objFormElement, "red")
   setAlert(objFormElement)
   FSPDblnError = true
}
function writeWarnMessage(strWarnType, objContainer, objFormElement) {
	addToErrContainerArray(objContainer)

   if (objContainer.innerHTML > "")  {
     objContainer.innerHTML += "<BR>" + errObjs[strWarnType].beforeHTML + "<span style='color:black;font-family:verdana;font-size:10pt'><img src='/Images/Warning.gif'>&nbsp;" + errObjs[strWarnType].message + "</span>" + errObjs[strWarnType].afterHTML
   }
   else  {
     objContainer.innerHTML += errObjs[strWarnType].beforeHTML + "<span style='color:black;font-family:verdana;font-size:10pt'><img src='/Images/Warning.gif'>&nbsp;" + errObjs[strWarnType].message + "</span>" + errObjs[strWarnType].afterHTML
   }
   setElementColor(objFormElement, "yellow")
   setAlert(objFormElement)
   FSPDblnWarning = true
}
function writeInfoMessage(strInfoType, objContainer, objFormElement) {
	addToErrContainerArray(objContainer)

   if (objContainer.innerHTML > "")  {
     objContainer.innerHTML += "<BR>" + errObjs[strInfoType].beforeHTML + "<span style='color:black;font-family:verdana;font-size:10pt'><img src='/Images/Information.gif'>&nbsp;" + errObjs[strInfoType].message + "</span>" + errObjs[strInfoType].afterHTML
   }
   else  {
     objContainer.innerHTML += errObjs[strInfoType].beforeHTML + "<span style='color:black;font-family:verdana;font-size:10pt'><img src='/Images/Information.gif'>&nbsp;" + errObjs[strInfoType].message + "</span>" + errObjs[strInfoType].afterHTML
   }
   setElementColor(objFormElement, "green")
   setAlert(objFormElement)
   FSPDblnInfo = true
}
function setAlert(objFormElement) {
   if (!FSPDblnAlertFlag) {
     FSPDblnAlertFlag = true
     if (objFormElement != null)  {
       if ((objFormElement.length == null) || (objFormElement.tagName == "SELECT"))   {
         objFormElement.focus()
         if (!(objFormElement.tagName == "SELECT")) {
            objFormElement.select()
         }
       }
       else  {
         objFormElement[0].focus()
         if (!(objFormElement[0].tagName == "SELECT")) {
            objFormElement[0].select()
         }
       }
     }
   }
}


function thisIsSelectElement(objFormElement) {
  return (objFormElement.type == "select-one" || objFormElement.type == "select-multiple")
}


function setSelectTextColor(strColor) {
  if (strColor == "red" || strColor == "green") {
    return "white"
  }
  else {
    return "black"
  }
}

function setElementColor(objFormElement, strColor)
{
	var strBorderStyle = "groove"
	var strBorderWidth = "2px"

	if(strColor == "")
	{
		strBorderStyle = ""
		strBorderWidth = ""
	}

   if (objFormElement != null)
   {
     if ((objFormElement.length == null) || (objFormElement.tagName == "SELECT"))
     {
       if(objFormElement.tagName != "SELECT")
       {
         objFormElement.style.borderColor = strColor
         objFormElement.style.borderStyle = strBorderStyle
         objFormElement.style.borderWidth = strBorderWidth
       }
       else
       {
         objFormElement.style.backgroundColor = strColor
         objFormElement.style.color   = setSelectTextColor(strColor)
       }
     }
     else
     {
       for (var i=0;i<objFormElement.length;i++)
       {
         if (thisIsSelectElement(objFormElement[i]))
         {
           objFormElement[i].style.backgroundColor = strColor
           objFormElement[i].style.color = setSelectTextColor(strColor)
         }
         else
         {
           objFormElement[i].style.borderColor = strColor
           objFormElement[i].style.borderStyle = strBorderStyle
           objFormElement[i].style.borderWidth = strBorderWidth
         }
       }
     }
   }
}

function clearErrContainerArray()
{
	for (var i=0;i<intErrContainerCnt;i++)
	{
		arrErrContainers[i].innerHTML = ""
	}
	//reset array
	arrErrContainers.length = 0;
	intErrContainerCnt = 0;
}

function setTagElements()  {
//Spin thru input, textarea, and select elements
    setElements("INPUT")
    setElements("SELECT")
    setElements("TEXTAREA")
}

function setElements(strTagType)  {
//Spin thru documents strTagType and pass the element and color to setElementColor() based on the error level
    //var inputs = document.all.tags(strTagType)
	var inputs = document.getElementsByTagName(strTagType)
    var numinputs = inputs.length

    for (var i=0;i<numinputs;i++)  {
     var input = inputs[i]
     if (input.FSPD_ElementErr != null || input.FSPD_ElementWarn != null || input.FSPD_ElementInfo != null)  {
        if (input.FSPD_ElementErr != null)
        setElementColor(input, "red")
      else if (input.FSPD_ElementWarn != null)
        setElementColor(input, "yellow")
      else if (input.FSPD_ElementInfo != null)
        setElementColor(input, "green")
      }
    }
}

function clearFormElements()  {
   //var inputs = document.all.tags("INPUT")
   var inputs = document.getElementsByTagName("INPUT")
   var numInputs = inputs.length
   for (var i=0;i<numInputs;i++)  {
    var input = inputs[i]
    if (input.type == "text" || input.type == "radio" || input.type == "checkbox")  {
      input.style.borderColor = ""
      input.style.borderStyle = ""
      input.style.borderWidth = ""
    }
  }

  //var inputs = document.all.tags("SELECT")
  var inputs = document.getElementsByTagName("SELECT")
  var numInputs = inputs.length
  for (var i=0;i<numInputs;i++)  {
    var input = inputs[i]
    input.style.color = ""
    input.style.backgroundColor = ""
    }

  // var textareas = document.all.tags("TEXTAREA")
   var textareas = document.getElementsByTagName("TEXTAREA")
   
   var numTextareas = textareas.length
   for (var i=0;i<numTextareas;i++)  {
  var textarea = textareas[i]
     textarea.style.borderColor = ""
     textarea.style.borderStyle = ""
     textarea.style.borderWidth = ""
  }
}

function endErrors() {
   if (FSPDblnAlertFlag) {
     if (FSPDblnError)
         alert("A data entry error has occurred.  Please review the page for messages.")
       else if (FSPDblnWarning)
           alert("A data entry error may have occurred.  Please review the page for messages.")
       else if (FSPDblnInfo)
           alert("Please review the page for messages.")
   }
}