1 // this function checks id date is like DD/MM/YYYY
2 function CheckDate(field) {
7 var date = d.split("/");
10 if ( (date.length < 2) && (ok==1) ) {
11 msg = MSG_SEPARATOR.format(field.name);
12 alert(msg); ok=0; field.focus();
19 if ( ((isNaN(dd))||(dd<1)||(dd>31)) && (ok==1) ) {
20 msg = MSG_INCORRECT_DAY.format(field.name);
21 alert(msg); ok=0; field.focus();
25 if ( ((isNaN(mm))||(mm<1)||(mm>12)) && (ok==1) ) {
26 msg = MSG_INCORRECT_MONTH.format(field.name);
27 alert(msg); ok=0; field.focus();
31 if ( ((isNaN(yyyy))||(yyyy<amin)||(yyyy>amax)) && (ok==1) ) {
32 msg = MSG_INCORRECT_YEAR.format(field.name);
33 alert(msg); ok=0; field.focus();
39 //function test if member is unique and if it's right the member is registred
43 if ( document.form.check_member.value==1){
44 if (document.form.categorycode.value != "I"){
46 msg1 += MSG_DUPLICATE_PATRON;
48 check_form_borrowers(0);
49 document.form.submit();
52 msg2 += MSG_DUPLICATE_ORGANIZATION;
54 check_form_borrowers(0);
59 document.form.submit();
64 //function test if date enrooled < date expiry
65 // WARNING: format-specific test.
66 function check_manip_date(status) {
67 if (status=='verify'){
68 // this part of function('verify') is used to check if dateenrolled<date expiry
69 if (document.form.dateenrolled !== '' && document.form.dateexpiry.value !=='') {
70 var myDate1=document.form.dateenrolled.value.split ('/');
71 var myDate2=document.form.dateexpiry.value.split ('/');
72 if ((myDate1[2]>myDate2[2])||(myDate1[2]==myDate2[2] && myDate1[1]>myDate2[1])||(myDate1[2]==myDate2[2] && myDate1[1]>=myDate2[1] && myDate1[0]>=myDate2[0]))
75 document.form.dateenrolled.focus();
76 var msg = MSG_LATE_EXPIRY;
84 function check_password( password ) {
85 if ( password.match(/^\s/) || password.match(/\s$/)) {
91 // function to test all fields in forms and nav in different forms(1 ,2 or 3)
92 function check_form_borrowers(nav){
96 if (document.form.check_member.value == 1 )
98 if (document.form.answernodouble) {
99 if( (!(document.form.answernodouble.checked))){
100 document.form.nodouble.value=0;
102 document.form.nodouble.value=1;
106 if ( document.form.password ) {
107 if ( document.form.password.value != document.form.password2.value ){
108 if ( message_champ !== '' ){
109 message_champ += "\n";
111 message_champ+= MSG_PASSWORD_MISMATCH;
115 if ( ! check_password( document.form.password.value ) ) {
116 message_champ += MSG_PASSWORD_CONTAINS_TRAILING_SPACES;
121 //patrons form to test if you checked no to the question of double
122 if (statut!=1 && document.form.check_member.value > 0 ) {
123 if (!(document.form.answernodouble.checked)){
124 message_champ+= MSG_DUPLICATE_SUSPICION;
126 document.form.nodouble.value=0;
128 document.form.nodouble.value=1;
133 //alert if at least 1 error
134 alert(message+"\n"+message_champ);
141 function Dopop(link) {
142 // // var searchstring=document.form.value[i].value;
143 var newin=window.open(link,'popup','width=600,height=400,resizable=no,toolbar=false,scrollbars=no,top');
146 function Dopopguarantor(link) {
147 var newin=window.open(link,'popup','width=800,height=500,resizable=no,toolbar=false,scrollbars=yes,top');
150 function clear_entry(node) {
151 var original = $(node).parent();
152 $("textarea", original).attr('value', '');
153 $("select", original).attr('value', '');
156 function clone_entry(node) {
157 var original = $(node).parent();
158 var clone = original.clone();
160 var newId = 50 + parseInt(Math.random() * 100000);
161 $("input,select,textarea", clone).attr('id', function() {
162 return this.id.replace(/patron_attr_\d+/, 'patron_attr_' + newId);
164 $("input,select,textarea", clone).attr('name', function() {
165 return this.name.replace(/patron_attr_\d+/, 'patron_attr_' + newId);
167 $("label", clone).attr('for', function() {
168 return $(this).attr("for").replace(/patron_attr_\d+/, 'patron_attr_' + newId);
170 $("input#patron_attr_" + newId, clone).attr('value','');
171 $("select#patron_attr_" + newId, clone).attr('value','');
172 $(original).after(clone);
176 function update_category_code(category_code) {
177 if ( $(category_code).is("select") ) {
178 category_code = $("#categorycode_entry").find("option:selected").val();
180 var mytables = $(".attributes_table");
181 $(mytables).find("li").hide();
182 $(mytables).find(" li[data-category_code='"+category_code+"']").show();
183 $(mytables).find(" li[data-category_code='']").show();
186 function select_user(borrowernumber, borrower) {
187 var form = $('#entryform').get(0);
188 if (form.guarantorid.value) {
189 $("#contact-details, #quick_add_form #contact-details").find('a').remove();
190 $("#contactname, #contactfirstname, #quick_add_form #contactname, #quick_add_form #contactfirstname").parent().find('span').remove();
193 var id = borrower.borrowernumber;
194 form.guarantorid.value = id;
195 $('#contact-details, #quick_add_form #contact-details')
198 .after('<a target="blank" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + id + '">' + id + '</a>');
201 .val(borrower.surname)
202 .before('<span>' + borrower.surname + '</span>').get(0).type = 'hidden';
203 $("#quick_add_form #contactname").val(borrower.surname).before('<span>'+borrower.surname+'</span.').attr({type:"hidden"});
204 $(form.contactfirstname,"#quick_add_form #contactfirstname")
205 .val(borrower.firstname)
206 .before('<span>' + borrower.firstname + '</span>').get(0).type = 'hidden';
207 $("#quick_add_form #contactfirstname").val(borrower.firstname).before('<span>'+borrower.firstname+'</span.').attr({type:"hidden"});
209 form.streetnumber.value = borrower.streetnumber;
210 form.address.value = borrower.address;
211 form.address2.value = borrower.address2;
212 form.city.value = borrower.city;
213 form.state.value = borrower.state;
214 form.zipcode.value = borrower.zipcode;
215 form.country.value = borrower.country;
216 form.branchcode.value = borrower.branchcode;
218 $("#quick_add_form #streetnumber").val(borrower.streetnumber);
219 $("#quick_add_form #address").val(borrower.address);
220 $("#quick_add_form #address2").val(borrower.address2);
221 $("#quick_add_form #city").val(borrower.city);
222 $("#quick_add_form #state").val(borrower.state);
223 $("#quick_add_form #zipcode").val(borrower.zipcode);
224 $("#quick_add_form #country").val(borrower.country);
225 $("#quick_add_form select[name='branchcode']").val(borrower.branchcode);
227 form.guarantorsearch.value = LABEL_CHANGE;
228 $("#quick_add_form #guarantorsearch").val(LABEL_CHANGE);
233 function CalculateAge(dateofbirth) {
234 var today = new Date();
235 var dob = Date_from_syspref(dateofbirth);
238 age.year = today.getFullYear() - dob.getFullYear();
239 age.month = today.getMonth() - dob.getMonth();
240 var day = today.getDate() - dob.getDate();
243 age.month = parseInt(age.month) -1;
247 age.year = parseInt(age.year) -1;
248 age.month = 12 + age.month;
254 function write_age() {
255 var hint = $("#dateofbirth").siblings(".hint").first();
256 hint.html(dateformat);
258 var age = CalculateAge(document.form.dateofbirth.value);
260 if (!age.year && !age.month) {
265 if (age.year || age.month) {
266 age_string = LABEL_AGE + ": ";
270 age_string += age.year > 1 ? MSG_YEARS.format(age.year) : MSG_YEAR.format(age.year);
275 age_string += age.month > 1 ? MSG_MONTHS.format(age.month) : MSG_MONTH.format(age.month);
278 hint.html(age_string);
281 $(document).ready(function(){
282 if($("#yesdebarred").is(":checked")){
283 $("#debarreduntil").show();
285 $("#debarreduntil").hide();
287 $("#yesdebarred,#nodebarred").change(function(){
288 if($("#yesdebarred").is(":checked")){
289 $("#debarreduntil").show();
290 $("#datedebarred").focus();
292 $("#debarreduntil").hide();
295 var mandatory_fields = $("input[name='BorrowerMandatoryField']").val().split ('|');
296 $(mandatory_fields).each(function(){
297 $("[name='"+this+"']").attr('required', 'required');
300 $("fieldset.rows input, fieldset.rows select").addClass("noEnterSubmit");
301 $("#guarantordelete").click(function() {
302 $("#quick_add_form #contact-details, #contact-details").hide().find('a').remove();
303 $("#quick_add_form #guarantorid, #quick_add_form #contactname, #quick_add_form #contactfirstname, #guarantorid, #contactname, #contactfirstname").each(function () { this.value = ""; });
304 $("#quick_add_form #contactname, #quick_add_form #contactfirstname, #contactname, #contactfirstname")
305 .each(function () { this.type = 'text'; })
306 .parent().find('span').remove();
307 $("#quick_add_form #guarantorsearch, #guarantorsearch").val(LABEL_SET_TO_PATRON);
310 $(document.body).on('change','select[name="select_city"]',function(){
311 $('select[name="select_city"]').val( $(this).val() );
312 var myRegEx=new RegExp(/(.*)\|(.*)\|(.*)\|(.*)/);
313 $(this).val().match(myRegEx);
314 $('input[name="zipcode"]').val( RegExp.$1 );
315 $('input[name="city"]').val( RegExp.$2 );
316 $('input[name="state"]').val( RegExp.$3 );
317 $('input[name="country"]').val( RegExp.$4 );
320 dateformat = $("#dateofbirth").siblings(".hint").first().html();
322 if( $('#dateofbirth').length ) {
326 $("#entryform").validate({
338 submitHandler: function(form) {
339 $("body, form input[type='submit'], form button[type='submit'], form a").addClass('waiting');
340 if (form.beenSubmitted)
343 form.beenSubmitted = true;
348 var mrform = $("#manual_restriction_form");
349 var mrlink = $("#add_manual_restriction");
351 mrlink.on("click",function(e){
357 $("#cancel_manual_restriction").on("click",function(e){
358 $('#debarred_expiration').val('');
359 $('#add_debarment').val(0);
360 $('#debarred_comment').val('');
365 $('#floating-save').css( { bottom: parseInt( $('#floating-save').css('bottom') ) + $('#changelanguage').height() + 'px' } );
367 bottom: parseInt( $('#qa-save').css('bottom') ) + $('#changelanguage').height() + 'px' ,
368 "background-color": "rgba(185, 216, 217, 0.6)",