function isDefined(ckVar)
{
  var DEFINED_V=true;
   
  function handleError()
  {
    DEFINED_V=false;
    return true;
  }
   
  var oldOnError = window.onerror;
  window.onerror = handleError;
  
  try
  { 
    eval(ckVar);
  } 
  catch (e) 
  {
    DEFINED_V=false;
  }
  
  window.onerror=oldOnError;
  
  return DEFINED_V;
}


function controleerWachtwoordInDatabase(obj, pv_id, pda_id)
{
  var windowUrl = '/general/validatieFuncties.asp?page=controleerWachtwoordInDatabase&wachtwoord=' + obj.value + '&pvid=' + pv_id + '&pdaid=' + pda_id;
  var windowPos = "dialogWidth=375px; dialogHeight:130px; center:yes";

  validatieFunctiesRes = window.showModalDialog(windowUrl, null, windowPos);
  if (validatieFunctiesRes != 0)
  {
    return (false);
  }

  return(true);
}


function controleerGelijkZijnWachtwoorden(obj1, obj2, naam)
{
  if (!(isDefined('languageKeyword'))) languageKeyword = 'NL'
  
  melding = "De ingevoerde wachtwoorden in " + naam + " zijn niet gelijk";
  if (languageKeyword == 'UK')
  {
    melding = "The entered passwords do not correspond";
  }
  else if (languageKeyword == 'DE')
  {
    melding = "The entered passwords do not correspond";
  }

  if (obj1.value != obj2.value)
  {
    alert(melding);
    obj1.select();
    obj1.focus();
    return(false);
  }
  return(true);
}


function validateEmailFlicks(obj, methode, naam)
{
  if (!(isDefined('languageKeyword'))) languageKeyword = 'NL'

  melding = "E-mail adres in " + naam + " voldoet niet aan validatie regels";
  if (languageKeyword == 'UK')
  {
    melding = "E-mail address is not valid";
  }
  else if (languageKeyword == 'DE')
  {
    melding = "E-mail address is not valid";
  }

  if (obj.value.length > 0)
  {
    var windowUrl = '/general/validatieFuncties.asp?page=validateEmailFlicks&email=' + obj.value + '&methode=' + methode;
    var windowPos = "dialogWidth=375px; dialogHeight:130px; center:yes";
    
    validatieFunctiesRes = window.showModalDialog(windowUrl, null, windowPos);
    if (validatieFunctiesRes != 0)
    {
      alert(melding);
      obj.select();
      obj.focus();
      return (false);
    }
  }
  return(true);
}


function checkStringContentMetMelding(obj, allowedChars, naam)
{
  if (!(isDefined('languageKeyword'))) languageKeyword = 'NL'

  melding = "In " + naam + " komen karakters voor die niet zijn toegestaan (toegestaan: " + allowedChars + ")";
  if (languageKeyword == 'UK')
  {
    melding = "Characters exist which are not allowed (allowed: " + allowedChars + ")";
  }
  else if (languageKeyword == 'DE')
  {
    melding = "Characters exist which are not allowed (allowed: " + allowedChars + ")";
  }

  for (var i = 0; i < obj.value.length; i++)
  {
    var c = obj.value.charAt(i)

    if (allowedChars.indexOf(c) == -1)
    {
      alert(melding);
      obj.select();
      obj.focus();
      return (false);
    }
  }
  
  return (true);
}


function controleerNumberRangeMetMelding(obj, minVal, maxVal, naam)
{
  if (!(isDefined('languageKeyword'))) languageKeyword = 'NL'

  melding1 = "De minimale waarde van het veld " + naam + " is " + minVal;
  melding2 = "De maximale waarde van het veld " + naam + " is " + maxVal;
  if (languageKeyword == 'UK')
  {
    melding1 = "This record has to have a minimum value of " + minVal + ")";
    melding2 = "This record has to have a maximum value of " + maxVal + ")";
  }
  else if (languageKeyword == 'DE')
  {
    melding1 = "This record has to have a minimum value of " + minVal + ")";
    melding2 = "This record has to have a maximum value of " + maxVal + ")";
  }

  if (eval(minVal) > eval(obj.value))
  {
    alert(melding1);
    obj.focus();
    return(false);
  }
    
  if (eval(obj.value) > eval(maxVal))
  {
    alert(melding2);
    obj.focus();
    return(false);
  }
  
  return(true);
}


function controleerFileExtensionMetMelding(obj, extArrayStr)
{
  if (!(isDefined('languageKeyword'))) languageKeyword = 'NL'

  melding = "Bestandstype niet toegestaan";
  if (languageKeyword == 'UK')
  {
    melding = "File type is not valid";
  }
  else if (languageKeyword == 'DE')
  {
    melding = "File type is not valid";
  }

  extArray = new Array(extArrayStr);
  allowSubmit = false;
  file = obj.value;

  while (file.indexOf("\\") != -1)
    file = file.slice(file.indexOf("\\") + 1);

  ext = file;

  while (ext.indexOf(".") != -1)
    ext = ext.slice(ext.indexOf(".") + 1);
  
  ext = "." + ext.toLowerCase();
  
  for (var i = 0; i < extArray.length; i++)
  {
    if (extArray[i] == ext)
      allowSubmit = true;
  }

  if (!allowSubmit)
  {
    alert(melding);
    obj.focus();
    return (false);
  }

  return (true);
}


function controleerVeldIngevuldNoFocus(obj, naam)
{
  if (!controleerVeldIngevuldByValue(obj.value, naam)) return(false);
  return (true);
}


function controleerVeldIngevuld(obj, naam)
{
  if (!controleerVeldIngevuldByValue(obj.value, naam))
  {
    obj.focus();
    return(false);
  }
  return (true);
}


function controleerVeldIngevuldByValue(objValue, naam)
{
  if (!(isDefined('languageKeyword'))) languageKeyword = 'NL'
  
  melding = "Het veld " + naam + " is een verplicht veld";
  
  if (languageKeyword == 'UK')
  {
    melding = "This record is compulsory";
  }
  else if (languageKeyword == 'DE')
  {
    melding = "This record is compulsory";
  }
  
  if (objValue == "")
  {
    alert(melding);
    return (false);
  }
  
  return(true);
}

function controleerLengteStringNoFocus(obj, minNumChars, maxNumChars, numChars, naam)
{
  if (!controleerLengteStringByValue(obj.value, minNumChars, maxNumChars, numChars, naam)) return(false);
  return (true);
}

function controleerLengteString(obj, minNumChars, maxNumChars, numChars, naam)
{
  if (!controleerLengteStringByValue(obj.value, minNumChars, maxNumChars, numChars, naam))
  {
    obj.focus();
    return(false);
  }
  return (true);
}

function controleerLengteStringByValue(objValue, minNumChars, maxNumChars, numChars, naam)
{
  if (!(isDefined('languageKeyword'))) languageKeyword = 'NL'

  melding1 = "Het veld " + naam + " moet uit " + numChars + " karakters bestaan";
  melding2 = "Het veld " + naam + " bevat te weinig karakters (minimaal: " + minNumChars + ")";
  melding3 = "Het veld " + naam + " bevat te veel karakters (maximaal: " + maxNumChars + ")";

  if (languageKeyword == 'UK')
  {
    melding1 = "This record has to consist of " + numChars + " characters";
    melding2 = "This record requires a minimum number of characters of " + minNumChars;
    melding3 = "This record requires a maximum number of characters of " + maxNumChars;
  }
  else if (languageKeyword == 'DE')
  {
    melding1 = "This record has to consist of " + numChars + " characters";
    melding2 = "This record requires a minimum number of characters of " + minNumChars;
    melding3 = "This record requires a maximum number of characters of " + maxNumChars;
  }
  
  if (numChars != objValue.length && 0 < numChars)
  {
    alert(melding1);
    return(false);
  }
  
  if (minNumChars > objValue.length && 0 <= minNumChars)
  {
    alert(melding2);
    return(false);
  }
  
  if (maxNumChars < objValue.length && 0 <= maxNumChars)
  {
    alert(melding3);
    return(false);
  }

  return (true);
}

function controleerIntegerSyntaxMetMelding(obj, naam)
{
  if (!(isDefined('languageKeyword'))) languageKeyword = 'NL'

  melding = "In het veld " + naam + " mogen alleen hele getallen ingevuld worden";
  if (languageKeyword == 'UK')
  {
    melding = "Only round numbers are allowed";
  }
  else if (languageKeyword == 'DE')
  {
    melding = "Only round numbers are allowed";
  }

  for (var i=0;i<obj.value.length;i++)
  {
    var digit=obj.value.charAt(i)
    if (!(digit >= "0" && digit <= "9"))
    {
      alert(melding);
      obj.focus();
      return (false);
    }
  }
  return(true);
}


function controleerFloatSyntaxMetMelding(obj, naam)
{

  if (!(isDefined('languageKeyword'))) languageKeyword = 'NL'
  sepFound = 0;
  
  melding = "In het veld " + naam + " mogen alleen decimale getallen ingevuld worden";
  if (languageKeyword == 'UK')
  {
    melding = "Only decimals are allowed";
  }
  else if (languageKeyword == 'DE')
  {
    melding = "Only decimals are allowed";
  }

  for (var i=0;i<obj.value.length;i++)
  {
    var digit=obj.value.charAt(i)
    if (!(digit >= "0" && digit <= "9") && ((!(digit == ",")) || (digit == "," && sepFound == 1)) && ((!(digit == ".")) || (digit == "." && sepFound == 1)))
    {
      alert(melding);
      obj.focus();
      return (false);
    }
    
    if (digit == "," || digit == ".")
    {
      sepFound = 1;
    }
  }
  return(true);
}


function controleerInteger(getal)
{
  for (var i=0;i<getal.length;i++)
  {
    var digit=getal.charAt(i)
    if (!(digit >= "0" && digit <= "9"))
    {
      return (false);
    }
  }
  return(true);
}

function controleerFloat(getal)
{
  for (var i=0;i<getal.length;i++)
  {
    var digit=getal.charAt(i)
    if (!(digit >= "0" && digit <= "9") && !(digit == ".") && !(digit == ","))
    {
      return (false);
    }
  }
  return(true);
}

function controleerDate(obj, naam)
{

  for (var i=0;i<obj.value.length;i++)
  {
    var digit = obj.value.charAt(i)
    if (!(digit >= "0" && digit <= "9"))
    {
      alert("In het veld " + naam + " mogen alleen cijfers voorkomen (JJJJMMDD)");
      obj.focus();
      return(false);
    }
  }

  jaar = eval(obj.value.substring(0,4));
  maand = eval(obj.value.substring(4,6));
  dag = eval(obj.value.substring(6,8));

  if (jaar < 1900 || jaar > 2100)
  {
    alert("In het veld " + naam + " is het jaar ongeldig ingevuld (JJJJMMDD)");
    obj.focus();
    return(false);
  }

  if (maand < 1 || maand > 12)
  {
    alert("In het veld " + naam + " is de maand ongeldig ingevuld (JJJJMMDD)");
    obj.focus();
    return(false);
  }

  if (dag < 1)
  {
    alert("In het veld " + naam + " is de dag ongeldig ingevuld (JJJJMMDD)");
    obj.focus();
    return(false);
  }

  if (maand == 1 || maand == 3 || maand == 5 || maand == 7 || maand == 8 || maand == 10 || maand == 12)
  {
    if (dag > 31)
    {
      alert("In het veld " + naam + " klopt de combinatie van dag en maand niet (JJJJMMDD)");
      obj.focus();
      return(false);
    }
  }

  if (maand == 4 || maand == 6 || maand == 9 || maand == 11)
  {
    if (dag > 30)
    {
      alert("In het veld " + naam + " klopt de combinatie van dag en maand niet (JJJJMMDD)");
      obj.focus();
      return(false);
    }
  }

  if (maand == 2)
  {
    if ((jaar/4) == Math.round(jaar/4))
    {
      if (dag > 29)
      {
        alert("In het veld " + naam + " klopt de combinatie van dag, maand en jaar niet (JJJJMMDD)");
        obj.focus();
        return(false);
      }
    }
    else
    {
      if (dag > 28)
      {
        alert("In het veld " + naam + " klopt de combinatie van dag, maand en jaar niet (JJJJMMDD)");
        obj.focus();
        return(false);
      }
    }
  }

  return(true);
}
