var maskFields;

function getLabel(lbl) {
  var obj=document.getElementById(lbl);
  if (obj) {
    return obj.innerText;
  }
  else {
    return lbl;
  }
}

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 isValidEmailAddress(strEmailAddress) {
	var objRegExpEmailAddress = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
	return objRegExpEmailAddress.test(strEmailAddress);
}

function checkForm(name) {
  var form = document.forms[name];
  var valid = true;
  var msg = formInCompleteMsg+"\n\r";;

  for (var i=0; i<requiredFields[name].length; i++) {
    var field = form.elements[requiredFields[name][i]];
    if (field.value) {
      field.value = trim(field.value);
    }
    if (field.type == "text" || 
        field.type == "hidden" ||
        field.type == "textarea") {
      if (field.value == "") {
        msg += "- "+getLabel(requiredLabels[name][i]) + "\n\r";
        valid = false;
      }
      else if (field.name == "Mail.$to" || 
               field.name == "Mail.$cc" || 
               field.name == "Mail.$from" ||
               getLabel(requiredLabels[name][i]).toLowerCase() == "email") {
        if (!isValidEmailAddress(field.value)) {
          msg += "- "+getLabel(requiredLabels[name][i]) + "\n\r";
          valid = false;
        }
      }
    }
    else if (field.type == "select-one") {
      if (field.value == "") {
        msg += "- "+getLabel(requiredLabels[name][i]) + "\n\r";
        valid = false;
      }
    }
    else if (field.type == "select-multiple") {
      checkvalid = false;
      for (var j=0; j<field.options.length; j++) {
        if (field.options[j].selected) {
          checkvalid = true;
        }
      }
      if (!checkvalid) {
        msg += "- "+getLabel(requiredLabels[name][i]) + "\n\r";
        valid = false;
      }
    }
    else if (field.type == "checkbox" ||
             field.type == "radio") {
      if (field.name.search(/^UsrItmTab\.\d+_\d+\./) >= 0 ||
          field.name.search(/^EnqueteItmTab\.\d+_\d+\./) >= 0) {
        var Group = field.name.substring(0, 1 + field.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 && field.name == FirstInGroup) {
          msg += "- "+getLabel(requiredLabels[name][i]) + "\n\r";
          valid = false;
        }
      }
      else if (!field.checked) {
        msg += "- "+getLabel(requiredLabels[name][i]) + "\n\r";
        valid = false;
      }
    }
    else if (field.length) {
      checkvalid = false;
      for (var j=0; j<field.length; j++) {
        if (field[j].checked) {
          checkvalid = true;
        }
      }
      if (!checkvalid) {
        msg += "- "+getLabel(requiredLabels[name][i]) + "\n\r";
        valid = false;
      }
    }
  }

  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 {
    alert (msg);
    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 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 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") {
        if (obj.checked) url+=sep+obj.name+"="+obj.value;
        filledIn = true;
      }
      else if (obj.value != "") {
        url+=sep+obj.name+"="+obj.value;
        filledIn = true;
      }
    }
    w = w?h:775;
    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 XtransferName(fname,elname,fpath) {
  var file_name = document.forms[fname].elements["uFile."+elname].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_.-]","");
  document.forms[fname].elements["File."+elname+".Name"].value = file_name;
  document.forms[fname].elements["Mail."+elname+".$value"].value = fpath+file_name;
}

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 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;
}

function checkProjectZoeken(name, text) {
  var form = document.forms[name];
  var valid = true;
  var msg = formInCompleteMsg+"\n\r";;

  if (form.elements['regiozoeken'].value == "" && 
      form.elements['programmazoeken'].value == "" && 
      form.elements['themazoeken'].value == "")
  {
    alert(text);
    return false;
  }
  return true;  
}

function setName(name) {
  var form = document.getElementById(name);
  form.elements["thename"].value=form.elements["Mail.$to"].value;
}

function cardpreview(name) {
  var form = document.getElementById(name);
  //if (checkForm(form.name)) {
    var url = "get.asp?preview=true&xsl=ansicht_body";
    url += "&xdl=" + escape(form.elements["xdl"].value);
    url += "&VarIdt=" + form.elements["VarIdt"].value;
    url += "&SitIdt=" + form.elements["SitIdt"].value;
    url += "&ItmIdt=" + form.elements["ItmIdt"].value;
    url += "&base=" + escape(form.elements["base"].value);
    url += "&bericht=" + escape(form.elements["Mail.txt.$value"].value);
    url += "&subject=" + escape(form.elements["Mail.$subject"].value);
    url += "&name=" + escape(form.elements["Mail.$name"].value);
    url += "&kaart=" + escape(getRadioValue(form.elements["Mail.img.$value"]));
    //url += "&color=" + getRadioValue(form.elements["color"]);
    //url += "&bgcolor=" + getRadioValue(form.elements["bgcolor"]);
    popup = window.open(url,"_blank","height=450,width=630");
  //}
  return;
}

function submitForm(name)
{
  if (checkForm(name)) document.getElementById(name).submit();
}
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 fillMacroMailingList(formName, mode, preFix) {
  try {
    var form = document.getElementById(formName);
    var emailname = document.getElementById('emailname_'+formName);
    var emailadres = document.getElementById('emailadres_'+formName);
    var versie = document.getElementById('versie_'+formName);

    if (form.elements) {
      if (mode == "unsubscribe") {
        requiredFields[formName] = new Array(preFix + ".Eml");
        requiredLabels[formName] = new Array("Email");
      }
      else {
        requiredFields[formName] = new Array(preFix + ".Nam",preFix + ".Eml","versie_"+formName);
        requiredLabels[formName] = new Array("Naam","Email","Het type van de nieuwsbrief");
      }
                    
      for (var i=0; form.elements.length > i; i++) {
        var field = form.elements[i];
        var fieldArray = field.name.split(".");
        var itmIdt = fieldArray[fieldArray.length - 2];
        

        if (field.name.indexOf('.$action') != -1) {
          if (mode == "subscribe") {
            field.value = "make";
          }
          else {
            field.value = "replace";
          }  
        }
        
        if (field.name.indexOf('.Eml') != -1) {
          field.value = emailadres.value;
        }
        if (field.name.indexOf('.Nam') != -1) {
          field.value = emailname.value;
        }
        if (field.name.indexOf('.Fmt') != -1) {
          field.value = versie.value;
        }
        if (field.name == 'mode') {
          field.value = mode;
        }
      }
    }
  }
  catch (e) {
    /* er gaat iets mis */
    return false;
  }

  return true;
}

function unsubscribe(formName, preFix, items){
  var form = document.getElementById(formName);

  try {
    if (form.elements) {
      for (var i=0; form.elements.length > i; i++) {
        var field = form.elements[i];
        if (field.type == 'checkbox' ) {
          field.checked = false;
          
          var itmIdt = field.name.substring(field.name.indexOf('_') + 1, field.name.length);
          if (items.indexOf(',' + itmIdt + ',') != -1)
            setCheckbox(field.name, preFix + itmIdt, itmIdt);
          else
            setCheckbox(field.name, preFix + itmIdt, '');
        }
      }
    }
  }
  catch (e) {
    /* er gaat iets mis */
    return false;
  }
  
  return fillMailingLists(formName);
}

function fillMailingLists(formName) {
  var form = document.getElementById(formName);
  var emailname = document.getElementById('emailname').value;
  var emailadres = document.getElementById('emailadres').value;
  var versie = document.getElementById('versie').value;

  try {
    if (form.elements) {
      for (var i=0; form.elements.length > i; i++) {
        var field = form.elements[i];
        var fieldArray = field.name.split(".");
        if (field.name.indexOf('.$action') != -1) {
          var itmIdt = fieldArray[fieldArray.length - 2];
          var check = document.getElementById("check_" + itmIdt);

          if (check && check.checked) {
            if (field.value == "none") {
              field.value = "make";
            }
          }
        }
        
        if (field.name.indexOf('.Eml') != -1) {
          field.value = emailadres;
        }
        if (field.name.indexOf('.Nam') != -1) {
          field.value = emailname;
        }
        if (field.name.indexOf('.Fmt') != -1) {
          field.value = versie;
        }
      }
    }
  }
  catch (e) {
    /* er gaat iets mis */
    return false;
  }

  return true;
}

function setCheckbox(chkName, preFix, item) {
  var checkbox = document.getElementById(chkName);

  var actionReal = document.getElementById(preFix + '.$action');
  var actionMacro = document.getElementById('Macro.' + preFix + '.$action');

  var action = 'none';

  if (actionReal && checkbox) {
    if (checkbox.checked){
      if (item == '') { action = 'make'; }
    }
    else {
      if (item != '') { action = 'replace'; }
    }
    
    actionReal.value = action;
    if (actionMacro) {
      actionMacro.value = action;
    }
  }
  else
  {
    alert('Error');
  }
}



