YUI({combine: true, timeout: 10000}).use('node', 'io-form', function (Y) { // Form Checking function validateEmail(string){ var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/, // not valid reg2 = /^([0-9a-zA-Z_]([-.\w]*[0-9a-zA-Z_])*@([0-9a-zA-Z_][-\w]*[0-9a-zA-Z_]*\.)+[a-zA-Z]{2,9})$/; // valid if (!reg1.test(string) && reg2.test(string)){ return true; }else{ return false; }; }; function validatePhone(string){ var test = string.replace(/ /gi, ''), // remove spaces reg = /^0[1-9]\d{8,9}$/; // valid if (reg.test(test)){ return true; }else{ return false; }; }; function checkForm(e){ var spans = Y.all('label>span.required'), err = '', cfg = { method: 'POST', form: { id: 'frmsubscribe', useDisabled: true }, timeout: 3000, on: { success: function(x, o){ var frm = Y.one('#frmsubscribe'), btn = Y.one('#frmsubscribe fieldset'); btn.addClass('hidden'); frm.insert(o.responseText, 'after'); Y.later(5000, this , function(){ frm.reset(); Y.one('#okmessage').remove(true); btn.removeClass('hidden'); }, [], false); }, failure: function(x, o){ Y.log("Async call failed!"); } } }; spans.each(function(){ var label = this.ancestor('label'), name = label.getAttribute('for').substring(3).replace(/__/gi, ' '), val = label.next().get('value'); if(val.length === 0){ if(name === 'E'){ err += 'You must provide your Email Address\n'; }else{ err += 'You must provide your ' + name + '\n'; } }else{ if(name === 'E'){ if(!validateEmail(val)){ err += 'You must provide a VALID Email Address\n'; }; }; if(name === 'Phone Number'){ if(!validatePhone(val)){ err += 'You must provide a VALID Phone Number\n'; }; }; }; }); e.preventDefault(); if(err !== ''){ alert('The form has not been sent because some required fields were missing.\n\n' + err + '\nPlease correct these errors and submit the form.'); }else{ Y.io('/scripts/process-subscription.asp', cfg); }; }; function init(){ if(Y.one('#frmsubscribe')){ Y.on('submit', checkForm, '#frmsubscribe'); Y.one('#frmsubscribe .submit').removeClass('hidden'); }; }; Y.on("domready", init); });