//________________________________________________________________________________________________formManager
var formManager={
  process:function(unique_id) {
    var errMsg=''
    var fieldsReport=''
    var doSubmit=true

    for (var fld in document.forms["mailform"+unique_id]) if (fld.substr(0,2)=="F5") {
      fieldsReport+=';'+fld+'='+document.forms["mailform"+unique_id][fld].label
      errMsg=formManager.fieldcheck(document.forms["mailform"+unique_id][fld].checklist,document.forms["mailform"+unique_id][fld].value)
      if (errMsg!='') {
        doSubmit=false
        redefine(fld.replace('F','E'),'<table cellpadding=2 cellspacing=1 width=80% style="background-color:black"><tr><td style="color:white;background-color:tomato">Probleem: '+errMsg+'</table>')
      } else redefine(fld.replace('F','E'),'<span style="line-height:0px">.</span>')
    }
    if (doSubmit) {
      document.forms["mailform"+unique_id].fieldlabels.value=fieldsReport.substr(1)
      document.forms["mailform"+unique_id].submit()
    }
  },
  fieldcheck:function(checkStr,value) {
    var checklist=new Array()
    if (checkStr==undefined) return ''
    checklist=checkStr.split(';')
    for (var c=0;c<checklist.length;c++) { 
      switch (checklist[c].substr(0,4)) {
        case 'mand': // mandatory
          if (value=='') return 'Geen waarde opgegeven'
          break
        case 'nume': // numeric
          if (isNaN(value)) return 'Waarde is niet numeriek'
          break
        case 'grea': // greater:value
          if (parseInt(value)<checklist[c].split(':')[1]) return 'Minimale waarde: '+checklist[c].split(':')[1]
          break
        case 'less': // less:value
          if (parseInt(value)>checklist[c].split(':')[1]) return 'Maximale waarde: '+checklist[c].split(':')[1]
          break
        case 'nosp': // nospace - no blanks allowed within value
          if (value!='') if (value.split(' ').length>1) return 'Spaties zijn niet toegestaan'
          break
        case 'emai': // email address
		  if (value!='') {
            var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
            if (!filter.test(value)) return 'Email adres ongeldig'
		  }
          break
        case 'date': // date field
          return 'Datum controle - module in aanbouw'
          break
      }
    }
    return ''
  },
  colorPicker:function(formfield,newValue,formname) {
    var html='<table cellspacing=1 cellpadding=1><tr>'
    var htmlBlock
    var value
    var boxsize=parseInt(Factor()*14)
    formname=(formname)?formname:'editor'
    if (newValue) {
      value=newValue
      eval('document.forms.'+formname+'.'+formfield+'.value=value')
    }
    else eval('value=document.forms.'+formname+'.'+formfield+'.value')
    if (!value) value='A1'
    for (var color in colorpalette) {
      htmlBlock='<td style="background-color:'+colorpalette[color]+';border:1px solid black;cursor:pointer" onclick=javascript:formManager.colorPicker("'+formfield+'","'+color+'","'+formname+'")><img src=img/blank.gif width='+boxsize+' height='+boxsize+'>'
      if (color==value) htmlBlock=htmlBlock.replace('solid','dashed')
      html+=htmlBlock
    }
    redefine(formname+'-'+formfield,html+'</table>')
  },
  sizeclassPicker:function(formfield,newValue,formname) {
    var html='<table cellspacing=1 cellpadding=1><tr>'
    var htmlBlock
    var value
    var lineheight=parseInt(Factor()*14)
    formname=(formname)?formname:'editor'
    if (newValue) {
      value=newValue
      eval('document.forms.'+formname+'.'+formfield+'.value=value')
    }
    else eval('value=document.forms.'+formname+'.'+formfield+'.value')
    if (!value) value='M'
    for (var sizeclass in sizepalette) {
      htmlBlock='<td class='+sizepalette[sizeclass]+' style="border:1px solid black;cursor:pointer;line-height:'+lineheight+'px" onclick=javascript:formManager.sizeclassPicker("'+formfield+'","'+sizepalette[sizeclass]+'","'+formname+'")>Ab'
      if (sizepalette[sizeclass]==value) htmlBlock=htmlBlock.replace('solid','dashed')
      html+=htmlBlock
    }
    redefine(formname+'-'+formfield,html+'</table>')
  },
  domainToHtml:function(id,name,value,styleStr) {
    var html=(styleStr)?'<select name="'+name+'" '+styleStr+'>':'<select name="'+name+'">'
    var base
    var option=''
    var optGroups=false
	var active
    eval('base='+evalrefs[id])  
    if (!base) alert("Sjabloon identificatie onbekend: "+id)
    for (var opt in base.N) {
	  active=true
	  if (base.N[opt].A['ACTIVE']) active=(base.N[opt].A['ACTIVE']=="Y")
	  if (active) {
        if (base.N[opt].T=="OPTION") { 
          option=""
          if ((value=='') && (base.N[opt].A['SELECTED'])) option=" SELECTED"
          if ((value!='') && (base.N[opt].A['VALUE']==value)) option=" SELECTED"
          html+='<option value='+base.N[opt].A['VALUE']+option+'>'+base.N[opt].V; 
        } else { 
          if (optGroups) html+='</optgroup>'
          html+='<optgroup label="'+base.N[opt].V+'">'
          optGroups=true 
        }
	  }
    }
    if (optGroups) html+='</optgroup>'
    return html+'</select>';
  },  
  mulDomainToHtml:function(id,name,value,styleStr) { 
    var html=(styleStr)?'<select name="'+name+'" '+styleStr+' multiple="multiple" size="##">':'<select name="'+name+'" multiple="multiple" size="##">'
    var base
    var option=''
    var size=0
    var valQueue=':'+value.replace(/;/g,':')+':'
    eval('base='+evalrefs[id])  
    if (!base) alert("Template reference invalid: "+id)
    for (var opt in base.N) { 
      option=""
      if ((value!='') && (valQueue.search(':'+base.N[opt].A['VALUE']+':')!=-1)) option=" SELECTED"
      html+='<option value='+base.N[opt].A['VALUE']+option+'>'+base.N[opt].V
      size++
    } 
    return html.replace('##',size)+'</select>';
  },
  flexcombo:function(fieldkey) { 
    var optionlist=new Array()
    optionlist=global.elementFieldValue.split("~P") 
    if (authorisation('Aanpassen')) return '<input name='+fieldkey+' label="'+global.elementFieldValue2+'" READONLY value="'+optionlist[0]+'" style="background-color:lightyellow" />'
    var htmlSel='<select name="'+fieldkey+'" label="'+global.elementFieldValue2+'">'
    for (var i=0;i<optionlist.length;i++) htmlSel+='<option value="'+optionlist[i].replace(/ /g,'_')+'">'+optionlist[i]+'</option>'
    return htmlSel+'</select>' 
  }
}
