<!--

function validateMaxTextAreaLength(source, arguments)
{
   if(arguments.Value.length<=source.attributes("MaxLength").value)
      arguments.IsValid=true;
   else
      arguments.IsValid=false;
}
   
function isWhitespace(s) 
{
	var re = /^\s+$/;					// Test for whitespace
	if (re.test(s)|(s == ""))	   // If value is whitespace or empty
	{															
      return true;
	}
	else
	{
	   return false;
	}
}

/****************************************************************/

// -- Page IsDirty Validation --
// Allows determination of modified form values.

var dirtyValidationModuleList = new Array();
var explicitDirtyValidationModuleList = new Array();
var doNotCauseDirtyValidationId;
var dirtyValidationMessage = "You have unsaved changes.";
var dirtyModuleList = "";

function showProcessing()
{
   if(window.document.readyState != 'complete')
   {
      document.getElementById('ProcessingMessage').style.marginTop = (window.document.body.offsetHeight/2 - 67) + window.document.body.scrollTop;
      document.getElementById('ProcessingLayer').style.height = window.document.body.scrollHeight;
      document.getElementById('ProcessingLayer').style.display = 'block';
   }
}

function showCallBackProcessing()
{
   var pm, pl;
   pm = document.getElementById('ProcessingMessage');
   pl = document.getElementById('ProcessingLayer');
   if(pl != null)
   {
      pm.style.marginTop = (window.document.body.offsetHeight/2 - 67) + window.document.body.scrollTop;
      pl.style.height = window.document.body.scrollHeight;
      pl.style.display = 'block';
   }
}


function hideProcessing()
{
   document.getElementById('ProcessingLayer').style.display = 'none';
}
     
function confirmDirtyNavigation()
{
   window.status = window.document.body.scrollTop;
   window.setTimeout('showProcessing()', 2000);
   if (doNotCauseDirtyValidationId == null) 
   {
      doNotCauseDirtyValidationId = document.activeElement.getAttribute("doNotCauseDirtyValidationId")
   }
   if(pageIsDirty())
   {
      return dirtyValidationMessage;
   }
}

function cancelDirtyValidation(moduleId)
{
   doNotCauseDirtyValidationId = moduleId;                               
}

function registerDirtyValidationModule(moduleId)
{
   dirtyValidationModuleList[dirtyValidationModuleList.length] = moduleId;
}
function registerExplicitDirtyValidationModule(moduleId)
{
   explicitDirtyValidationModuleList[explicitDirtyValidationModuleList.length] = moduleId;
}
function registerDirtyModule(moduleId)
{
   var idToken = (moduleId + ",")
   if(dirtyModuleList.indexOf(idToken) == -1)
   {
      dirtyModuleList = (dirtyModuleList + idToken);
   }
}
function unregisterDirtyModule(moduleId)
{
   var idToken = (moduleId + ",")
   dirtyModuleList = dirtyModuleList.replace(idToken, "");
}
function moduleIsExplicitDirty(moduleId)
{
  var idToken = (moduleId + ",")
  return (dirtyModuleList.indexOf(idToken) != -1)
}
         
function pageIsDirty()
{
   if (doNotCauseDirtyValidationId == 0) {return false;}

   //If not validating one module then another one must be dirty so change the message
   if(doNotCauseDirtyValidationId != null)
   {
      dirtyValidationMessage = "You have other unsaved changes on the page."
   }
   
   //Ckeck for modules registered for explicit dirty validation
   if(explicitDirtyValidationModuleList.length > 0)
   {
      var itemIndex
      var moduleId
      for(itemIndex in explicitDirtyValidationModuleList)
      {
         moduleId = explicitDirtyValidationModuleList[itemIndex]
         if(moduleId != doNotCauseDirtyValidationId)
         {
            if(moduleIsExplicitDirty(moduleId))
            {
               return true;
            }
         }
      }
   }  

   //Check for modules registered for implicit dirty validation
   if(dirtyValidationModuleList.length > 0)
   {
      var itemIndex
      var moduleId
      for(itemIndex in dirtyValidationModuleList)
      {
         moduleId = dirtyValidationModuleList[itemIndex]
         if(moduleId != doNotCauseDirtyValidationId)
         {
            if(moduleIsExplicitDirty(moduleId))
            {
               return true;
            }
            else if(objectIsDirty(moduleId))
            {
               return true;
            }
         }
      }
      return false;
   }
   else
   {
      return false;
   }  
 }

function ignoreDirty(sourceObject,stopObjectId) {
	while (sourceObject.id != stopObjectId) {
		if (sourceObject.getAttribute("IgnoreIsDirtyValidation") != null) {return true;}
		sourceObject = sourceObject.parentElement;
	}
	return false;
}

function objectIsDirty(objectId)
{
   var oParent = document.getElementById(objectId);
   var ctl;
   var isDirtyAttribute;
   //Check INPUTS
   var ctls;
   ctls = oParent.getElementsByTagName("INPUT")
   for (i = 0; i < ctls.length; i++)
   {
      ctl = ctls[i];
      if (!ignoreDirty(ctl, objectId)) 
      {
         isDirtyAttribute = ctl.getAttribute("isDirty");
         if(isDirtyAttribute != null)
         {
            if(isDirtyAttribute == "true"){return true;}
         }
         else
         {
            if ((ctl.type == "checkbox") || (ctl.type == "radio")){
               if(ctl.checked != ctl.defaultChecked){return true;}
            }
            else if (ctl.type == "text" && ctl.value != ctl.defaultValue){
               return true;
            }
         }
      }
   }
   //Check SELECT elements
   ctls = oParent.getElementsByTagName("SELECT")
   for (i = 0; i < ctls.length; i++)
   {
      ctl = ctls[i];
      if (!ignoreDirty(ctl, objectId)) 
      {
         isDirtyAttribute = ctl.getAttribute("isDirty");
         if(isDirtyAttribute != null)
         {
            if(isDirtyAttribute == "true"){return true;}
         }
         else
         {
            for (j = 0; j < ctl.options.length; j++){
               if (ctl.options[j].defaultSelected){
                  if (ctl.options[j].value != ctl.value){
                     return true;
                  }
               }
            }
         }
      }
   }
   //Check TEXTAREA elements
   ctls = oParent.getElementsByTagName("TEXTAREA")
   for (i = 0; i < ctls.length; i++)
   {
      ctl = ctls[i];
      if (!ignoreDirty(ctl, objectId)) 
      {
         isDirtyAttribute = ctl.getAttribute("isDirty");
         if(isDirtyAttribute != null)
         {
            if(isDirtyAttribute == "true"){return true;}
         }
         else
         {
            if (ctl.value != ctl.defaultValue){
               return true;
            }
         }
      }
   }
   return false;
}

/****************************************************************/