
var PortalFieldSuffixes = new Array("_FORMAT", "_DAY", "_MONTH", "_YEAR", "_HOURS24", "_HOURS12", "_MINUTES", "_SECONDS", "_AMPM");
var PortalFieldPrefixes = new Array("DTPICKER_", "HTMLTEXTAREA_");

function PortalValidator()
{
   this.Errors = new Array();
   this.Warnings = new Array();
}

PortalValidator.prototype.SetFieldError = function( Field )
{
   var ThisFieldError = new FieldError(Field);

   this.Errors[this.Errors.length] = ThisFieldError;
   var FieldArea = this.GetFieldContainer(ThisFieldError);
   if (FieldArea == null)
      Field.AddClassName("Error");
   else
      FieldArea.AddClassName("Error");
}

PortalValidator.prototype.SetFieldWarning = function( Field )
{
   var ThisFieldWarning = new FieldError(Field);

   this.Warnings[this.Warnings.length] = ThisFieldWarning;
   var FieldArea = this.GetFieldContainer(ThisFieldWarning);
   if (FieldArea == null)
      Field.AddClassName("Error");
   else
      FieldArea.AddClassName("Error");
}

PortalValidator.prototype.UnsetFieldError = function( Field )
{
   var ThisFieldError = new FieldError(Field);

   if (this.HasErrorSet(ThisFieldError)) return;
   if (this.HasWarningSet(ThisFieldError)) return;

   var FieldArea = this.GetFieldContainer(ThisFieldError);
   if (FieldArea == null)
      Field.RemoveClassName("Error");
   else
      FieldArea.RemoveClassName("Error");
}

PortalValidator.prototype.GetFieldContainer = function( FieldError )
{
   var frmField = null;
   if (FieldError != null && FieldError.FieldID != null && FieldError.FieldID.length > 0)
   {
      frmField = this.GetFieldContainerByID(FieldError.FieldID);
      if (!frmField && FieldError.CoreFieldID != null && FieldError.CoreFieldID.length > 0)
         frmField = this.GetFieldContainerByID(FieldError.CoreFieldID);
   }
   return frmField;
}

PortalValidator.prototype.GetFieldContainerByID = function( FieldID )
{
   var frmField = null;
   if (FieldID != null && FieldID.length > 0)
   {
      frmField = formHelper.GetElementById("container_" + FieldID);
	  if (frmField == null) frmField = formHelper.GetElementById(FieldID + "_ROW");
   }
   return frmField;
}

PortalValidator.prototype.Reset = function(  )
{
   this.Errors = new Array();
   this.Warnings = new Array();

   var ValidationAlert = formHelper.GetElementById("VALIDATION_ALERT");
   var ErrorMessage = formHelper.GetElementById("VALIDATION_ERROR_MESSAGE");
   if (ValidationAlert != null && ErrorMessage != null)
   {
      ValidationAlert.style.display = "none";
      ErrorMessage.SetInnerText("");
   }

   var ValidationWarning = formHelper.GetElementById("VALIDATION_WARNING");
   var WarningMessage = formHelper.GetElementById("VALIDATION_WARNING_MESSAGE");
   if (ValidationWarning != null && WarningMessage != null)
   {
	 ValidationWarning.style.display = "none";
	 WarningMessage.SetInnerText("");
   }
}

PortalValidator.prototype.Finish = function(  )
{
   var ValidationAlert = formHelper.GetElementById("VALIDATION_ALERT");
   var ErrorMessage = formHelper.GetElementById("VALIDATION_ERROR_MESSAGE");
   if (ValidationAlert != null && ErrorMessage != null && (this.Errors.length > 0 || this.Warnings.length > 0))
   {
   	  ValidationAlert.style.display = "block";
   	  ErrorMessage.SetInnerText("Please ensure all fields are correctly entered.");
   }

   var ValidationWarning = formHelper.GetElementById("VALIDATION_WARNING");
   var WarningMessage = formHelper.GetElementById("VALIDATION_WARNING_MESSAGE");
   if (ValidationWarning != null && WarningMessage != null && this.Warnings.length > 0)
   {
   	  ValidationWarning.style.display = "block";
   	  WarningMessage.SetInnerText("Please ensure QD fields are set.");
   }
	this.FlagAsValidated();

}

PortalValidator.prototype.FlagAsValidated = function ( )
{
   var ValidationSubmitted = formHelper.GetElementById("VALIDATION_SUBMITTED");
   if (ValidationSubmitted != null )
   {
   		ValidationSubmitted.value = "1";
   }
}

PortalValidator.prototype.HasErrorSet = function( FieldError )
{
   for (var i = 0; i < this.Errors.length; i++)
      if (this.Errors[i].CoreFieldID == FieldError.CoreFieldID)
         return true;

   return false;
}

PortalValidator.prototype.HasWarningSet = function( FieldWarning )
{
   for (var i = 0; i < this.Warnings.length; i++)
      if (this.Warnings[i].CoreFieldID == FieldWarning.CoreFieldID)
         return true;

   return false;
}


function CheckFormValidSubmit()
{
   var portalValidator = new PortalValidator();

   portalValidator.Reset();
   if (!pageValidator.IsValidForm("IEForm", "all", portalValidator, true))
   {
      portalValidator.Finish();
      //Call 174945- Cross domain issue in sharepoint can throw javascript error
	  try
	  {
		  if (document != null && document.frames != null && document.frames.parent != null && document.frames.parent.scrollTo != null)
		  {
				document.frames.parent.scrollTo(0,0);
		  }
		  else if (window.parent.frames != null)
		  {
				window.parent.frames.scrollTo(0,0);
		  }
	  }
	  catch (ex)
	  {
	  
	  }
      return false;
   }
   portalValidator.FlagAsValidated();
   return true;
}

function CheckRegisterFormValidSubmit()
{
   if (!CheckFormValidSubmit())
   {
      var PasswordField = formHelper.GetElementById("PASSWORD");
      var PasswordConfirmField = formHelper.GetElementById("PASSWORD_2");
      PasswordField.value = "";
      PasswordConfirmField.value = "";
      return false;
   }
   return true;
   
}

function CheckCloseFormValidSubmit()
{
   this.document.all['CheckReason'].value = true;
   return CheckFormValidSubmit();
}

function CheckFormValidSubmitLater()
{
   var portalValidator = new PortalValidator();
   portalValidator.Reset();
   if (!pageValidator.IsValidForm("IEForm", "all", portalValidator, false))
   {
      portalValidator.Finish();
      return false;
   }
   portalValidator.FlagAsValidated();
   return true;
}

function CheckFormValidSubmitDelete()
{
   return true;
}

function ValidationLoad()
{
   pageValidator.AttachForm("IEForm");
   pageValidator.Forms["IEForm"].Setup();

   var ErrorMessage = formHelper.GetElementById("VALIDATION_ERROR_MESSAGE");
   var ValidationAlert = formHelper.GetElementById("VALIDATION_ALERT");

   if (ValidationAlert != null && ErrorMessage != null && ErrorMessage.GetInnerText() && ErrorMessage.GetInnerText().length > 0)
   {
      ErrorMessage.AddClassName("Error");
      ValidationAlert.style.display = "none";
   }

	var ValidationWarning = formHelper.GetElementById("VALIDATION_WARNING");
	var WarningMessage = formHelper.GetElementById("VALIDATION_WARNING_MESSAGE");
	if (ValidationWarning != null && WarningMessage != null  && WarningMessage.GetInnerText() && WarningMessage.GetInnerText().length > 0)
	{
		ValidationWarning.style.display = "none";
		WarningMessage.SetInnerText("");
	}

   var ValSubmitted = formHelper.GetElementById("VALIDATION_SUBMITTED");
   if (ValSubmitted != null && ValSubmitted.value == "1")
   {
		var portalValidator = new PortalValidator();

		portalValidator.Reset();
		if (!pageValidator.IsValidForm("IEForm", "all", portalValidator, true))
		{
			portalValidator.Finish();
		}
   }

   formHelper.GetElementById("JAVA_FLAG").value = "1";

   SetFocus();
}

function GetFieldID(Field)
{
   var FieldID = Field.id;
   if (FieldID == null || FieldID.length == 0) FieldID = Field.name;
   return FieldID;
}

function GetCoreFieldID(FieldID)
{
   var Stem = "EXTFLDV_";
   var NameSuffix = "_NAME";

   if (FieldID && FieldID.lastIndexOf("_") > -1)
   {
    for (var SuffIdx = 0; SuffIdx < PortalFieldSuffixes.length; SuffIdx++)
    {
      var CurrSuff = PortalFieldSuffixes[SuffIdx];
      if (FieldID.length > CurrSuff.length && FieldID.substring(FieldID.length - CurrSuff.length, FieldID.length) == CurrSuff)
      {
        FieldID = FieldID.substring(0, FieldID.length - CurrSuff.length);
        break;
      }
    }

    for (var PrefIdx = 0; PrefIdx < PortalFieldPrefixes.length; PrefIdx++)
    {
      var CurrPref = PortalFieldPrefixes[PrefIdx];
      if (FieldID.length > CurrPref.length && FieldID.substring(0, CurrPref.length) == CurrPref)
      {
        FieldID = FieldID.substring(CurrPref.length, FieldID.length);
        break;
      }
    }


      if (FieldID.length > Stem.length && FieldID.substring(0,Stem.length) == Stem)
      {
         if (FieldID.substring(FieldID.length - NameSuffix.length, FieldID.length) == NameSuffix)
            FieldID = FieldID.substring(0, FieldID.length - NameSuffix.length);
      }
   }
   return FieldID;
}

function FieldError(Field)
{
   this.FieldID = GetFieldID(Field);
   this.CoreFieldID = GetCoreFieldID(this.FieldID);
   return this;
}

function SetFocus()
{
   var frm = document.IEForm;
   var eFld = frm.ERROR_FIELD;
   var veFld = null;
   if (eFld != null && eFld.value != "" && (veFld = frm(eFld.value)) != null)
   {
      if (veFld.type != "hidden" || (veFld = frm(eFld.value + "_NAME")) != null)
      {
         try { veFld.focus(); }
         catch(e) {}
      }
      return;
   }
   eFld = frm.SEARCH_FIELD_CLEAR_BUTTON;
   if (eFld != null && eFld.value != "" && (veFld = frm(eFld.value)) != null && veFld.type != "hidden")
   {
      try { veFld.focus(); }
      catch(e) {}
      return;
   }
   for (var i=0; i<frm.length; i++)
   {
      if (frm[i].type != "hidden" && frm[i].disabled != true && (frm[i].style == null || frm[i].style.display != "none"))
      {
         try
         {
            frm[i].focus();
            break;
         }
         catch (ex) { }
      }
   }
}

function TF(s)
{
   if (s == null) return false;
   s = s.toString();
   if (s.toUpperCase() == "TRUE") return true;
   if (s == "1") return true;
   if (s == "-1") return true;
   if (s == "Y") return true;
   return false;
}
