function isNodeList(nodes) { var result = Object.prototype.toString.call(nodes); if ( typeof nodes === 'object' && /^\[object (HTMLCollection|NodeList|Object)\]$/.test(result) && nodes.length > 1 ) { console.log(result.length); return true; } return false; } function cleanLegend(field, legend) { if(field.value == legend) { field.value=''; } } function setLegend(field, legend) { if(field.value == '') { if ( parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5)) < 10 ) { // set legend as value if browser doesnt support the placeholder attribute (e.g.: IE<10) field.value = legend; } } } function regexmail(mail) { var regexist = false; var res = false; if(typeof(RegExp) == 'function') { var testregex = new RegExp('abc'); if(testregex.test('abc') == true) { regexist = true; } } if(regexist == true) { reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)(\\@)([a-zA-Z0-9\\-\\.]+)(\\.)([a-zA-Z]{2,4})$'); res = (reg.test(mail)); } else { res = (mail.search('@') >= 1 && mail.lastIndexOf('.') > mail.search('@') && mail.lastIndexOf('.') >= mail.length-5) } return(res); } // check is number $mobile function regNumber(fData) { var reg = new RegExp("^[-]?[0-9]+[\.]?[0-9]+$"); return reg.test(fData) } function validate(form, messageDiv) { var highlight = '#cc0000'; var message = ""; var status = true; if ( typeof(FieldsMandatory) !== 'object' ) { return status; } for (var field in FieldsMandatory) { is_list = isNodeList(form.elements[field]); if ( field != 'all' && typeof(form.elements[field]) != 'undefined' && form.elements[field] && (is_list || form.elements[field].style) ) { console.log('----'); console.log(field); console.log(is_list); var is_valid = true; value = null; if ( is_list == true ) { radio_checked = false; for ( var i = form.elements[field].length-1; i >= 0; i-- ) { var tagName = '' + form.elements[field][i].tagName.toLowerCase(); if ( tagName == 'input' && (form.elements[field][i].type == 'radio' || form.elements[field][i].type == 'checkbox') ) { if ( form.elements[field][i].checked ) { radio_checked = true; value = form.elements[field][i].value; break; }; } } } else { console.log(form); value = getElementText(form.elements[field]); } equalsplaceholder = false; if ( typeof(FieldsMandatory[field].placeholder) != 'undefined' && FieldsMandatory[field].placeholder != '' ) { equalsplaceholder = FieldsMandatory[field].placeholder == value; } // skip rule checks if the field is empty and not required, all rules will fail anyway if ( typeof(FieldsMandatory[field]['rules']) != 'undefined' && typeof(FieldsMandatory[field]['rules'].required) == 'string' && (value == undefined || value == '' || equalsplaceholder == true) ) { status = false; is_valid = false; rule = 'required'; } else { for ( var rule in FieldsMandatory[field]['rules'] ) { switch (rule) { case 'required': is_valid = value != '' && equalsplaceholder == false; break; case 'email': is_valid = regexmail(value); break; } if ( is_valid !== true ) { break; } } } if ( is_valid !== true ) { if ( is_list == true ) { for ( var i = form.elements[field].length-1; i >= 0; i-- ) { var id = '' + form.elements[field][i].id; if ( id.length > 0 ) { $$('label[for="' + id + '"]').each(function(elt) { elt.style.color = highlight; }); } } } else { form.elements[field].style.color = highlight; form.elements[field].style.borderColor = highlight; } error = FieldsMandatory[field]['rules'][rule]; if ( error == null ) { error = rule; } if ( message.indexOf(error) < 0 ) { message += error+'
'; } status = false; } else { if ( is_list ) { for ( var i = form.elements[field].length-1; i >= 0; i-- ) { var id = '' + form.elements[field][i].id; if ( id.length > 0 ) { $$('label[for="' + id + '"]').each(function(elt) { elt.style.color = '#333333'; }); } } } else { form.elements[field].style.color = '#333333'; form.elements[field].style.borderColor = '#999999'; } } } } document.getElementById(messageDiv).innerHTML = message; return status; } function getElementText(element) { if(element.type == 'text' || element.type == 'hidden') { return element.value; } else if(element.type == 'select-one') { return element.options[element.selectedIndex].text; } else if(element.type == 'textarea') { return document.getElementById('message').value; } } function initForm() { $$('input, textarea').each(function(elt) { var e = $(elt); if ( ($placeholder = e.readAttribute('placeholder')) !== null ) { e.observe('blur', function(){setLegend(this, $(this).readAttribute('placeholder')); }); e.observe('focus', function(){cleanLegend(this, $(this).readAttribute('placeholder')); }); setLegend(elt, e.readAttribute('placeholder')); } }); } function initLayout_handledButtons() { $$("button.handledGeneric").each(function(elt) { if(!elt.form.id) { elt.form.id=Helper.getUniqueId(); } var handle=""; var reg=/^return/; $A(elt.form.attributes).each(function(item) { if(item.nodeName=='onsubmit') { handle="if("+item.nodeValue.replace(reg,"").replace(/;$/,"")+")"; } }); var caption=$(elt).innerHTML; var jsCode="javascript:"+handle+" document.forms['"+elt.form.id+"'].submit();"; var cssClassName="generic-button"; // linkAsButton=Builder.node('a',{className:cssClassName,href:jsCode},[Builder.node('span',[Builder.node('span',[caption])]),]); linkAsButton = new Element('a',{className:cssClassName,href:jsCode}); var btnElement = new Element('span'); var btnInnerElement = new Element('span').update(caption); btnElement.update(btnInnerElement); linkAsButton.update(btnElement); $(elt).parentNode.replaceChild($(linkAsButton),$(elt)); }); }