function gsom_isEmail(str){return str.match(/\b([_a-z0-9-]+(\.[_a-z0-9-]+)*)@([_a-z0-9-]+(\.[_a-z0-9-]+)*)(\.([a-z]{2,10}))\b/gi);}
function gsmoStripSymbols(str){return str.replace(/[\s]+/g,'_').replace(/[^A-Za-z0-9\_]+/g,'').substring(0,20);}
function gsomBuildForm(args)
{args=args||{};var arr=args.arr||[],place=args.place||'gsom-fields-list',makeDivs=args.makeDivs||false,itemNodeName=makeDivs?'div':'li';if(glock.isDef(arr))
{for(var i=0;i<arr.length;i++)
{MakeFormFieldListItem({ul:place,label:arr[i].label,type:arr[i].type,value:arr[i].value,name:arr[i].name,checked:arr[i].checked,itemType:itemNodeName});}
var SerializeForm=window.SerializeForm||glock.emptyFunction;SerializeForm();}
var form=glock.x(place);if(form.nodeName.toLowerCase()!='form'){form=form.up('form');}
if(form){glock.event.observe(form,'submit',function(e){var el,i,sfi,m,rbtns={},dostop=false,msgs;msgs=form.select('.gsom-bademail-msg');if(msgs){glock.xA(msgs).each(function(el){glock.x(el).hide();});}
msgs=form.select('.gsom-required-msg');if(msgs){glock.xA(msgs).each(function(el){glock.x(el).hide();});}
for(i=0;i<form.elements.length;i++){el=form.elements[i];if(!el.type)continue;switch(el.type.toLowerCase()){case'radio':if((typeof rbtns[el.name]=='undefined')||(rbtns[el.name].checked===false)){rbtns[el.name]={el:el,checked:el.checked};}
break;case'text':case'textarea':if(glock.xS(el.value).trim()==''){sfi=glock.x(el).up('div.gsom_sfi');if(sfi){m=sfi.down('.gsom-required-msg');if(m){glock.x(m).show();dostop=true;m=false;continue;}}}
if(el.name=='gsom_email_field'){if(!gsom_isEmail(glock.xS(el.value).trim())){sfi=glock.x(el).up('div.gsom_sfi');if(sfi){m=sfi.down('.gsom-bademail-msg');if(m){glock.x(m).show();dostop=true;m=false;}}}}
break;}}
for(var btn in rbtns){if(rbtns.hasOwnProperty(btn)){if(!rbtns[btn].checked){sfi=glock.x(rbtns[btn].el).up('div.gsom_sfi');if(sfi){m=sfi.down('.gsom-required-msg');if(m){m.show();m=false;dostop=true;}}}}}
if(dostop){glock.event.stop(e);return false;}});}}
function MakeFormFieldListItem(args)
{args=args||{};var ul=args.ul||'',oldItem=args.oldItem||false,type=args.type||'text',label=args.label||'',fname=args.name||'',fvalue=args.value||'',checked=args.checked||false,itemType=args.itemType||'li',list=glock.x(ul),oName='',oItm,oldItemNode,b=glock.xF(glock.builder.node).bind(glock.builder);if(oldItem){oldItemNode=glock.x(oldItem);if(oldItemNode){oItm=oldItemNode.down('span.gsom-oldname');if(oItm){oName=oItm.innerHTML;}else{oItm=oldItemNode.down('input');if(oItm){oName=oItm.name;}}}}
var lItem,tel,tdiv,inp;var d=new Date(),lrid='sfi_'+d.getTime(),labelClass='',cbRbClass='gsom-optin-radiogroup';if((type=='text')&&(itemType=='div'))
labelClass='gsom-optin-div-label'
else
labelClass='gsom-optin-label';function inpChange(e){el=this;sfi=glock.x(el).up('div.gsom_sfi');if(sfi){m=sfi.down('.gsom-required-msg');if(m){m.hide();}}}
switch(type)
{case'text':var wrapper;lItem=b(itemType,{id:lrid,className:'gsom_sfi'});wrapper=lItem;wrapper.appendChild(b('label',{className:labelClass},label));wrapper.appendChild(inp=b('input',{type:'text',name:fname,value:fvalue}));glock.event.observe(inp,'change',glock.xF(inpChange).bindAsEventListener(inp));wrapper.appendChild(b('span',{className:'gsom-required-msg',style:'display:none;'},'Verplicht'));if(fname=='gsom_email_field'){wrapper.appendChild(b('span',{className:'gsom-required-msg gsom-bademail-msg',style:'display:none;'},'Ongeldig e-mailadres'));}
break;case'checkbox':var cparams;var wrapper;if(checked)
cparams={type:'checkbox',checked:'checked',name:fname,value:'1'};else
cparams={type:'checkbox',name:fname,value:'1'};lItem=b(itemType,{id:lrid,className:'gsom_sfi'});wrapper=lItem;wrapper.appendChild(b('div',{className:cbRbClass},[inp=b('input',cparams),b('label',{className:labelClass},label)]));glock.event.observe(inp,'change',glock.xF(inpChange).bindAsEventListener(inp));wrapper.appendChild(b('span',{style:'display:none',className:'gsom-required-msg cbox'},'Required'));break;case'radio':var wrapper;lItem=b(itemType,{id:lrid,className:'gsom_sfi'});wrapper=lItem;wrapper.appendChild(b('label',{className:'gsom-optin-label radio'},label));wrapper.appendChild(b('span',{style:'display:none;',className:'gsom-required-msg radio'},'Required'));for(var i=0;i<fvalue.length;i++)
{tdiv=b('div',{className:cbRbClass});wrapper.appendChild(tdiv);tel=b('input',{type:'radio',name:fname,value:gsmoStripSymbols(fvalue[i].label)});if(fvalue[i].checked)
tel.checked=true;tdiv.appendChild(tel);glock.event.observe(tel,'change',glock.xF(inpChange).bindAsEventListener(tel));tel=b('label',{className:labelClass},fvalue[i].label);tdiv.appendChild(tel);}
break;case'button':case'submit':var btn;lItem=b(itemType,{id:lrid},[b('div',{className:cbRbClass},[btn=b('input',{type:type,name:fname,value:fvalue})])]);break;}
if(oName){wrapper.appendChild(b('span',{className:'gsom-oldname'},oName));}
if(list){if(oldItem){var oi=glock.x(oldItem);if(oi)
list.insertBefore(lItem,oi);glock.element.remove(oi);}
else
list.appendChild(lItem);return true;}
return false;}