//var undefined = false; /** * Lisaparameetrite massiiv */ //var propertiesArray = new Array(); /** * Valjade lisaparameetrite objekt */ function propertiesObject(name, type, label, mandatory, maxLength, minLength, formName) { this.name = name; this.type = type; this.mandatory = mandatory; this.maxLength = maxLength; this.minLength = minLength; this.formName = formName; this.label = label; } /** * Radio button'i valideerimiseks abiobjekt */ function radioButtonObject(name,checked, value, label) { this.name = name; this.checked = checked; this.value = value; this.label = label; } /** *pildi nime muutmise funktsioon */ function renameImage(fieldName, formName) { var form = document.forms[formName]; var imageName = "img_"+fieldName; var imageNewName = "img_"+fieldName+formName; var imageObj = document.images[imageName]; imageObj.name = imageNewName; return true; } /** * Abifunktsioon nimejargi otsingu tegemiseks */ function getPropertyByName(propArray, propName, formName) { var result = ""; for (var j = 0; j < propArray.length ; j ++) { if ((propArray[j] != null) && (propArray[j].name == propName) && (propArray[j].formName == formName)) { result = propArray[j]; break; } } return result; } /** * elemendi nime jargi tagastamine */ /* function getImageByName(name) { var result = ""; for (var iidx = 0; iidx < document.images.length ; iidx++) { alert("get images"+document.images[iidx].name); if (document.images[iidx].name == name) { result = document.images[iidx]; } } return result; } */ /** * Valja nime tagastamise funktsioon */ function getLabel(element) { var result; if (element.label == null) { result = element.name; } else { result = element.label; } return result; } /** * Vaartuse pikkuse valideerimine (max) */ function validateMaxLength(element, vMax) { var result = true; if (element.value.length > vMax) { result = false; } return result; } /** * Vaartuse pikkuse valideerimine (min) */ function validateMinLength(element, vMin) { var result = true; if (element.value.length < vMin) { result = false; } return result; } /** * Kuupaeva valideerimine */ function validateDate(element) { var result = true; var datRes = ""; datRes = datecheck(element,"DD.MM.RRRR"); if (datRes != element.value) { element.value = datRes; result = false; } return result; } /** * Kellaaja valideerimine */ function validateTime(element) { var result = true; var time = element.value; if (time.length == 0) { return true; } var hh = time.substring(0,2); var mm = time.substring(3,5); if (time.length != 5) { result = false; } if (time.charAt(2) != ':') { result = false; } if (isNaN(hh) || isNaN(mm) || hh > 24 || mm > 60) { result = false; } return result; } /** * Isikukoodi valideerimine */ function validateSocSecurity(element) { var _code = element.value; var i; var ch = ''; if (element.value=="") { return true; } for (i=0; i<_code.length; i++) { ch = _code.charAt(i); if (ch < '0' || ch > '9') { return false; } } if (_code.length==11) { var kontroll = _code.charAt(10); var kaal1 = (_code.charAt(0)*1 + _code.charAt(1)*2 + _code.charAt(2)*3 + _code.charAt(3)*4 + _code.charAt(4)*5 + _code.charAt(5)*6 + _code.charAt(6)*7 + _code.charAt(7)*8 + _code.charAt(8)*9 + _code.charAt(9)*1) %11; if (kaal1==10) { kaal1 = (_code.charAt(0)*3 + _code.charAt(1)*4 + _code.charAt(2)*5 + _code.charAt(3)*6 + _code.charAt(4)*7 + _code.charAt(5)*8 + _code.charAt(6)*9 + _code.charAt(7)*1 + _code.charAt(8)*2 + _code.charAt(9)*3) %11; } if (kaal1==kontroll) return true; else { return false; } } else { return false; } return true; } /** * Krediitkaardi numbri valideerimine */ function validateCreditCard(element) { return luhnCheck(element.value); } /** * Rahasumma valideerimine */ function validateCurrency(element) { var result = true; result = validateNumber(element); return result; } /** * Struts'i Krediitkaardi valideerimise func. */ function luhnCheck(cardNumber) { if (isLuhnNum(cardNumber)) { var no_digit = cardNumber.length; var oddoeven = no_digit & 1; var sum = 0; for (var count = 0; count < no_digit; count++) { var digit = parseInt(cardNumber.charAt(count)); if (!((count & 1) ^ oddoeven)) { digit *= 2; if (digit > 9) { igit -= 9; } sum += digit; } if (sum == 0) { return false; } if (sum % 10 == 0) { return true; } } return false; } } /** * Struts'i Krediitkaardi valideerimise func. */ function isLuhnNum(argvalue) { var argvalue = argvalue.toString(); if (argvalue.length == 0) { return false; } for (var n = 0; n < argvalue.length; n++) { if ((argvalue.substring(n, n+1) < "0") || (argvalue.substring(n,n+1) > "9")) { return false; } } return true; } /** * Koguse (numbrivaartus) valideerimine */ function validateAmount(element) { var result = true; result = validateNumber(element); return result; } /** * e-mail'i valideerimise funktsioon */ function validateEmail(element) { var result = true; var emailStr = element.value; if (emailStr.length == 0) { return true; } var emailPat=/^(.+)@(.+)$/; var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"; var validChars="\[^\\s" + specialChars + "\]"; var quotedUser="(\"[^\"]*\")"; var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/; var atom=validChars + '+'; var word="(" + atom + "|" + quotedUser + ")"; var userPat=new RegExp("^" + word + "(\\." + word + ")*$"); var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$"); var matchArray=emailStr.match(emailPat); if (matchArray == null) { return false; } var user=matchArray[1]; var domain=matchArray[2]; if (user.match(userPat) == null) { return false; } var IPArray = domain.match(ipDomainPat); if (IPArray != null) { for (var i = 1; i <= 4; i++) { if (IPArray[i] > 255) { return false; } } return true; } var domainArray=domain.match(domainPat); if (domainArray == null) { return false; } var atomPat=new RegExp(atom,"g"); var domArr=domain.match(atomPat); var len=domArr.length; if ((domArr[domArr.length-1].length < 2) || (domArr[domArr.length-1].length > 3)) { return false; } if (len < 2) { return false; } return true; } /** * Integer tuupi vaartuste valideerimine */ function validateInteger(element) { var result = true; var numStr = element.value; if (numStr.length == 0) { return true; } if (isNaN(element.value)) { return false; } else { return true; } /* var arv = element.value; var i; var ch = ''; for (i=0; i'9') { result = false; break; } } return result; */ } /** * Numbrivaartuse valideerimine */ function validateNumber(element) { var chImage; var result = true; var arv = element.value; if (arv.indexOf(',')!=-1) { arv = arv.substring(0, arv.indexOf(','))+'.'+arv.substring(arv.indexOf(',')+1, arv.length); elementName.value = arv; } var i; var hadpoint = 0; var ch = ''; var chprev = ''; for (i=0; i'9') && ch!='.' && ch!='-') || (ch=='-' && (i>0 || arv.length<=1)) || (ch=='.' && (chprev=='-' || i==0 || i==arv.length-1))) { result = false; break; } else { if (hadpoint==1 && ch=='.') { result = false; break; } else { if (ch=='.') { hadpoint = 1; } } } chprev = ch; } return result; } /** * Select box'i & multiselect box'i valideerimise funktsioon */ function validateSelectBoxMandatory(selectBox) { var result = false; var selectOptions = selectBox.options; for (var opi = 0; opi < selectOptions.length ; opi++) { if ((!result) && selectOptions[opi].selected == true && (selectOptions[opi].value == null || selectOptions[opi].value == undefined || selectOptions[opi].value == '')) { result = false; } else if (selectOptions[opi].selected == true && (selectOptions[opi].value != null && selectOptions[opi].value != undefined && selectOptions[opi].value != '')) { result = true; } } return result; } /** * Radio button'ite valideerimine */ function validateRadios(radioArray, form) { var resultMsg = ""; var stepResult = false; for (var rad = 0; rad < radioArray.length ; rad++) { if (radioArray[rad] != null && radioArray[rad] != undefined){ stepResult = false; for (var rad2 = rad; rad2 < radioArray.length ; rad2++) { if (radioArray[rad].name == radioArray[rad2].name && radioArray[rad2].checked == true) { stepResult = true; } if (radioArray[rad].name == radioArray[rad2].name) { if (rad != rad2) { delete radioArray[rad2]; } } } if (!stepResult) { resultMsg = resultMsg.concat("Väli: ",radioArray[rad].label," on kohustuslik. \n"); imageName = "img_"+radioArray[rad].name+form.name; imageObj = document.images[imageName]; if (imageObj != null && imageObj != undefined) { imageObj.src = "gfx/ico_error.gif"; } else { imageName = "img_"+radioArray[rad].name; imageObj = document.images[imageName]; if (imageObj != null && imageObj != undefined) { imageObj.src = "gfx/ico_error.gif"; } } } else { imageName = "img_"+radioArray[rad].name+form.name; imageObj = document.images[imageName]; if (imageObj != null && imageObj != undefined) { imageObj.src = "gfx/1.gif"; } else { imageName = "img_"+radioArray[rad].name; imageObj = document.images[imageName]; if (imageObj != null && imageObj != undefined) { imageObj.src = "gfx/1.gif"; } } } } } return resultMsg; } /** * Valja valideerimise uldime funktsioon */ function validateField(field, fieldProperty) { var resultMsg = ""; var label = getLabel(field); var mandatory = fieldProperty.mandatory; //mandatory validation if (fieldProperty.type != null && fieldProperty.type != undefined && fieldProperty.type == "select" && mandatory != null && mandatory != undefined && mandatory != "" && mandatory == "true" && (!validateSelectBoxMandatory(field))) { resultMsg = resultMsg.concat("Väli: ",label," on kohustuslik. \n"); } else if (mandatory != null && mandatory != undefined && mandatory != "" && mandatory == "true" && field.value == "") { resultMsg = resultMsg.concat("Väli: ",label," on kohustuslik. \n"); } //different types validation if (fieldProperty.type != null && fieldProperty.type != undefined && fieldProperty.type == "text") { if (fieldProperty.maxLength != null && fieldProperty.maxLength != undefined && fieldProperty.maxLength != 0 && (!validateMaxLength(field,fieldProperty.maxLength))) { resultMsg = resultMsg.concat("Valja : ",label," vaartus on liiga pikk. \n"); } if (fieldProperty.minLength != null && fieldProperty.minLength != undefined && (!validateMinLength(field,fieldProperty.minLength))) { resultMsg = resultMsg.concat("Valja : ",label," vaartus on liiga luhike. \n"); } } else if (fieldProperty.type != null && fieldProperty.type != undefined && fieldProperty.type == "date" && (!validateDate(field))) { resultMsg = resultMsg.concat("Kuupaev valjas: ",label," on valel kujul. \n"); } else if (fieldProperty.type != null && fieldProperty.type != undefined && fieldProperty.type == "time" && (!validateTime(field))) { resultMsg = resultMsg.concat("Kellaaeg valjas: ",label," on valel kujul. \n"); } else if (fieldProperty.type != null && fieldProperty.type != undefined && fieldProperty.type == "currency" && (!validateCurrency(field))) { resultMsg = resultMsg.concat("Raha summa valjas: ",label," on valel kujul. \n"); if (fieldProperty.maxLength != null && fieldProperty.maxLength != undefined && fieldProperty.maxLength != 0 && (!validateMaxLength(field,fieldProperty.maxLength))) { resultMsg = resultMsg.concat("Valja : ",label," vaartus on liiga pikk. \n"); } if (fieldProperty.minLength != null && fieldProperty.minLength != undefined && (!validateMinLength(field,fieldProperty.minLength))) { resultMsg = resultMsg.concat("Valja : ",label," vaartus on liiga luhike. \n"); } } else if (fieldProperty.type != null && fieldProperty.type != undefined && fieldProperty.type == "amount" && (!validateAmount(field))) { resultMsg = resultMsg.concat("Kogus valjas: ",label," on valel kujul. \n"); if (fieldProperty.maxLength != null && fieldProperty.maxLength != undefined && fieldProperty.maxLength != 0 && (!validateMaxLength(field,fieldProperty.maxLength))) { resultMsg = resultMsg.concat("Valja : ",label," vaartus on liiga pikk. \n"); } if (fieldProperty.minLength != null && fieldProperty.minLength != undefined && (!validateMinLength(field,fieldProperty.minLength))) { resultMsg = resultMsg.concat("Valja : ",label," vaartus on liiga luhike. \n"); } } else if (fieldProperty.type != null && fieldProperty.type != undefined && fieldProperty.type == "socSecCode" && (!validateSocSecurity(field))) { resultMsg = resultMsg.concat("Isikukood valjas: ",label," on valel kujul. \n"); } else if (fieldProperty.type != null && fieldProperty.type != undefined && fieldProperty.type == "creditCard" && (!validateCreditCard(field))) { resultMsg = resultMsg.concat("Krediitkaardi number valjas: ",label," on valel kujul. \n"); } else if (fieldProperty.type != null && fieldProperty.type != undefined && fieldProperty.type == "eMail" && (!validateEmail(field))) { resultMsg = resultMsg.concat("e-mail valjas: ",label," olev vaartus on valel kujul. \n"); if (fieldProperty.maxLength != null && fieldProperty.maxLength != undefined && fieldProperty.maxLength != 0 && (!validateMaxLength(field,fieldProperty.maxLength))) { resultMsg = resultMsg.concat("Valja : ",label," vaartus on liiga pikk. \n"); } if (fieldProperty.minLength != null && fieldProperty.minLength != undefined && (!validateMinLength(field,fieldProperty.minLength))) { resultMsg = resultMsg.concat("Valja : ",label," vaartus on liiga luhike. \n"); } } else if (fieldProperty.type != null && fieldProperty.type != undefined && fieldProperty.type == "integer" && (!validateInteger(field))) { resultMsg = resultMsg.concat("Taisarv valjas: ",label," on valel kujul. \n"); if (fieldProperty.maxLength != null && fieldProperty.maxLength != undefined && fieldProperty.maxLength != 0 && (!validateMaxLength(field,fieldProperty.maxLength))) { resultMsg = resultMsg.concat("Valja : ",label," vaartus on liiga pikk. \n"); } if (fieldProperty.minLength != null && fieldProperty.minLength != undefined && (!validateMinLength(field,fieldProperty.minLength))) { resultMsg = resultMsg.concat("Valja : ",label," vaartus on liiga luhike. \n"); } } if (resultMsg != "") { //field.bgColor = "#FFE2E2"; } return resultMsg; } /** * Vormi valideerimise funktsioon */ function validateForm(form, propertiesArray) { var resultMsg = ""; var tmpMsg; var foundProperty; var numOfElements = form.elements.length; var imageName = ""; var imageObj; var radiosArray = new Array(); for (var idx = 0; idx < numOfElements ; idx++) { // alert("before get image "+form.elements[idx].name+" "+form.elements[idx].type); // resultMsg = resultMsg.concat("element: ",form.elements[idx].type," ",form.elements[idx].name," \n"); if (form.elements[idx].type != "image" && form.elements[idx].type != "radio") { foundProperty = getPropertyByName(propertiesArray, form.elements[idx].name, form.name); if (foundProperty != null && foundProperty != undefined) { // resultMsg = resultMsg.concat("element: ",foundProperty.type," \n"); tmpMsg = validateField(form.elements[idx], foundProperty); imageName = ""; if (tmpMsg != "") { resultMsg = resultMsg.concat(tmpMsg); imageName = "img_"+form.elements[idx].name+form.name; imageObj = document.images[imageName]; if (imageObj != null && imageObj != undefined) { imageObj.src = "gfx/ico_error.gif"; } else { imageName = "img_"+form.elements[idx].name; imageObj = document.images[imageName]; if (imageObj != null && imageObj != undefined) { imageObj.src = "gfx/ico_error.gif"; } } } else { resultMsg = resultMsg.concat(tmpMsg); imageName = "img_"+form.elements[idx].name+form.name; imageObj = document.images[imageName]; if (imageObj != null && imageObj != undefined) { imageObj.src = "gfx/1.gif"; } else { imageName = "img_"+form.elements[idx].name; imageObj = document.images[imageName]; if (imageObj != null && imageObj != undefined) { imageObj.src = "gfx/1.gif"; } } } tmpMsg = ""; } } else if (form.elements[idx].type == "radio") { foundProperty = getPropertyByName(propertiesArray, form.elements[idx].name, form.name); if (foundProperty != null && foundProperty != undefined) { radiosArray[radiosArray.length] = new radioButtonObject(form.elements[idx].name,form.elements[idx].checked, form.elements[idx].value, foundProperty.label); } //alert(field.type+" "+field.name+" "+field.checked+" "+field.value); } } tmpMsg = validateRadios(radiosArray, form); if (tmpMsg != "") { resultMsg = resultMsg.concat(tmpMsg); } if (resultMsg != "") { window.alert(resultMsg); return false; } else { // form.submit(); return true; } }