var multizoekerTab = "";
function swapTab(curTabAlias) {
  var lastTabAlias = multizoekerTab.substring(multizoekerTab.indexOf("_")+1,multizoekerTab.length);
  if (curTabAlias == lastTabAlias) return true;
  else {
    setEltClassName(getElt("tabblad_"+lastTabAlias),
                    getEltClassName(getElt("tabblad_"+lastTabAlias)).indexOf("last") != -1?"tab last":"tab");
    swapImage("multizoek_img_"+lastTabAlias,sharedFolder+"images/functions/"+scheme+"/"+lastTabAlias+"_ro.gif");
    setEltDisplay(getElt("tabform_"+lastTabAlias),"none");

    multizoekerTab = "tablink_"+curTabAlias;
    setEltClassName(getElt("tabblad_"+curTabAlias),
                    getEltClassName(getElt("tabblad_"+curTabAlias)).indexOf("last") != -1?"seltab last":"seltab");
    swapImage("multizoek_img_"+curTabAlias,sharedFolder+"images/functions/"+scheme+"/"+curTabAlias+".gif");
    setEltDisplay(getElt("tabform_"+curTabAlias),"block");
    return false;
  }
}

function checkForm(obj) {
  var form = obj?obj:document.forms[0];
  var name = form.name;
  var valid = true;
  var msg = formInCompleteMsg+" <br/><ul>";

  if (requiredFields[name]) {
    for (var i=0; i<requiredFields[name].length; i++) {
      el = form.elements[requiredFields[name][i]];

      if (el.type == "select-one" ||
          el.type == "text" ||
          el.type == "hidden" ||
          el.type == "textarea") {
        if (el.value == "") {
          msg += "<li>"+getLabel(requiredLabels[name][i])+"</li>";
          slash=true;
          valid = false;
          swapVerplicht(el.name,false);
        }
        else if (el.name == "Mail.$to" ||
                 el.name == "Mail.$cc" ||
                 el.name == "Mail.$from" ||
                 getLabel(requiredLabels[name][i]).indexOf("mail",0)!=-1) {
          if (!isValidEmailAddress(el.value)) {
            msg += "<li>"+getLabel(requiredLabels[name][i]) + formInvalidEmailMsg + "</li>";
            valid = false;
            swapVerplicht(el.name,false);
          }
          else swapVerplicht(el.name,true);
        }
        else swapVerplicht(el.name,true);
      }
      else if (el.type == "select-multiple") {
        checkvalid = false;
        for (var j=0; j<el.options.length; j++) {
          if (el.options[j].selected) {
            checkvalid = true;
          }
        }
        if (!checkvalid) {
          msg += "<li>"+getLabel(requiredLabels[name][i]) + "</li>";
          valid = false;
          swapVerplicht(el.name,false);
        }
        else swapVerplicht(el.name,true);
      }
      else if (el.type == "checkbox" ||
               el.type == "radio") {
        if (el.name.search(/^UsrItmTab\.\d+_\d+\./) >= 0 ||
            el.name.search(/^FrmItmTab\.\d+_\d+\./) >= 0) {
          var Group = el.name.substring(0, 1 + el.name.indexOf("_"));
          var FirstInGroup = "";
          checkvalid = false;
          for (var j=0; j<requiredFields[name].length; j++) {
            var FieldName = requiredFields[name][j];
            if (FieldName.indexOf(Group) == 0) {
              if (form.elements[FieldName].checked) {
                checkvalid = true;
              }
              if (FirstInGroup == "") {
                FirstInGroup = FieldName;
              }
            }
          }
          if (!checkvalid && el.name == FirstInGroup) {
            msg += "<li>"+getLabel(requiredLabels[name][i]) + "</li>";
            valid = false;
            swapVerplicht(el.name,false);
          }
          else swapVerplicht(el.name,true);
        }
        else if (!el.checked) {
          msg += "<li>"+getLabel(requiredLabels[name][i]) + "</li>";
          valid = false;
        }
      }
      else if (el.length) {
        checkvalid = false;
        for (var j=0; j<el.length; j++) {
          if (el[j].checked) {
            checkvalid = true;
          }
        }
        if (!checkvalid) {
          msg += "<li>"+getLabel(requiredLabels[name][i]) + "</li>";
          valid = false;
          swapVerplicht(el[0].name,false);
        }
        else swapVerplicht(el[0].name,true);
      }
    }
  }

  var vals = form["values"];
  if (vals) {
    vals.value = "";
    for (i=0; i<form.length; i++) {
      var field = form[i];
      switch (field.type) {
        case "text":
        case "textarea":
          if (trim(field.value) != "") {
            vals.value += field.name + "|" + field.value.replace(/\|/g, "/") + "|";
          }
          break;
        case "radio":
        case "checkbox":
          if (field.checked && trim(field.value) != "") {
            vals.value += field.name + "|" + field.value.replace(/\|/g, "/") + "|";
          }
          break;
        case "select-one":
        case "select-multiple":
          for (var j=0; j<field.options.length; j++) {
            var option = field.options[j];
            if (option.selected && trim(option.value) != "") {
              vals.value += field.name + "|" + option.value.replace(/\|/g, "/") + "|";
            }
          }
          break;
      }
    }
  }

  for (var i=0; maskFields &&
                maskFields[name] &&
                maskFields[name].length>i; i++) {
    var field = form.elements[maskFields[name][i]];
    if (field.value) {
      field.value = trim(field.value);
    }
    if (field.value != "" && !CheckValidation(field.value,maskMasks[name][i])) {
      msg += "- "+getLabel(maskLabels[name][i]) + formInvalidEmailMsg + "\n\r";
      valid = false;
    }
  }
  if (valid) {
    return true;
  }
  else if (getElt("alertdiv") || parent.document.getElt("alertdiv")) {
    var closeknop = '<img src="'+viewFolder+'images/extra/closecross.gif" id="closecross" style="float:right;cursor:hand;margin:2px;" onclick="document.getElementById(\'alertdiv\').innerHTML=\'\';document.getElementById(\'alertdiv\').style.visibility=\'hidden\';showSelects();"/>'
    getElt("alertdiv").innerHTML = "<div class='contents'>"+closeknop+"<br /><p class='foutmelding'><strong class='waarschuwingsteken'>!</strong>"+msg+"</ul></p></div>";
    setEltTop(getElt("alertdiv"),200+getWinScrollTop());
    hideSelects();
    getElt("alertdiv").style.visibility = 'visible';
    return false;
  }
  else if (getElt("Msg_"+name)) {
    getElt("Msg_"+name).innerHTML = "<p class='foutmelding'>"+msg+"</ul></p>";
    return false;
  }
  else return false;
}

function hideSelects() {
  var selects = document.getElementsByTagName('select');
  for(var i=0; i<selects.length; i++) {
    selects[i].style.visibility='hidden';
  }
}

function showSelects() {
  var selects = document.getElementsByTagName('select');
  for(var i=0; i<selects.length; i++) {
    selects[i].style.visibility='visible';
  }
}

function getRadioValue(col) {
  for (var i=0; i<col.length; i++) if (col[i].checked) return col[i].value;
  return "";
}

function getSelectValue(sel) {
  if (sel.options.selectedIndex != -1) return sel.options[sel.options.selectedIndex].value;
  return "";
}

function xmlEncode(text) {
  var s = String(text);

  s = s.replace(/\&/g, "&amp;");
  s = s.replace(/</g, "&lt;");
  s = s.replace(/>/g, "&gt;");

  return s;
}

function getLabel(lbl) {
  var obj=document.getElementById(lbl);
  if (obj) {
    return obj.innerText;
  }
  else {
    return lbl;
  }
}

function swapVerplicht(name,valid) {
  var s = name;
  while (s.indexOf(".",0) != -1) {
    s = s.substring(0,s.indexOf(".",0))+"_"+s.substring(s.indexOf(".",0)+1,s.length);
  }
  while (s.indexOf("$",0) != -1) {
    s = s.substring(0,s.indexOf("$",0))+s.substring(s.indexOf("$",0)+1,s.length);
  }
  var bgImg = valid?("url('"+sharedFolder+"images/backgrounds/field_required.gif')"):("url('"+sharedFolder+"images/backgrounds/field_invalid.gif')");
  if (getElt("Lbl_"+s)) setEltBg(getElt("Lbl_"+s),bgImg);
  else alert("Lbl_"+s);
}

function isValidEmailAddress(strEmailAddress) {
  var objRegExpEmailAddress = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
  return objRegExpEmailAddress.test(strEmailAddress);
}

function trim(s) {
  while(s.substring(0,1)==" ")s=s.substring(1,s.length);
  while(s.substring(s.length-1,s.length)==" ")s=s.substring(0,s.length-1);
  return s;
}

function setOther(from, to) {
  var fromObj=document.getElementById(from);
  var toObj=document.getElementById(to);
  toObj.value=fromObj.value;
  if (toObj.tagName.toLowerCase()=="option") {
    toObj.selected=(fromObj.value!='');
  }
  else {
    toObj.checked=(fromObj.value!='');
  }
}

function resetOther(from, to) {
  var fromObj=document.getElementById(from);
  if (resetOther.arguments.length>1) {
    var toObj=document.getElementById(to);
    if (!toObj.options[toObj.options.length-1].selected) {
      fromObj.value="";
    }
  }
  else {
    fromObj.value="";
  }
}

function printMail(name,mode) {
  var form = getForm(name);
  var disabledElts = new Array();
  if (!checkForm(form)) return false;
  if (mode == "Print_and_Mail") {
    form.elements["mode"].value = "print";
    var formEltNum = form.elements.length;
    for (var formEltCnt = 0; formEltCnt<formEltNum; formEltCnt++) {
      var curElt = form.elements[formEltCnt];
      if (curElt.name.indexOf("Mail.") != -1 && curElt.name.indexOf("$action") == -1) {
        var prtEltName = "BasketAdd."+curElt.name.substring(5,curElt.name.length);
        var prtElt = form.elements[prtEltName];
        if (prtElt) {
          prtElt.value = curElt.value;
          curElt.disabled = true;
          disabledElts[disabledElts.length] = curElt;
        }
      }
    }
    form.elements["Mail.$action"].value = "none";
  }
  form.target="_blank";
  form.submit();

  var disEltNum = disabledElts.length;
  for (var disEltCnt = 0; disEltCnt<disEltNum; disEltCnt++) {
    disabledElts[disEltCnt].disabled = false;
  }

  return true;
}

function sendMail(name,mode) {
  var form = getForm(name);
  var disabledElts = new Array();
  if (!checkForm(form)) return false;
  if (mode == "Print_and_Mail") {
    form.elements["BasketAdd.$action"].value = "none";
    form.elements["Mail.$action"].value = "send";
    form.elements["mode"].value = "send";
    form.target="_self";

    var formEltNum = form.elements.length;
    for (var formEltCnt = 0; formEltCnt<formEltNum; formEltCnt++) {
      var curElt = form.elements[formEltCnt];
      if (curElt.name.indexOf("BasketAdd.") != -1 && curElt.name.indexOf("$action") == -1) {
        curElt.name = "";
      }
    }
  }
  form.submit();
  return true;
}

function submitForm() {
  var submitArray = submitForm.arguments;
  var name = submitArray[submitArray.length-2];
  var layername = submitArray[submitArray.length-1];
  var form = getForm(name,getElt(layername));
  var valid = true;

  for (var i=0; i<submitArray.length-3; i+=2) {
    if (form.elements[submitArray[i]]) form.elements[submitArray[i]].value = submitArray[i+1];
  }
  if (checkForm(form)){
    form.submit();
  }
}

function submitToPopup(name,w,h,url,repop) { // zoek, atlas, opiniepeiling
  var form = getForm(name);
  if (checkForm(form)) {
    var url = url?url:form.action;
    var filledIn = false;
    for (var i=0; i<form.elements.length; i++) {
      var obj = form.elements[i];
      var sep = (url.indexOf("?")!=-1?"&":"?");
      if (obj.type == "submit" || obj.type == "button" || url.indexOf("&"+obj.name+"=") != -1 || url.indexOf("?"+obj.name+"=") != -1) { continue; }
      else if (obj.type=="select-one" && obj.options.selectedIndex != -1) {
        url+=sep+obj.name+"="+obj.options[obj.options.selectedIndex].value;
        filledIn = true;
      }
      else if (obj.type=="radio" || obj.type=="checkbox") {
        if (obj.checked) url+=sep+obj.name+"="+obj.value;
        filledIn = true;
      }
      else if (obj.value != "") {
        url+=sep+obj.name+"="+obj.value;
        filledIn = true;
      }
    }
    var w = w?h:775;
    var h = h?h:475;
    if (repop && filledIn) popup2 = window.open(url,"popup2","height="+h+",width="+w+","+popupAttributes);
    if (filledIn) popup = window.open(url,"popup","height="+h+",width="+w+","+popupAttributes);
  }
  return false;
}

function transferName(name,file_upload_input,file_path_input,mail_input,file_action_input) {
  var form = getForm(name);
  var file_name = form.elements[file_upload_input].value;
  var file_path = form.elements[file_path_input].value;

  file_name = file_name.substring(file_name.lastIndexOf("\\")+1,file_name.length);
  file_name = file_name.substring(file_name.lastIndexOf("/")+1,file_name.length);
  file_name = regExReplaceIcase(file_name,"[^a-z0-9_.-]","");

  form.elements[mail_input].value = (file_name != '')?(file_path+"/"+file_name):"";
  form.elements[file_action_input].value = (file_name != '')?"add":"none";
  return true;
}

function fixDate(name,source,target) {
  var y = document.forms[name].elements[source+"_y"];
  var m = document.forms[name].elements[source+"_m"];
  var d = document.forms[name].elements[source+"_d"];

  var yVal = y.options[y.selectedIndex].value+"";
  var mVal = m.options[m.selectedIndex].value+"";
  var dVal = d.options[d.selectedIndex].value+"";

  var dateVal = yVal+mVal+dVal;

  document.forms[name].elements[target].value = (dateVal.length == 8)?dateVal:"";
}

function changeDate(obj) {
  var elName = obj.name;
  var dateInputName = elName.substring(0,elName.indexOf("_"));

  var y = obj.form.elements[dateInputName+"_j"];
  var m = obj.form.elements[dateInputName+"_m"];
  var d = obj.form.elements[dateInputName+"_d"];

  var yVal = y.value+"";
  var mVal = m.value+"";
  var dVal = d.value+"";

  var dateVal = dVal+"-"+mVal+"-"+yVal;

  obj.form.elements["Dtm"][1].checked = true;
  obj.form.elements[dateInputName].value = dateVal;
}