/**
 * (c) InfoProjects bv. - www.infoprojects.nl
 *
 * $Revision: 1.7 $
 * $Date: 2008/03/05 08:50:20 $
 * $Author: ad $
 */

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,viewFolder+"images/functions/"+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,viewFolder+"images/functions/"+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 htmlMsg = formInCompleteMsg+" <br/><ul>";
  var boxMsg = formInCompleteMsg+"\n\r";

  for (var f=0; f<form.elements.length; f++) {
    el = form.elements[f];
    if (el.type == "text") {
      el.value = trim(el.value);
    }
  }

  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 == "") {
          htmlMsg += "<li>"+getLabel(requiredLabels[name][i])+"</li>";
          boxMsg += "- "+getLabel(requiredLabels[name][i])+"\n\r";
          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)) {
            htmlMsg += "<li>" + getLabel(requiredLabels[name][i]) + formInvalidEmailMsg + "</li>";
            boxMsg += "- " + getLabel(requiredLabels[name][i]) + formInvalidEmailMsg+"\n\r";
            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) {
          htmlMsg += "<li>"+getLabel(requiredLabels[name][i]) + "</li>";
          boxMsg += "- " + getLabel(requiredLabels[name][i]) + "\n\r";
          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(/^EnqueteItmTab\.\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) {
            htmlMsg += "<li>"+getLabel(requiredLabels[name][i]) + "</li>";
            boxMsg += "- " + getLabel(requiredLabels[name][i]) + "\n\r";
            valid = false;
            swapVerplicht(el.name,false);
          }
          else swapVerplicht(el.name,true);
        }
        else if (!el.checked) {
          htmlMsg += "<li>"+getLabel(requiredLabels[name][i]) + "</li>";
          boxMsg += "- " + getLabel(requiredLabels[name][i]) + "\n\r";
          valid = false;
        }
      }
      else if (el.length) {
        checkvalid = false;
        for (var j=0; j<el.length; j++) {
          if (el[j].checked) {
            checkvalid = true;
          }
        }
        if (!checkvalid) {
          htmlMsg += "<li>"+getLabel(requiredLabels[name][i]) + "</li>";
          boxMsg += "- " + getLabel(requiredLabels[name][i]) + "\n\r";
          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])) {
      htmlMsg += "<li>"+getLabel(maskLabels[name][i]) + formInvalidEmailMsg + "</li>";
      boxMsg += "- "+getLabel(maskLabels[name][i]) + formInvalidEmailMsg + "\n\r";
      valid = false;
    }
  }

  if (valid) {
    return true;
  }
  else if (getElt("Msg_"+name)) {
    getElt("Msg_"+name).innerHTML = "<p>"+htmlMsg+"</ul></p>";
    return false;
  }
  else {
    alert(boxMsg);
    return false;
  }
}

function displayMsg(msgDiv,htmlVal,textVal) {
  if (getElt(msgDiv)) {
    getElt(msgDiv).innerHTML = "<p>"+htmlVal+"</p>";
    setEltDisplay(getElt(msgDiv),"block");
    return false;
  }
  else {
    alert(textVal);
    return false;
  }
}

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) {
        if ((curElt.type != "radio" && curElt.type != "checkbox") || (curElt.type == "radio" && curElt.checked) || (curElt.type == "checkbox" && curElt.checked)) {
          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 && curElt.name.indexOf("BasketAdd.") != -1 && curElt.name.indexOf("$action") == -1) {
        curElt.name = "";
        curElt.disabled = true;
      }
    }
  }
  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?w: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_.-]","");

  if (file_name!="") {
    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 fixTime(name,source,target) {
  var h = document.forms[name].elements[source+"_h"];
  var m = document.forms[name].elements[source+"_m"];

  var hVal = h.options[h.selectedIndex].value+"";
  var mVal = m.options[m.selectedIndex].value+"";

  var timeVal = hVal+mVal;

  document.forms[name].elements[target].value = (timeVal.length == 4)?timeVal:"";
}

function changeDate(obj,sep,fmt) {
  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 f = fmt?fmt:"jmd";
  var s = sep?sep:"";

  var dateVal = (f == "jmd")?(yVal+s+mVal+s+dVal):(dVal+s+mVal+s+yVal);

  obj.form.elements["Dtm"][1].checked = true;
  obj.form.elements[dateInputName].value = dateVal;
}

function fixFormDateFields(formname,nam, namField) {
  var selJ=document.forms[formname].elements[nam+'Y'];
  var selM=document.forms[formname].elements[nam+'M'];
  var selD=document.forms[formname].elements[nam+'D'];
  var valJ=selJ.options[selJ.options.selectedIndex].value;
  var valM=selM.options[selM.options.selectedIndex].value;
  var valD=selD.options[selD.options.selectedIndex].value;
  var val='';
  if (valJ!=''&&valM!=''&&valD!='') {
    var vDate=new Date();
    var ivalJ=parseInt(valJ);
    var ivalM=parseInt(valM);
    var ivalD=parseInt(valD);
    var maxLoopCount = 0;
    vDate.setMonth(ivalM-1); //extra ivm fout in setMonth?
    do {
      vDate.setFullYear(ivalJ);
      vDate.setMonth(ivalM-1);
      vDate.setDate(ivalD);
      if (ivalD > 0) ivalD--;
      maxLoopCount++;
      //status = (vDate.getFullYear()!=ivalJ) + "::" + (vDate.getMonth()!=ivalM-1) + "::" + (vDate.getDate()!=ivalD+1);
    } while ((vDate.getFullYear()!=ivalJ ||
             vDate.getMonth()!=ivalM-1 ||
             vDate.getDate()!=ivalD+1) &&
             maxLoopCount < 31);
    selD.value=++ivalD;
    valD=""+ivalD;
    val='0000'.substr(valJ.length)+valJ+'00'.substr(valM.length)+valM+'00'.substr(valD.length)+valD;
  }
  document.forms[formname].elements[namField].value=val;
}

function fixFormTimeFields(formname, nam, namField) {
  var selH=document.forms[formname].elements[nam+'H'];
  var selM=document.forms[formname].elements[nam+'M'];
  var valH=selH.options[selH.options.selectedIndex].value;
  var valM=selM.options[selM.options.selectedIndex].value;
  var val='';
  if (valH!=''&&valM!='') {
    val='00'.substr(valH.length)+valH+'00'.substr(valM.length)+valM;
  }
  document.forms[formname].elements[namField].value=val;
}