
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');}
var $ = jQuery;
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();
        $(el).parent().removeClass("newsletter-error");
      });
    }
    msgs=form.select('.gsom-required-msg');
    if(msgs){
      glock.xA(msgs).each(function(el){
        glock.x(el).hide();
        $(el).parent().removeClass("newsletter-error");
      });
    }
    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()==''||glock.xS(el.value).trim()==$(el).parent().children("label").html()){
            sfi=glock.x(el).up('div.gsom_sfi');
            if(sfi){
              $(sfi).addClass("newsletter-error");
              $(el).css({ backgroundColor: "#f8f1c6" }).animate({ backgroundColor: "#ffffff" }, 'slow');
              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())||glock.xS(el.value).trim()==$(el).parent().children("label").html()){
              sfi=glock.x(el).up('div.gsom_sfi');
              if(sfi){
                $(sfi).addClass("newsletter-error");
                $(el).css({ backgroundColor: "#f8f1c6" }).animate({ backgroundColor: "#ffffff" }, 'slow');
                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) {
        jQuery(window).trigger("newsletter:subscribe");
      }
      // 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();jQuery(m).parent().removeClass("newsletter-error");}}}
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;'},'Required'));if(fname=='gsom_email_field'){wrapper.appendChild(b('span',{className:'gsom-required-msg gsom-bademail-msg',style:'display:none;'},'Bad Email Addres'));}
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;}

