//--------------------------------------------------------------------------------------------------------------
//NOTES: This file includes all form validation functions used in the administration screens...
//--------------------------------------------------------------------------------------------------------------
/*
function doValidate(iValType,iLang,arrLang,arrMlElements,strForm,strElement,strErrorMsg);
{
	if(eval('document.' + strForm + .'_SYS_LANGUAGE_EDIT_' + iLang + '.value') = 'Y')
	{
		switch(iValType)
		{
			case 1 : //Return Non Blank Validation
				FDK_AddNonBlankValidation(strForm,strElement,true,strErrorMsg);
			case 2 : //Return E-Mail Validation
				FDK_AddEmailValidation(strForm,strElement,true,true,strErrorMsg);
			case 3: //Return Date Validation
				FDK_AddDateValidation(strForm,strElement,true,'\'\'','\'\'','\'4\'',true,strErrorMsg);		
			case 4: //Return Number Validation
				FDK_AddIntegerValidation(strForm,strElement,true,'\'\'','\'\'',true,strErrorMsg);			
			case 5: //Return Drop Down Validation
				FDK_AddSelectionMadeValidation(strForm,strElement,true,strErrorMsg);
			case 6: // Validate provided title against duplicates in VALIDATE fragment in XML
				FDK_AddDuplicateCheck(strForm, strElement,true,strErrorMsg);
		}
	}	
}
*/
function submitmsg(){
	document.getElementById("submitmsg").style.display = "block";
	document.getElementById("submitbtn").disabled=true;
}

function FDK_Validate(FormName, stopOnFailure, AutoSubmit, ErrorHeader)
{
 var theFormName = FormName;
 var theElementName = "";
 if (theFormName.indexOf(".")>=0)  
 {
   theElementName = theFormName.substring(theFormName.indexOf(".")+1)
   theFormName = theFormName.substring(0,theFormName.indexOf("."))
 }
 var ValidationCheck = eval("document."+theFormName+".ValidateForm")
 if (ValidationCheck)  
 {
  var theNameArray = eval(theFormName+"NameArray")
  var theValidationArray = eval(theFormName+"ValidationArray")
  var theFocusArray = eval(theFormName+"FocusArray")
  var theTabArray = eval(theFormName+"TabArray")
  var ErrorMsg = "";
  var FocusSet = false;
  var i
  var msg
    
  // Go through the Validate Array that may or may not exist
  // and call the Validate function for all elements that have one.
  if (String(theNameArray)!="undefined")
  {
	for (i = 0; i < theNameArray.length; i ++)
	{
		msg="";
		if (theNameArray[i].name == theElementName || theElementName == "")
		{
			msg = eval(theValidationArray[i]);
		}
					
		if (msg != "")
		{
			ErrorMsg += "\n"+msg;                   
		
			if (stopOnFailure == "1") 
			{
				if (theFocusArray[i] && !FocusSet)  
				{
					// if tab exists for this element, switch focus to relevant tab	
					if(theTabArray.length != 0){
	
					toggleTAB(theTabArray[i].substring(theTabArray[i].length - 3, theTabArray[i].length));
					}	
					FocusSet=true;
					theNameArray[i].focus();
				}
				alert(ErrorHeader+ErrorMsg);
				document.MM_returnValue = false; 
				break;
				}
				else  
				{
					if (theFocusArray[i] && !FocusSet)  
					{
					FocusSet=true;
					theNameArray[i].focus();
					}
				}
			}
	}
  }
  if (ErrorMsg!="" && stopOnFailure != "1") 
  {
  	alert(ErrorHeader+ErrorMsg);
  }
  	document.MM_returnValue = (ErrorMsg==""); 
  if (document.MM_returnValue && AutoSubmit)  
  {	
	eval("document."+FormName+".submit()");
  }
  if(document.MM_returnValue)
  {
	submitmsg()	
  }
 }
}

function FDK_AddDuplicateCheck(FormName,FormElementName,SetFocus,ErrorMsg){
	var ValString = "FDK_DuplicateCheck("+FormElementName+","+ErrorMsg+")"
  	FDK_AddToValidateArray(FormName,eval(FormElementName),ValString,SetFocus)
}

function FDK_DuplicateCheck(FormElement,ErrorMsg){
	var msg = ErrorMsg;
	var val = FormElement.value;
	//alert('do the check');
	for (i=0;i<titles.length;i++)
	{
		//alert(val + ' = ' + titles[i]);
		if (val == titles[i]){
			return msg;
		}
	}
	msg = "";
	return msg;
}

function FDK_StripChars(theFilter,theString)
{
	var strOut,i,curChar

	strOut = ""
	for (i=0;i < theString.length; i++)
	{		
		curChar = theString.charAt(i)
		if (theFilter.indexOf(curChar) < 0)	// if it's not in the filter, send it thru
			strOut += curChar		
	}	
	return strOut
}

function FDK_AddToValidateArray(FormName,FormElement,Validation,SetFocus,Tab)
{
    var TheRoot=eval("document."+FormName);

    if (!TheRoot.ValidateForm) 
    {
        TheRoot.ValidateForm = true;
        eval(FormName+"NameArray = new Array()")
        eval(FormName+"ValidationArray = new Array()")
        eval(FormName+"FocusArray = new Array()")
		eval(FormName+"TabArray = new Array()")
    }
    var ArrayIndex = eval(FormName+"NameArray.length");
    eval(FormName+"NameArray[ArrayIndex] = FormElement");
    eval(FormName+"ValidationArray[ArrayIndex] = Validation");
    eval(FormName+"FocusArray[ArrayIndex] = SetFocus");
	if(Tab){
	eval(FormName+"TabArray[ArrayIndex] = Tab");
	}
}

function FDK_ValidateNonBlank(FormElement,ErrorMsg,Tab)
{
  var msg = ErrorMsg;
  var val = FormElement.value;  

  if (!(FDK_StripChars(" \n\t\r",val).length == 0))
  {
     msg="";
  }
  return msg;
}

function FDK_AddNonBlankValidation(FormName,FormElementName,SetFocus,ErrorMsg, Tab)  {
  var ValString = "FDK_ValidateNonBlank("+FormElementName+","+ErrorMsg+",'"+Tab+"')"
  FDK_AddToValidateArray(FormName,eval(FormElementName),ValString,SetFocus,Tab)
}

function FDK_AllInRange(x,y,theString)
{
	var i, curChar
	
	for (i=0; i < theString.length; i++)
	{
		curChar = theString.charAt(i)
		if (curChar < x || curChar > y) //the char is not in range
			return false
	}
	return true
}

function FDK_reformat(s)
{
    var arg;
    var sPos = 0;
    var resultString = "";

    for (var i = 1; i < FDK_reformat.arguments.length; i++) {
       arg = FDK_reformat.arguments[i];
       if (i % 2 == 1) 
           resultString += arg;
       else 
       {
           resultString += s.substring(sPos, sPos + arg);
           sPos += arg;
       }
    }
    return resultString;
}

function FDK_ValidateEmail(FormElement,Required,ErrorMsg, Tab)
{
   var msg = "";
   var val = FormElement.value;
   var msgInvalid = ErrorMsg;

   var theLen = FDK_StripChars(" ",val).length
   if (theLen == 0)	     {
     if (!Required) return "";
     else return msgInvalid;
   }

   if (val.indexOf("@",0) < 0 || val.indexOf(".")<0) 
   {
      msg = msgInvalid;
   }
   return msg;
}

function FDK_AddEmailValidation(FormName,FormElementName,Required,SetFocus,ErrorMsg, Tab)  {
  var ValString = "FDK_ValidateEmail("+FormElementName+","+Required+","+ErrorMsg+",'"+Tab+"')"
  FDK_AddToValidateArray(FormName,eval(FormElementName),ValString,SetFocus, Tab)
}

function FDK_ValidateDate(FormElement,Required,MinDate,MaxDate,Format,ErrorMsg,Tab)
{
	var msg = "";
	var theString = FormElement.value;
	var dateVar = new Date(theString);
	var peavd = ErrorMsg;
	var d = dateVar;

	var fullYear = d.getYear();
	if (fullYear <= 10) fullYear += 2000;
	if (fullYear <= 200) fullYear += 1900;
    d.setYear(fullYear)
    dateVar.setYear(fullYear)


	var theLen = FDK_StripChars(" ",theString).length
	if (theLen == 0)
	{
		if (!Required) return "";
		else return peavd;
	}

	if (isNaN(dateVar.valueOf()) || (dateVar.valueOf() == 0))
		return peavd;

	// Check for correct range.
	if (MinDate != "")
	{
		var Today = new Date(MinDate);
		if (dateVar <= Today)
		  return peavd;
	}
	if (MaxDate != "")
	{
		var Today = new Date(MaxDate);
		if (dateVar >= Today)
		return peavd;
	}

	// We have a valid date. Reformat it and write it back to the control
	var style = Format;

	if (style == "2") {
	  var date_string = (d.getMonth()+1) + "/" + d.getDate() + "/" + fullYear;
	  }
	  else if (style == "3") {
	  var date_string = (d.getMonth()+1) + "-" + d.getDate() + "-" + fullYear;
	  }
	  else if (style == "4") {
	  var date_string = d.getDate() + "/" + (d.getMonth()+1) + "/" + fullYear;
	  }
	  else if (style == "5") {
	  var date_string = getMonthName(d) + " " + d.getDate() + ", " + fullYear;
	  }
	  else if (style == "6") {
	  var date_string = getDayName(d) + " " + getMonthName(d) + " " + d.getDate() + ", " + fullYear;
	  }
	  else if (style == "7") {
	  var date_string = d.toLocaleString();
	  }
	  else if (style == "1") {
	  var date_string = theString;
	  }
	  else {
	  var date_string = d.toGMTString();
  }

	FormElement.value=date_string;

	return msg;
}

function FDK_AddDateValidation(FormName,FormElementName,Required,StartDate,EndDate,Format,SetFocus,ErrorMsg,Tab)  {
  var ValString = "FDK_ValidateDate("+FormElementName+","+Required+","+StartDate+","+EndDate+","+Format+","+ErrorMsg+",'"+Tab+"')"
  FDK_AddToValidateArray(FormName,eval(FormElementName),ValString,SetFocus,Tab)
}

function ValidateInteger(FormElement,Required,Minimum,Maximum,ErrorMsg,Tab)
{
	var theString = FormElement.value;
	theString = FDK_StripChars(" ",theString);
	var min = Minimum;
	var max = Maximum;
	var pean = ErrorMsg;

	if (theString.length == 0)	
	{
		if (!Required) return ""		
		else return pean;
	}

	// remove leading zeros (zeros are only leading if there is more than one char)
	while (theString.length > 1 && theString.substring(0,1) == "0")
	{
		theString = theString.substring(1, theString.length);
	}

	var val = parseInt(theString);
	if (isNaN(val)) return pean;
	
	// check for non-digits (and minus sign). Do this by converting number
	// back to a string and comparing it to original string.
	if (val.toString() != theString) return pean;
	
	if (min < max)
	{
		if ((val < min) || (val > max))
		{
			return ErrorMsg;
		}
	}
	   
	// reset the entered string after removal of spaces and leading zeros.
	FormElement.value=theString;
	return "";
}

function FDK_AddIntegerValidation(FormName,FormElementName,Required,Minimum,Maximum,SetFocus,ErrorMsg,Tab)  {
  var ValString = "ValidateInteger("+FormElementName+","+Required+","+Minimum+","+Maximum+","+ErrorMsg+",'"+Tab+"')"
  FDK_AddToValidateArray(FormName,eval(FormElementName),ValString,SetFocus,Tab)
}

function FDK_ValidateSelectionMade(FormElement,ErrorMsg,Tab)
{
  msg = "";

  var iPos = FormElement.selectedIndex;
  if ((iPos<=0 && FormElement.size<=1) || (iPos<0) || (FormElement.value == 0 && FormElement.name == '_2762'))
  {
    msg = ErrorMsg;
  }

  return msg;
}

function FDK_AddSelectionMadeValidation(FormName,FormElementName,SetFocus,ErrorMsg,Tab)  {
  var ValString = "FDK_ValidateSelectionMade("+FormElementName+","+ErrorMsg+",'"+Tab+"')"
  FDK_AddToValidateArray(FormName,eval(FormElementName),ValString,SetFocus,Tab)
}