// General field validation. The form should be submitted with 'javascript:validate()' // NB: Field names are case sensitive! function validate() { var valid = true; var form = document.forms[0]; // field = "Title"; inputVal = form[field].value; if (isEmpty(inputVal)) { validationError(form[field], "Titel skal udfyldes"); return} if (containsInvalidChars(inputVal)) { validationError(form[field], "Titel må ikke indeholde <- og >-tegn"); return} // field = "Name"; inputVal = form[field].value; if (isEmpty(inputVal)) { validationError(form[field], "Navn skal udfyldes"); return} // field = "Phone"; inputVal = form[field].value; if (isEmpty(inputVal)) { validationError(form[field], "Telefon skal udfyldes"); return} if (containsInvalidChars(inputVal)) { validationError(form[field], "Telefon må ikke indeholde <- og >-tegn"); return} // field = "Fax"; inputVal = form[field].value; if (containsInvalidChars(inputVal)) { validationError(form[field], "Fax må ikke indeholde <- og >-tegn"); return} // field = "email"; inputVal = form[field].value; if (containsInvalidChars(inputVal)) { validationError(form[field], "Email må ikke indeholde <- og >-tegn"); return} // field = "emailControl"; inputVal = form[field].value; if (containsInvalidChars(inputVal)) { validationError(form[field], "Email må ikke indeholde <- og >-tegn"); return} // General check on date/time to send field = "DateToSend"; var dateToSend = form.DateToSend.value; var timeToSend = form.TimeToSend.value; // - If both DateToSend and TimeToSend are empty then skip date/time validation // - If either DateToSend or TimeToSend is filled in, then the other must also be filled in if ((isEmpty(dateToSend) && isEmpty(timeToSend) == false) || (isEmpty(dateToSend) == false && isEmpty(timeToSend))) { validationError(form[field], "Både frigivelsesdato og tidspunkt skal udfyldes"); return}; if (!isEmpty(dateToSend) && !isEmpty(timeToSend)) { inputVal = form[field].value; // - Only 8 characters in date string if (inputVal.length != 8) { validationError(form[field], "Frigivelsesdato skal indeholde otte tegn"); return}; // - Only numbers and seperator char = "-" are allowed if (containsInvalidDateChars(inputVal)) { validationError(form[field], "Frigivelsesdato må kun indholde følgende tegn: 0, 1, ..., 9, -"); return}; // - Seperator chars must be placed correctly in date string if (inputVal.substr(2, 1) != "-" || inputVal.substr(5, 1) != "-") { validationError(form[field], "Der skal benyttes bindestreger som seperator, fx. 23-07-00"); return}; // - Convert date, month, and year strings to integer var ddStr = inputVal.substr(0, 2); var dd = parseInt(ddStr, 10); var mmStr = inputVal.substr(3, 2); var mm = parseInt(mmStr, 10); var yyStr = inputVal.substr(6, 2); var yy = parseInt(yyStr, 10); // - If string cannot be converted to integers something is wrong if (isNaN(dd) || isNaN(mm) || isNaN(yy)) { validationError(form[field], "Frigivelsesdato kan ikke forstås, formatet skal være 23-07-00"); return}; // - The numbers must be in the rigth range if (dd < 1 || dd > 31 || mm < 1 || mm > 31 || yy < 0 || yy > 99) { validationError(form[field], "Frigivelsesdato kan ikke forstås, formatet skal være 23-07-00"); return}; // - Check if month has 30 or 31 days var months = new Array("", "januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december"); if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30) { validationError(form[field], "Der er kun 30 dage i " + months[mm]); return}; // - Calculate true year be adding either 1900 or 2000 if (yy >= 50) { var yyyy = yy + 1900; } else { var yyyy = yy + 2000; }; // - If this is february then check for leap month if (mm == 2) { if (dd > 28 && ((yyyy % 4 > 0) || (yyyy % 4 == 0 && yyyy % 100 == 0 && yyyy % 400 > 0))) { validationError(form[field], "Der er kun 28 dage i " + months[mm] + " " + yyyy); return; } else if (dd > 29) { validationError(form[field], "Der er kun 29 dage i " + months[mm] + " " + yyyy); return; }; }; // Check the entered time field = "TimeToSend"; inputVal = form[field].value; // - Only 5 characters in time string if (inputVal.length != 5) { validationError(form[field], "Frigivelsestid skal indeholde fem tegn, fx. 21:35"); return}; // - Only numbers and separator char = ":" are allowed if (containsInvalidTimeChars(inputVal, ":")) { validationError(form[field], "Frigivelsestid må kun indholde følgende tegn: 0, 1, ..., 9, :"); return}; // - Seperator chars must be placed correctly in date string if (inputVal.substr(2, 1) != ":") { validationError(form[field], "Der skal benyttes kolon som separator, fx. 21:35"); return}; // - Convert hour and minute strings to integer var hhStr = inputVal.substr(0, 2); var hh = parseInt(hhStr, 10); var miStr = inputVal.substr(3, 2); var mi = parseInt(miStr, 10); // - If string cannot be converted to integers something is wrong if (isNaN(hh) || isNaN(mi)) { validationError(form[field], "Frigivelsestid kan ikke forstås, formatet skal være 21:35"); return}; // - The numbers must be in the rigth range if (hh < 0 || hh > 23 || mi < 0 || mi > 59) { validationError(form[field], "Frigivelsestid kan ikke forstås, formatet skal være 21:35"); return}; // - Entered date must be in the future var today = new Date(); //alert(yyyy + " " + mm + " " + dd); userDate = new Date(yyyy, mm - 1, dd, hh, mi); //alert(today.getTime() + "\n" + userDate.getTime()); //alert("userDate: " + userDate.getYear() + " " + userDate.getMonth() + " " + userDate.getDate() + " " + userDate.getHours() + " " + userDate.getMinutes()) //alert("today: " + today.getYear() + " " + today.getMonth() + " " + today.getDate() + " " + today.getHours() + " " + today.getMinutes()) if (today.getTime() > userDate.getTime()) {alert("Frigivelsestidspunkt er før dags dato!"); return}; } // field = "ObjName"; inputVal = form[field].value; if (isEmpty(inputVal)) { validationError(form[field], "Telegramnavn skal udfyldes"); return} if (containsInvalidChars(inputVal)) { validationError(form[field], "Telegramnavn må ikke indeholde <- og >-tegn"); return} // field = "Headline"; inputVal = form[field].value; if (isEmpty(inputVal)) { validationError(form[field], "Overskrift skal udfyldes"); return} if (containsInvalidChars(inputVal)) { validationError(form[field], "Overskrift må ikke indeholde <- og >-tegn"); return} // // field = "Article"; // inputVal = form[field].value; // if (isEmpty(inputVal)) { validationError(form[field], "Sammenfatning skal udfyldes"); return} // if (containsInvalidChars(inputVal)) { validationError(form[field], "Sammenfatning må ikke indeholde <- og >-tegn"); return} // field = "Body"; inputVal = escape(form[field].value); inputVal=replaceString(inputVal,'%1F',''); inputVal=replaceString(inputVal,'%07',''); inputVal=replaceString(inputVal,'%u201D','"'); inputVal=replaceString(inputVal,'%u2013','-'); inputVal=replaceString(inputVal,'%uF0B7','·'); inputVal=replaceString(inputVal,'%u2019','\''); inputVal=unescape(inputVal); form[field].value=inputVal; if (isEmpty(inputVal)) { validationError(form[field], "Brødtekst skal udfyldes"); return} if (containsInvalidChars(inputVal)) { validationError(form[field], "Brødtekst må ikke indeholde <- og >-tegn"); return} // field = "AttDesc1"; inputVal = form[field].value; if (containsInvalidChars(inputVal)) { validationError(form[field], "Bilagsbeskrivelse må ikke indeholde <- og >-tegn"); return} // field = "AttDesc2"; inputVal = form[field].value; if (containsInvalidChars(inputVal)) { validationError(form[field], "Bilagsbeskrivelse må ikke indeholde <- og >-tegn"); return} // field = "AttDesc3"; inputVal = form[field].value; if (containsInvalidChars(inputVal)) { validationError(form[field], "Bilagsbeskrivelse må ikke indeholde <- og >-tegn"); return} // field = "AttDesc4"; inputVal = form[field].value; if (containsInvalidChars(inputVal)) { validationError(form[field], "Bilagsbeskrivelse må ikke indeholde <- og >-tegn"); return} // If all data are valid then submit form ****** if (valid) { //alert("Valid!") form.submit() } } // Present error message to user ****** function validationError(field, msg) { alert(msg); field.focus(); field.select(); //return; } // // // Checks if no value has been entered at all function isEmpty(inputStr) { if (inputStr==null || inputStr=="") { return true } return false } // Checks if value contains invalid date chars function containsInvalidDateChars(inputVal) { var inputStr = inputVal //.ToString() for(var i = 0; i < inputStr.length; i++) { var oneChar = inputStr.substring(i, i+1); if ((oneChar < "0" || oneChar > "9") && oneChar != "-") { return true } } return false } // Checks if value contains invalid time chars function containsInvalidTimeChars(inputVal) { var inputStr = inputVal //.ToString() for(var i = 0; i < inputStr.length; i++) { var oneChar = inputStr.substring(i, i+1); if ((oneChar < "0" || oneChar > "9") && oneChar != ":") { return true } } return false } // Checks if value contains '<' or '>' function containsInvalidChars(inputVal) { var inputStr = inputVal //.ToString() for(var i = 0; i < inputStr.length; i++) { var oneChar = inputStr.substring(i, i+1); if (oneChar == "<" || oneChar == ">") { return true } } return false } // Presents help function showHelp(helpText) { window.status = helpText; } // Opens small window function display(url, name, w, h) { ImgDisplay = window.open(url, name, 'width=' + w + ',height=' + h + ',alwaysRaised=1,scrollbars=1'); ImgDisplay.focus(); } //-------------------------------------------------------------------------------------------------------------------------------------- //Nade 140400 function replaceString(orgString, fromString, toString) { var pos=0; var len=fromString.length; pos=orgString.indexOf(fromString); while (pos!=-1) { preString=orgString.substring(0,pos); postString=orgString.substring(pos+len,orgString.length); orgString=preString+toString+postString; pos=orgString.indexOf(fromString); } return orgString; }