//constraint methods function objConstraintRef(){ var me=this; var constraints = new Array(); me.add = function(name, func){ constraints[name] = func; }; me.get = function(name){ return(constraints[name]); }; } function objArg(value, type, isInputValue){ this.toString = function(inputValue){ var val = (isInputValue) ? inputValue : value ; return (type == "String" ) ? "'" + val + "'": val ; } } function objConstraint(name){ var me=this; me.name = name; var args = new Array(); me.add = function(value, type, isInputValue){ indx = args.length; args[indx] = new objArg(value, type, isInputValue); return(args[indx]); } me.test = function(inputValue){ inputValue = inputValue.replace("'", "\\'"); var strArgs = ""; for (var i=0; i 0) ? strArgs.substring(0, strArgs.length-2) : ""; return(eval("constraintRef.get('" + me.name + "')(" + strArgs + ");")); } } function objInput(field_name, element_name, err_msg){ var me=this; me.name = element_name; me.field_name = field_name; me.err_msg = err_msg; var constraints = new Array(); me.clear = function(){ constraints = new Array(); } me.add = function(name){ var indx = constraints.length; constraints[indx] = new objConstraint(name); return(constraints[indx]); } me.getElementByName = function(){ var elems = document.getElementsByName(me.name); for (var i=0; i 0 ? false : true); } //don't pass the value for unchecked checkboxes or radio buttons val = (elem.type=='checkbox' || elem.type=='radio' ? (elem.checked ? elem.value : "" ) : elem.value); var isOk=true; for (var i=0; i 0 ? true : false); } ); constraintRef.add("CheckBox Checked Limit", function(input, fieldNames,limit){ function isSet(val){ val += ""; return (val=="undefined"||val=="null") ? 0 : 1; } var names = fieldNames.split(","); var numChecked = 0; alert( "number checked is:" + numChecked); for (var i=0; i < names.length; i++){ var element = form.getElement(names[i]); if (isSet(element) && element.checked){ numChecked++; } } alert( "number checked is:" + numChecked); return (numChecked > limit ? true : false); } ); constraintRef.add("Does Not Equal", function (input, value){ return(input != value ? true : false); }); constraintRef.add("Equals", function (input, value){ return(input == value ? true : false); }); constraintRef.add("Greater Than", function (input, value){ return(input > value ? true : false); }); constraintRef.add("Is Alpha Numeric", function (str){ var re = new RegExp("([A-Z|a-z|0-9| ]*)", ""); re.exec(str); return( RegExp.$1.length == str.length ? true : false); }); constraintRef.add("Is DOB", function (input, min, max){ // min = (min == null ? "" : min); // max = (max == null ? "" : max); function fixYear(year){ if (document.all&&document.getElementById){ return year < 1900 ? year + 1900 : year; }else{ return year < 1900 ? year + 1900 : year; } } function splitDateStr(dateStr, delimiter){ var dateParts = null; if (dateStr.indexOf(delimiter) > 0){ dateParts = dateStr.split(delimiter); } return dateParts; } function getDatePartsFromString(dateStr){ var dateParts; var i = 0; var delimiters = new Array(); delimiters[delimiters.length] = "/"; delimiters[delimiters.length] = "\\"; delimiters[delimiters.length] = "-"; delimiters[delimiters.length] = " "; delimiters[delimiters.length] = "."; delimiters[delimiters.length] = "_"; delimiters[delimiters.length] = "!"; while ( (dateParts=splitDateStr(dateStr, delimiters[i++])) == null && i < delimiters.length){} return dateParts; } var test = false; if (input == ""){ return true; } var dateParts = getDatePartsFromString(input); if (dateParts != null && dateParts.length == 3 && dateParts[2] != "") { dateParts[0] = dateParts[0]*1; dateParts[1] = dateParts[1]*1-1; dateParts[2] = fixYear(dateParts[2]*1); var date = new Date(); date.setDate( dateParts[0] ); date.setMonth( dateParts[1] ); date.setYear( dateParts[2] ); date.setHours(0); date.setMinutes(0); date.setSeconds(0); date.setMilliseconds(0); if (date.getDate() == dateParts[0] && date.getMonth() == dateParts[1] && fixYear(date.getYear()) == dateParts[2]){ test = true; var maxLimit = new Date(); if (max != null){ maxLimit.setYear( fixYear(fixYear(maxLimit.getYear()) - max)); if ( (date.getTime() - maxLimit.getTime()) <= 0){ test = false; } } var minLimit = new Date(); if (min !=null){ minLimit.setYear( fixYear(fixYear(minLimit.getYear()) - min)); if ( (minLimit.getTime() - date.getTime()) <= 0){ test = false; } } } } return test; }); constraintRef.add("Is Email", function (str){ var re = new RegExp("^([A-Za-z0-9\\.\\-\\_]*@[A-Za-z0-9\\.\\-\\_]*)", ""); re.exec(str); return( RegExp.$1 == str ? true : false); } ); constraintRef.add("Is Numeric", function (str){ var re = new RegExp("([0-9| ]*)", ""); re.exec(str); return( RegExp.$1.length == str.length ? true : false); }); constraintRef.add("Is SCOTS Master ID", function (input) { return true; }); constraintRef.add("Less Than", function (input, value){ return(input < value ? true : false); }); constraintRef.add("Max Size", function (input, value){ return(input.length <= value ? true : false); }); constraintRef.add("Not Empty", function (input) { input+=""; return(input == "" ? false : true); }); constraintRef.add("Radio Button Test", function(input, fieldName) { function isSet(val) { val += ""; return (val=="undefined"||val=="null") ? 0 : 1; } var radioButton = document.getElementsByName(fieldName); var numChecked = 0; for (var i=0; i < radioButton.length; i++) { var element = radioButton[i]; if (isSet(element) && element.checked) { numChecked++; } } return (numChecked > 0 ? true : false); }); constraintRef.add("Radio Double Test", function(input, name, testValue, fieldName){ if (input == testValue){ var field = form.getElement(fieldName); return (field.value == "" ? false : true); } return true; }); var form = new objForm(); var input = form.add('family_guide','DYNFRM-column1', 'null'); var input = form.add('blank_space','DYNFRM-column31', 'null'); var input = form.add('title','DYNFRM-column3', 'Please select your title.'); var constraint = input.add('Does Not Equal'); constraint.add(null, 'String', true); constraint.add('-1', 'String', false); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); var input = form.add('firstname','DYNFRM-column4', 'Please enter a first name.'); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); var input = form.add('lastname','DYNFRM-column5', 'Please enter a surname.'); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); var input = form.add('address1','DYNFRM-column6', 'Please enter the first line of your address.'); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); var input = form.add('address2','DYNFRM-column7', 'null'); var input = form.add('address3','DYNFRM-column8', 'null'); var input = form.add('town','DYNFRM-column9', 'Please enter a town.'); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); var input = form.add('county','DYNFRM-column10', 'null'); var input = form.add('postcode','DYNFRM-column11', 'Please enter a postcode.'); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); var input = form.add('country','DYNFRM-column12', 'Please select a country.'); var constraint = input.add('Does Not Equal'); constraint.add(null, 'String', true); constraint.add('-1', 'String', false); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); var input = form.add('note','DYNFRM-column33', 'null'); var input = form.add('phone','DYNFRM-column13', 'null'); var input = form.add('email','DYNFRM-column14', 'Please enter a valid email address.'); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); var constraint = input.add('Is Email'); constraint.add(null, 'String', true); var input = form.add('crm_age_range','DYNFRM-column15', 'Please select your age range.'); var constraint = input.add('Does Not Equal'); constraint.add(null, 'String', true); constraint.add('-1', 'String', false); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); var input = form.add('child_age','DYNFRM-column16', 'null'); var input = form.add('under_5','DYNFRM-column17', 'null'); var input = form.add('child_5_12','DYNFRM-column18', 'null'); var input = form.add('child_13','DYNFRM-column19', 'null'); var input = form.add('crm_whenlastLabel','DYNFRM-column20', 'null'); var input = form.add('crm_lastMonth','DYNFRM-column21', 'Please fill in the month of your last break in Scotland.'); var constraint = input.add('Does Not Equal'); constraint.add(null, 'String', true); constraint.add('-1', 'String', false); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); var input = form.add('crm_lastYear','DYNFRM-column22', 'Please fill in the year of your last break in Scotland.'); var constraint = input.add('Does Not Equal'); constraint.add(null, 'String', true); constraint.add('-1', 'String', false); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); var input = form.add('crm_visitFrequency_label','DYNFRM-column23', 'null'); var input = form.add('crm_visitFrequency','DYNFRM-column24', 'null'); var input = form.add('dp_label','DYNFRM-column25', 'null'); var input = form.add('dp_vsoffers_label','DYNFRM-column26', 'null'); var input = form.add('dp_vsoffers','DYNFRM-column27', 'Please complete the first data protection question.'); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); var input = form.add('dp_thirdparty_label','DYNFRM-column28', 'null'); var input = form.add('dp_thirdparty','DYNFRM-column29', 'Please complete the second data protection question.'); var constraint = input.add('Not Empty'); constraint.add(null, 'String', true); function validate(){ return(form.test()); }