var losWin = null;
var smallWin = null;
var bestelWin = null;
var blnSubmitted = false;

function checkUniqueness(strFormName, strNameOfFields, objSrc)
{
  var intNumOfIDs = 0;
  var strSrcValue = "";
  var strCompValue = "";
  var blnUnique = true;
  var i = 0;

  intNumOfIDs = parseInt(document.forms[strFormName].elements["numOfIDs"].value);


//alert("objSrc: " + objSrc.name);
//alert("objSrc: " + objSrc);
//alert("objSrc.value: " + (objSrc.value));
  strSrcValue = (objSrc.value);


  i = 0
  while (i<intNumOfIDs)
  {
    //alert(strFormName);
    //alert(strNameOfFields + i);

    strCompValue = document.forms[strFormName].elements[strNameOfFields + i].value;
    if ( (strSrcValue.toLowerCase()) == (strCompValue.toLowerCase()) )
    {
      if (objSrc.name != (strNameOfFields + i)) blnUnique = false;  //source is not unique
    }
    i++;
  }
  if (!blnUnique)
  {
    alert("'" + strSrcValue + "', already exists! Enter new value.");
    objSrc.value = "";
  }

  if (blnUnique)
  {
    if (checkEmpty(strSrcValue, objSrc)) { alert("Empty: " + false); return false; }
  }

//alert("blnUnique: " + blnUnique);
  return blnUnique;
}

function checkEmpty(strSrcValue, objSrc)
{
  var blnEmpty = false;
  blnEmpty = (strSrcValue == "");
  if (blnEmpty) { objSrc.value="Enter value"; alert("Empty values not allowed. Enter new value."); objSrc.focus(); }
}

function checkAllForEmpty(strFormName, strNameOfFields)
{
  var intNumOfIDs = 0;
  var strCompValue = "";
  var i = 0;
  var objTextField;
  var blnFieldsNotEmpty = true;

  intNumOfIDs = parseInt(document.forms[strFormName].elements["numOfIDs"].value);
  i = 0
  while ( (i<intNumOfIDs) && (blnFieldsNotEmpty) )
  {
    objTextField = document.forms[strFormName].elements[strNameOfFields + i];
    strCompValue = objTextField.value;
    if ( strCompValue == "" )
    {
      objTextField.value="Enter value";
      alert("Empty values not allowed. Enter new value.");
      objTextField.focus();
      blnFieldsNotEmpty = false;
    }
    i++;
  }
  return blnFieldsNotEmpty;
}


function ValidateSubmitCheckAndDblClick(objForm, intCheckDblClick)
{
   if (intCheckDblClick == 0) blnSubmitted = false;
   if ( (ValidateForm(objForm)==true) && (!blnSubmitted) )
   {
     objForm.submit();
     blnSubmitted = true;
     return true;
   }
   else
   {

   }
}


function ValidateAndSubmit(objForm)
{
  return ValidateSubmitCheckAndDblClick(objForm, 1);
}

function ValidateForm(objForm)
{
   var intIndex, strName
   for(intIndex=0;intIndex<=objForm.elements.length-1;intIndex++)
      if(ValidateElement(objForm.elements[intIndex])==false) return(false)
   for(intIndex=0;intIndex<=objForm.elements.length-1;intIndex++)
   {
      if(objForm.elements[intIndex].name.indexOf("name=")!=-1)
      {
         strName=Parse(objForm.elements[intIndex].name,"name")
         if(strName!="") objForm.elements[intIndex].name=strName
      }
   }
   return(true)
}

function ValidateElement(objElement)
{
   var strName, strValue, strName2, strDatatype, fltMin, fltMax, intMin, intMax, strRequired
   if(objElement.name.indexOf("name=")!=-1)
   {
      strName=objElement.name
      strValue=objElement.value
      strName2=Parse(strName,"name")
      strDatatype=Parse(strName,"datatype")
      strRequired=Parse(strName,"required")
      if(strRequired=="yes" && strValue=="")
      {
         alert("Verplicht veld niet ingevuld...")
         objElement.focus()
         return(false)
      }
      if(strValue!="") switch(strDatatype)
      {
         case "date_uk":
            if(ValidateDateUK(strValue)==false)
            {
               alert("Incorrect dateformat. Enter a valid date in the format  \"MM/DD/YYYY\".")
               objElement.focus()
               return(false)
            }
            break
         case "email":
            if(ValidateEmail(strValue)==false)
            {
               alert("Incorrect e-mail address. Enter a valid e-mail address in the format \"name@domein.contry\".")
               objElement.focus()
               return(false)
            }
            break
         case "TrefWoorden":
            if(ValidateTrefWoorden(strValue)==false)
            {
               alert("Trefwoord komt niet voor in de trefwoorden tabel.")
               objElement.focus()
               return(false)
            }
            break

         case "float":
            fltMin=parseFloat(Parse(strName,"min"))
            fltMax=parseFloat(Parse(strName,"max"))
            if(isNaN(fltMin)||isNaN(fltMax))
            {
               alert("error: float min/max value not coded.")
               return(false)
            }
            if(ValidateFloat(strValue,fltMin,fltMax)==false)
            {
               alert("Incorrect value. Enter a numeric value between "+fltMin+".."+fltMax+".")
               objElement.focus()
               return(false)
            }
            break
         case "integer":
            intMin=StringToInt(Parse(strName,"min"))
            intMax=StringToInt(Parse(strName,"max"))
            if(isNaN(intMin)||isNaN(intMax))
            {
               alert("error: integer min/max value not coded.")
               return(false)
            }
            if(ValidateInteger(strValue,intMin,intMax)==false)
            {
               alert("Incorrect value. Enter a correct integer value between "+intMin+".."+intMax+".")
               objElement.focus()
               return(false)
            }
            break
         default: break
      }
   }
   return(true)
}

function Parse(strLine, strParameter)
{
   var intIndex, strParameterValue=""
   if(strParameter!="" && (intIndex=strLine.indexOf(strParameter+"="))!=-1)
   {
      intIndex+=strParameter.length+1
      while(intIndex<strLine.length && strLine.charAt(intIndex)!=" ")
         strParameterValue+=strLine.charAt(intIndex++)
   }
   return(strParameterValue)
}

function StringToInt(strString)
{
   var arrMatch=new RegExp("^([-]?)0*([0-9]+)$").exec(strString)
   if(arrMatch) return(parseInt(arrMatch[1]+arrMatch[2])); else return(NaN)
}

function ValidateDateUK(strValue)
{
   var arrMatch=new RegExp("^([0-9]{1,2})[/-]([0-9]{1,2})[/-]([0-9]{2}|[0-9]{4})$").exec(strValue)
   var intDay, intMonth, intYear
   if(!arrMatch) return(false)
   intDay=StringToInt(arrMatch[2])
   intMonth=StringToInt(arrMatch[1])
   intYear=StringToInt(arrMatch[3])
   if(arrMatch[3].length==2) if(intYear<20) intYear+=2000; else intYear+=1900
   if(isNaN(intDay) || intDay<1 || intDay>31) return(false)
   if(isNaN(intMonth) || intMonth<1 || intMonth>12) return(false)
   if(intDay>29 && intMonth==2) return(false)
   if(intDay==31 && (intMonth==4 || intMonth==6 || intMonth==9 || intMonth==11)) return(false)
   if(isNaN(intYear) || intYear<1000 || intYear>9999) return(false)
   if(intDay==29 && intMonth==2 && (intYear%4!=0 || (intYear%100==0 && intYear%400!=0))) return(false)
   return(true)
}

function ValidateEmail(strValue)
{
   var arrMatch=new RegExp("^[A-Za-z0-9_-]+([.][A-Za-z0-9_-]+){0,4}[@][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+){1,3}$").exec(strValue)
   if(!arrMatch) return(false); else return(true)
}


function ValidateTrefWoorden(strValue)


{
      return (true)
}




function ValidateFloat(strValue, fltMin, fltMax)
{
   var arrMatch=new RegExp("^([-]?[0-9]+([.][0-9]+)?)$").exec(strValue)
   if(!arrMatch || parseFloat(arrMatch[1])<fltMin || parseFloat(arrMatch[1])>fltMax) return(false)
   else return(true)
}

function ValidateInteger(strValue, intMin, intMax)
{
   var arrMatch=new RegExp("^([-]?[0-9]+)$").exec(strValue)
   if(!arrMatch || StringToInt(arrMatch[1])<intMin || StringToInt(arrMatch[1])>intMax) return(false)
   else return(true)
}

function reCalcIdleTime(strWeek, frmObj, objIdleField)
{
  var intHoursThisWeek = 0;
  var intHoursThisAct = 0;
  var strHrsAvail = "";
  var intHrsAvail = 0;
  var numOfFormElements = 0;
  var i = 0;
  var strElementName = "";
  var strElementValue = "";
  var strSearchString = ""

  numOfFormElements = frmObj.elements.length;
  strSearchString = "intWeekNumber=" + strWeek;

  while (i < numOfFormElements)
  {
    strElementName = frmObj.elements[i].name;
    strElementValue = frmObj.elements[i].value;
    if (strElementName.indexOf(strSearchString) != -1)
    {

      //OK, een element dat gaat over deze week
      intHoursThisAct = 0;
      if (!(isNaN(strElementValue))) intHoursThisAct = parseInt(strElementValue);
      if (isNaN(intHoursThisAct)) intHoursThisAct = 0;
      intHoursThisWeek = intHoursThisWeek + intHoursThisAct;
    }
    i++;
  }
  strHrsAvail = frmObj.elements["hrsAvail"].value;
  if (!(isNaN(strHrsAvail))) intHrsAvail = parseInt(strHrsAvail);
  frmObj.elements["idleTimeWeek"+strWeek].value = "" + (intHrsAvail - intHoursThisWeek);
}

function ValidateCheckUniqueAndSubmit(objSubmitForm, strSourceFieldName, objCheckForm, strTargetFieldNames)
{
   var formOK = false;
   var strSourceVal = "";
   var strCheckVal = "";
   var numOfIDs = 0;
   var i = 0;

   formOK = ValidateForm(objSubmitForm);
   if (formOK)
   {
     strSourceVal = objSubmitForm.elements[strSourceFieldName].value;
     numOfIDs = objCheckForm.elements["numOfIDs"].value;
     i = 0;
     while ((i<numOfIDs) && (formOK))
     {
       strCheckVal = objCheckForm.elements[(strTargetFieldNames + i)].value;
       if (strCheckVal.toLowerCase() == strSourceVal.toLowerCase())
       {
         formOK = false;
         alert("'" + strSourceVal + "', already exists! Enter another value.");
       }
       i++;
     }
   }
  if (formOK) objSubmitForm.submit();
}


function openHelpWin(intHelpID)
{
  var strURL = "";
  if (losWin != null) losWin.close();

  strURL = "./help.asp?id=" + intHelpID;
  losWin = window.open(strURL, "helpWin", "toolbar=no,location=no,directories=no,resizable=yes,status=no,menubar=no,width=450,height=160");
  //"toolbar=no,location=no,directories=no,status=no,menubar=no,width=450,height=150"
}


function openSmallWin(strURL)
{
  if (smallWin != null) smallWin.close();
  smallWin = window.open(strURL, "smallWin", "toolbar=no,location=no,directories=no,resizable=yes,status=no,menubar=no,width=450,height=180");
}


function bestel(intPublID)
{
  var strURL = "";
  if (bestelWin != null) bestelWin.close();

  strURL = "bestel.asp?ID=" + intPublID + "&command=bestel";
  bestelWin = window.open(strURL, "bestelWin", "toolbar=no,location=no,directories=no,resizable=yes,status=no,menubar=no,scrollbars=yes,width=600,height=190");
  //top.document.globalBestelWinHandle = bestelWin;
}

