// validation scripts for date and time fields // @author $Author: WK $ $State$ // @version $Revision: 124079 $ $Date: 2013-03-12 11:51:29 +0100 (Di, 12 Mär 2013) $ // @file $RCSfile$ // do submit function that set the useraction, the id, and the target on the form with the name formName function doSubmitExt (id, ua, ac, formName) { var form = document.forms[formName]; if (form!=null) { form.id.value = id; form.userAction.value = ua; form.action = ac; form.submit (); } } // do submit function that set the useraction, the id, and the target function doSubmit (id, ua, ac) { doSubmitExt(id, ua, ac, 'FORM_VAL'); } function setUserAction(sender, value) { setFormField(sender, 'userAction', value); } function setFormField(sender, fieldname, value) { sender.form.elements[fieldname].value = value; } function doSubmitForm (sender, id, ua, ac) { var form = sender.form; if (form!=null) { setFormField(form, 'id', id); setFormField(form, 'userAction', ua); form.action = ac; form.submit (); } } // Calls a delete action after showing a popup message to the user function onDeleteSingle (id, ac, msg) { var Check = window.confirm (msg); if (Check == true) { doSubmit (id, 'delete', ac); } } function doReject (id, ac, address, subject, body, msg) { doRejectExt(id, ac, address, subject, body, msg, 'FORM_VAL'); } // function to open mail-client if a order is rejected by disponent function doRejectExt (id, ac, address, subject, body, msg, formName) { Check = window.confirm (msg); if (Check == true) { dummy = window.open("about:blank", "dummy", "width=1,height=1,location=no,menubar=no,status=no,scrollbars=no,toolbar=no"); //window.alert("1"); //dummy.location.href="mailto:dmp@soloplan.de?subject=Auftrag abgelehnt&body=Ihr Autrag .... wurde abgelehnt. Begruendung:"; var s = (subject==null) ? "" : escape(subject); var b = (body==null) ? "" : escape(body); var bo = b.replace (/_E_/g, "%0D%0A"); var mail = "mailto:" + address + "?subject=" + s + "&body=" + bo; // alert (mail); dummy.location.href = mail; dummy.close(); doSubmitExt(id, "reject", ac, formName); } } // erzeugt ein Popup in der Mitte des Screens function createPopup (src, name, w, h, param) { var x = screen.width/2-w/2; var y = screen.height/2-h/2; hwindow = window.open (src, name, "width=" + w + ",height=" + h + ","+param); hwindow.moveTo (x,y); hwindow.focus(); return hwindow; } function doSkip (id, si, ac) { document.FORM_VAL.id.value = id; document.FORM_VAL.startIndex.value = si; document.FORM_VAL.userAction.value = 'skip'; document.FORM_VAL.action = ac; document.FORM_VAL.submit (); } function doSkipExt (id, si, ac, formName) { document.forms[formName].id.value = id; document.forms[formName].startIndex.value = si; document.forms[formName].userAction.value = 'skip'; document.forms[formName].action = ac; document.forms[formName].submit (); } function doSort (sortColumn, sortDir, ac) { document.FORM_VAL.sortColumn.value = sortColumn; document.FORM_VAL.sortDir.value = sortDir; document.FORM_VAL.userAction.value = 'sort'; document.FORM_VAL.action = ac; document.FORM_VAL.submit (); } function doSortExt (sortColumn, sortDir, ac, formName) { document.forms[formName].sortColumn.value = sortColumn; document.forms[formName].sortDir.value = sortDir; document.forms[formName].userAction.value = 'sort'; document.forms[formName].action = ac; document.forms[formName].submit (); } /* Should prohibit the user's navigation by usings browsers forward or backwar buttons. Should be invoked on each page. */ function prohibitBrowserNavigation() { window.history.forward(1); } function blurElement(element) { if ((element.type=="button") || (element.type=="text") || (element.type=="textarea")) { element.blur(); } } /* Set a field within a form to a value (if not null) */ function setIfNotNull(form, elementname, newValue) { try { if ((form!=null) && (form.elements[elementname]!=null)) { form.elements[elementname].value = (((newValue!=null) && (newValue!="null"))? newValue : ""); blurElement(form.elements[elementname]); } } catch (e) { //nothing } } function getAddressText(form, fieldPrefix) { var res = null; if (form!=null) { try{ res = form.elements[fieldPrefix+'CompanyName'].value+'; '+ form.elements[fieldPrefix+'Contact'].value+'; '+ form.elements[fieldPrefix+'Country'].value+'-'+ form.elements[fieldPrefix+'ZipCode'].value+' '+ form.elements[fieldPrefix+'City'].value+'; '+ form.elements[fieldPrefix+'Email'].value; } catch(err){ // do nothing. Some form elements may be missing. } } return res; } function fillAddressText(form, fieldPrefix) { setIfNotNull(form, fieldPrefix+"AddressText", getAddressText(form, fieldPrefix)); } /* set all address-fields */ function setAddress(fieldPrefix, number, contact, companyName, companyName2, streetName, streetNumber, country, zipCode, city, telephone, mobilephone, faxNumber, email, UID, ID) { form = window.opener.document.forms["createNewOrderForm"]; if (form==null) form = window.opener.document.forms["CreateNewOrderForm"]; if (form==null) form = window.opener.document.forms[0]; try { if (form!=null) { setIfNotNull(form, fieldPrefix+"Number", number); setIfNotNull(form, fieldPrefix+"Name", companyName); setIfNotNull(form, fieldPrefix+"Name2", companyName2); setIfNotNull(form, fieldPrefix+"CompanyName", companyName); setIfNotNull(form, fieldPrefix+"CompanyName2", companyName2); setIfNotNull(form, fieldPrefix+"Contact", contact); setIfNotNull(form, fieldPrefix+"Street", streetName); setIfNotNull(form, fieldPrefix+"StreetNum", streetNumber); setIfNotNull(form, fieldPrefix+"Country", country); setIfNotNull(form, fieldPrefix+"ZipCode", zipCode); setIfNotNull(form, fieldPrefix+"City", city); setIfNotNull(form, fieldPrefix+"Telephone", telephone); setIfNotNull(form, fieldPrefix+"Mobilephone", mobilephone); setIfNotNull(form, fieldPrefix+"Fax", faxNumber); setIfNotNull(form, fieldPrefix+"Email", email); setIfNotNull(form, fieldPrefix+"UID", UID); setIfNotNull(form, fieldPrefix+"ID", ID); setIfNotNull(form, fieldPrefix+"Number", number); fillAddressText(form, fieldPrefix); } } finally { window.close(); } } // validation/modification of time fields function checkTime (field_name, form_name) { alert("checkTime(" + field_name + ")"); if (form_name == null || form_name == ""){ form_name = "FORM_VAL"; } // var field_val = document.FORM_VAL.elements[field_name].value var field_val = document.forms[form_name].elements[field_name].value var l; var i; var dot = -1; var result = ""; // empty field if (field_val==null || field_val=="") return; // replace the first non-numeric char by ":" result = field_val.replace(/\D/, ":"); l = result.length; dot = result.indexOf(":"); if (dot>=0) // found ":" { if ((l - dot) == 1) result = result + "00"; else if ((l - dot) == 2) result = result + "0"; //document.FORM_VAL.elements[field_name].value = result; document.forms[form_name].elements[field_name].value = result; return; } // no ":" found //fill in ":" or append ":00" if (l==1 || l==2) { result = result + ":00"; //document.FORM_VAL.elements[field_name].value = result; document.forms[form_name].elements[field_name].value = result; } else if (l==3 || l==4) { i = l-2; result = field_val.substring(0, i) + ":" + field_val.substring(i, l); document.forms[form_name].elements[field_name].value = result; } }//checkTime /** * This function checks the entered time and formats it. * ! This function uses jquery. You have to ensure that the jquery-library is included if you use this function. */ function jqCheckTime (field_name, form_name) { if (form_name == null || form_name == ""){ form_name = "FORM_VAL"; } var field_val = $('form#' + form_name + ' input[name=' + field_name + ']').val() var l; var i; var dot = -1; var result = ""; // empty field if (field_val==null || field_val=="") return; // replace the first non-numeric char by ":" result = field_val.replace(/\D/, ":"); l = result.length; dot = result.indexOf(":"); if (dot < 0){ // no ":" found //fill in ":" or append ":00" if ( l > 4 ){ result = result.substring(0,4); l = result.length; } if (l==1 || l==2){ result = result + ":00"; } else if (l==3 || l==4){ i = l-2; result = result.substring(0, i) + ":" + result.substring(i, l); } } // now we surely have a colon: dot = result.indexOf(":"); l = result.length; // ensure valid hours hours = result.substring(0,dot); if (hours.length > 2){ hours = hours.substring(hours.length-2, hours.length); } if (!isNumeric(hours)){ hours = 0; } else if (hours > 23){ hours = 23; } // ensure valid minutes minutes = result.substring(dot+1,l); if (minutes.length > 2){ minutes = minutes.substring(0,2); } if (!isNumeric(minutes)){ minutes = 0; } else if (minutes > 59){ minutes = 59; } result = fillDigits(hours) + ":" + fillDigits(minutes); $('form#' + form_name + ' input[name=' + field_name + ']').val(result); }//checkTime // validation/modification of date fields function checkDate (field_name, form_name) { if (form_name == null || form_name == ""){ form_name = "FORM_VAL"; } //var field_val = document.FORM_VAL.elements[field_name].value var field_val = document.forms[form_name].elements[field_name].value var result = ""; var first_dot = -1; var last_dot = -1; var le = -1; if (field_val==null || field_val=="") return; // replace all non-numeric chars by "." result = field_val.replace(/\D/g, "."); // get dots and length first_dot = result.indexOf("."); last_dot = result.lastIndexOf("."); le = result.length; //window.alert("first: " + first_dot + "\nlast_dot: " + last_dot + "\nlength: " + le); // maybe we can insert some missing dots if ((first_dot==-1) && (last_dot==-1)) // no dots { switch (le) { case 4: // e.g. 1102 result = field_val.substring(0, 1) + "." + field_val.substring(1, 2) + "." + field_val.substring(2, le); break; case 5: // e.g. 10102 or 11002 result = field_val.substring(0, 3) + "." + field_val.substring(3, le); // can we do more??? break; case 6: // e.g. 010102 or 112002 result = field_val.substring(0, 2) + "." + field_val.substring(2, le); // can we do more??? break; case 7: // e.g. 1012002 or 1102002 result = field_val.substring(0, 3) + "." + field_val.substring(3, le); // can we do more??? break; case 8: // e.g. 01012002 result = field_val.substring(0, 2) + "." + field_val.substring(2, 4) + "." + field_val.substring(4, le); break; }//switch }// no dots else if (first_dot < last_dot) // two dots { // there's nothing else to do } else // one dot - horror { // get a copy if we changed one char into "." var copy = String(result); switch (le) { case 5: // e.g. 1.102 or 11.02 if (first_dot==1) result = copy.substring(0, 3) + "." + copy.substring(3, le); else if (last_dot==2) result = copy.substring(0, 1) + "." + copy.substring(1, le); break; case 6: // e.g. 1.1002 or 10.102 or 101.02 or 110.02 if (first_dot==1) result = copy.substring(0, 4) + "." + copy.substring(4, le); else if (first_dot==2) result = copy.substring(0, 4) + "." + copy.substring(4, le); //else if (first_dot==3) // can we do more??? break; case 7: // e.g. 1.12002 or 11.2002 or 10.1002 or 1010.02 if (first_dot==1) result = copy.substring(0, 3) + "." + copy.substring(3, le); //else if (first_dot==2) // can we do more??? else if (last_dot==4) result = copy.substring(0, 2) + "." + copy.substring(2, le); break; case 8: // e.g. 1.102002 or 10.12002 or 110.2002 or 101.2002 if (first_dot==1) result = copy.substring(0, 4) + "." + copy.substring(4, le); else if (first_dot==2) result = copy.substring(0, 4) + "." + copy.substring(4, le); //else if (first_dot==3) // can we do more??? break; case 9: // e.g. 01.012002 or 0101.2002 if (first_dot==2) result = copy.substring(0, 5) + "." + copy.substring(5, le); else if (last_dot==4) result = copy.substring(0, 2) + "." + copy.substring(2, le); break; }//switch } result = formatGermanDateByString(result); // write back the modified string into field document.forms[form_name].elements[field_name].value = result; return; }//checkDate function setClientID(aFieldName){ var form = document.forms[0]; form.userAction.value = 'changeclient'; document.forms[0].submit(); } /** * Copies the date from the sourcefield to the destinationfield and adds the given amount of days * to the destination-date * @param aFormName * @param aSourceField * @param aDestField * @param aAddNumOfDays * @return */ function copyFromDate (aFormName, aSourceField, aDestField, aAddNumOfDays){ var form = document.forms[aFormName]; var loadDate = parseGermanDate(form.elements[aSourceField].value); var deliverdate; if (form.elements[aSourceField].value == ""){ form.elements[aDestField].value = ""; } else if (loadDate != null){ if (aAddNumOfDays != null){ deliverdate = addDays(loadDate, parseInt(aAddNumOfDays)); } form.elements[aDestField].value = formatGermanDate(deliverdate); } } /** * Copies the time from the sourcefield to the destinationfield * @param aFormName * @param aSourceField * @param aDestField */ function copyFromTime (aFormName, aSourceField, aDestField){ var form = document.forms[aFormName]; var loadTime = form.elements[aSourceField].value; var deliverTime = form.elements[aDestField].value; //alert("loadTime: "+loadTime+" ,deliverTime: " + deliverTime) form.elements[aDestField].value = loadTime; } /** * Parses a Date in format dd.mm.yyyy * @param aDateString: String in format dd.mm.yyyy * @return the parsed Dateobj */ function parseGermanDate(aDateString) { var result = null; var fistDotPos; var lastDotPos; try { if (typeof(aDateString) == 'string'){ // typeconversion //aDateString = String(aDateString); fistDotPos = aDateString.indexOf("."); lastDotPos = aDateString.lastIndexOf("."); var dd = aDateString.substring(0, fistDotPos); var mm = (aDateString.substring(fistDotPos + 1, lastDotPos)) - 1; var yyyy = aDateString.substring(lastDotPos+1, aDateString.length ); // Fill the year to four digits. E.g. change 11 to 2011 if (yyyy.length < 4){ var currentDate = new Date(); var currentYearStr = currentDate.getFullYear().toString(); yyyy = currentYearStr.substring(0, 4 - yyyy.length) + yyyy; } result = new Date(yyyy, mm, dd); } else{ //alert("type: " + typeof(aDateString)) } } catch (err) { alert("parseGermanDate\n" + err); result = null; } return result; } /** * Formats the given date with German date-pattern * @param aDate the date as string * @return formatted date */ function formatGermanDateByString(aDateString){ return formatGermanDate(parseGermanDate(aDateString)); } /** * Formats the given date with German date-pattern * @param aDate the date as date-object * @return formatted date */ function formatGermanDate(aDate) { var result = null; try { result = fillDigits(aDate.getDate()) + "." + fillDigits(aDate.getMonth() + 1) + "." + aDate.getFullYear(); } catch (err) { //alert("formatGermanDate\n" + err); result = null; } return result; } /** * Fills the given value with zeros * @param aValue * @return */ function fillDigits(aValue) { result = "" + aValue; if(result.length==1){ result = "0" + result; } return result; } /** * @param aDate The Date that should be increased * @param aDays The amount of days that should be add * @return a date-object with the increased date-value */ function addDays(aDate, aDays){ var dayInMillis = 86400000; //alert("addDays: " + aDate); return new Date ((aDate.getTime() + (aDays * dayInMillis))); } /** * Checks if the given string is numeric * @param aValue * @returns */ function isNumeric(aValue){; return aValue.match(/^[0-9]+$/); }