PageSourceSearch

https://www.tokyo23-kuchokai-kiko.jp/mt-static/plugins/AForm/js/aform.js?t=20261002104908

js tokyo23-kuchokai-kiko.jp collected 2026-10-05 06:26:39 UTC 35,018 bytes, 1,181 lines download raw bytes

1// A plugin for adding "A-Form" functionality.
2// Copyright (c) 2008 ARK-Web Co.,Ltd.
3
4function isEmpty(v) {
5  return  ((v == null) || (v.length == 0) || /^\s+$/.test(v.toHankaku()));
6}
7
8function escapeHTML(str) {
9  return jQuery('<div>').text(str).html();
10}
11
12function aformValidate_showErrors(errorMap, errorList) {
13  var icon = '<img src="'+ aform.static_uri  +'plugins/AForm/images/icons/warning_y.gif">';
14  for( var i = 0; errorList[i]; i++ ){
15    if (errorList[i].message.match(/^<img/)) {
16    } else {
17      errorList[i].message = icon + errorList[i].message;
18    }
19  }
20  this.defaultShowErrors();
21}
22
23function aformValidate_errorPlacement(error, elm) {
24  var id = elm[0].id;
25  if( elm[0].type == 'checkbox' || elm[0].type == 'radio' ){
26    id = id.replace(/(.*)-[^-]+$/, "$1");
27  }
28  if( elm[0].name.match(/(aform-field-[0-9]+)-[0-9]+-text$/) ){
29    id = id.replace(/(.*)-[0-9]+-text$/, "$1");
30  }
31  if( match = elm[0].id.match(/^(.*)-confirm$/) ){
32    id = match[1];
33  }
34  if( match = id.match(/^(.*-cardnumber)\d$/) ){
35    id = match[1];
36  }
37  error.addClass('validation-advice');
38  jQuery('#'+ id +'-error').html(error);
39}
40
41function addAFormValidate() {
42
43    jQuery.validator.addMethod('aform-calendar', function(v,elm) {
44      if (match = elm.id.match(/^(.*)\-dd$/)) {
45        var parts_id = match[1];
46        if (aform.range_from && aform.range_from[parts_id]) {
47          var yy = jQuery('#'+ parts_id +'-yy');
48          var mm = jQuery('#'+ parts_id +'-mm');
49          var dd = jQuery('#'+ parts_id +'-dd');
50          if (!yy.val() && !mm.val() && !dd.val()) {
51            return true;
52          } else {
53            if (!yy.val() || !mm.val() || !dd.val()) {
54              return false;
55            }
56          }
57          var dt = new Date(yy.val(), mm.val() -1, dd.val());
58          if (dt < aform.range_from[parts_id]) {
59            return false;
60          }
61          return true;
62        }
63      }
64      return true;
65    });
66
67    jQuery.validator.addMethod('hankaku', function(v,elm) {
68      elm.value = elm.value.toHankaku();
69      return true;
70    });
71
72    jQuery.validator.addMethod('required', function(v,elm) {
73      if (aform_ignore_validate(elm)) {
74        return true;
75      }
76      if (!jQuery(elm).hasClass('required')) {
77        return true;
78      }
79      if( !isEmpty(v) ){
80        removeAFormInputErrorTitle(elm);
81        return true;
82      }else{
83        addAFormInputErrorTitle(elm);
84        postAFormErrorLog('empty', elm, v);
85        return false;
86      }
87    });
88
89    jQuery.validator.addMethod('validate-length', function(v,elm) {
90      if (aform_ignore_validate(elm)) {
91        return true;
92      }
93      if (isEmpty(v)) {
94        removeAFormInputErrorTitle(elm);
95        return true;
96      }
97      var pattern = jQuery(elm).attr('pattern');
98      var min_length = null;
99      var max_length = null;
100      if (matches = pattern.match(/^.*\{(\d*),(\d*)\}$/)) {
101        min_length = parseInt(matches[1]);
102        max_length = parseInt(matches[2]);
103      }
104      v = v.replace(/\r/g, "");
105      v = v.replace(/\n/g, "");
106      if( (!min_length || v.length >= min_length) && (!max_length || v.length <= max_length) ){
107        removeAFormInputErrorTitle(elm);
108        return true;
109      }else{
110        addAFormInputErrorTitle(elm);
111        postAFormErrorLog('max_length_error', elm, v);
112        return false;
113      }
114    });
115
116    jQuery.validator.addMethod('validate-email', function(v,elm) {
117      if (aform_ignore_validate(elm)) {
118        return true;
119      }
120      if( isEmpty(elm.value) || (aform_is_ascii(elm.value) && /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(elm.value)) ){
121        removeAFormInputErrorTitle(elm);
122        return true;
123      }else{
124        addAFormInputErrorTitle(elm);
125        postAFormErrorLog('email_format_error', elm, elm.value);
126        return false;
127      }
128    });
129
130    jQuery.validator.addMethod('validate-ascii', function(v,elm) {
131      if (aform_ignore_validate(elm)) {
132        return true;
133      }
134      var pattern = jQuery(elm).attr('pattern');
135      var char_pattern = '[\\x21-\\x7E]';
136      var re = new RegExp('^' + char_pattern + '*$', 'i');
137      if( isEmpty(v) || re.test(v) ){
138        removeAFormInputErrorTitle(elm);
139        return true;
140      }else{
141        addAFormInputErrorTitle(elm);
142        postAFormErrorLog('ascii_error', elm, v);
143        return false;
144      }
145    });
146
147    jQuery.validator.addMethod('validate-url', function (v,elm) {
148      if (aform_ignore_validate(elm)) {
149        return true;
150      }
151      if( isEmpty(v) || /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v) ){
152        removeAFormInputErrorTitle(elm);
153        return true;
154      }else{
155        addAFormInputErrorTitle(elm);
156        postAFormErrorLog('url_format_error', elm, v);
157        return false;
158      }
159    });
160
161    jQuery.validator.addMethod('validate-tel', function(v,elm) {
162      if (aform_ignore_validate(elm)) {
163        return true;
164      }
165      var reg_pattern = /.*/;
166      if (jQuery(elm).hasClass('require-hyphen')) {
167        reg_pattern = /\-/;
168      }
169      if (jQuery(elm).hasClass('not-allow-hyphen')) {
170        reg_pattern = /^[^-]*$/;
171      }
172      if( isEmpty(elm.value) || (/^[0-9\-]+$/.test(elm.value) && reg_pattern.test(elm.value)) ){
173        removeAFormInputErrorTitle(elm);
174        return true;
175      }else{
176        addAFormInputErrorTitle(elm);
177        postAFormErrorLog('tel_format_error', elm, elm.value);
178        return false;
179      }
180    });
181
182    jQuery.validator.addMethod('validate-zipcode', function(v,elm) {
183      if (aform_ignore_validate(elm)) {
184        return true;
185      }
186      var reg_pattern = /^[0-9]{3}-?[0-9]{4}$/;
187      if (jQuery(elm).hasClass('require-hyphen')) {
188        reg_pattern = /^[0-9]{3}-[0-9]{4}$/;
189      }
190      if (jQuery(elm).hasClass('not-allow-hyphen')) {
191        reg_pattern = /^[0-9]{7}$/;
192      }
193      if( isEmpty(elm.value) || reg_pattern.test(elm.value) ){
194        removeAFormInputErrorTitle(elm);
195        return true;
196      }else{
197        addAFormInputErrorTitle(elm);
198        postAFormErrorLog('zipcode_format_error', elm, elm.value);
199        return false;
200      }
201    });
202
203    jQuery.validator.addMethod('validate-selection', function(v,elm){
204      if( !isEmpty(v) ){
205        removeAFormInputErrorTitle(elm);
206        return true;
207      }else{
208        addAFormInputErrorTitle(elm);
209        postAFormErrorLog('not_selected', elm, v);
210        return false;
211      }
212    });
213
214    jQuery.validator.addMethod('validate-one-required', function(v,elm) {
215      var field_id = elm.name.match(/^aform-field-[0-9]+/);
216      var reg;
217      if( elm.type == 'checkbox' ){
218        reg = new RegExp( '^'+ field_id +'-[0-9]+$' );
219      }else{
220        reg = new RegExp( '^'+ field_id +'$');
221      }
222
223      var options = elm.form.getElementsByTagName('INPUT');
224      var check = false;
225      jQuery(options).each(function() {
226        if( this.name.search(reg) == -1 ){
227          return true;
228        }
229        if( this.checked ){
230          check = true;
231          return false;
232        }
233      });
234      if( check ){
235        hideAFormAdvice(elm);
236        removeAFormInputErrorTitle(elm);
237        return true;
238      }else{
239        addAFormInputErrorTitle(elm);
240        postAFormErrorLog('empty', elm, '');
241        return false;
242      }
243    });
244
245    jQuery.validator.addMethod('validate-option-text', function(v,elm) {
246      var matches = elm.id.match(/^(.*)-([0-9]+)-text$/);
247      if( matches.length > 0 ){
248        var field_id = matches[1];
249        var option_idx = matches[2];
250        if( jQuery('#'+field_id+'-'+option_idx)[0].checked && isEmpty(v) ){
251          addAFormInputErrorTitle(elm);
252          postAFormErrorLog('empty', elm, v);
253          return false;
254        }else{
255          removeAFormInputErrorTitle(elm);
256          return true;
257        }
258      }
259      return true;
260    });
261
262    jQuery.validator.addMethod('validate-upload', function(v,elm) {
263      if( !isEmpty(v) ){
264        removeAFormInputErrorTitle(elm);
265        return true;
266      }else{
267        addAFormInputErrorTitle(elm);
268        postAFormErrorLog('empty', elm, v);
269        return false;
270      }
271    });
272
273    jQuery.validator.addMethod('validate-privacy', function(v,elm) {
274      var field_id = elm.name.match(/^aform-field-[0-9]+/);
275      var reg = new RegExp( field_id );
276      var options = elm.form.getElementsByTagName('INPUT');
277      var check = false;
278      jQuery(options).each(function() {
279        if( this.name.search(reg) == -1 ){
280          return true;
281        }
282        if( this.checked ){
283          check = true;
284          return false;
285        }
286      });
287      if( check ){
288        removeAFormInputErrorTitle(elm);
289        return true;
290      }else{
291        addAFormInputErrorTitle(elm);
292        postAFormErrorLog('privacy_error', elm, '');
293        return false;
294      }
295    });
296
297    jQuery.validator.addMethod('require-twice', function(v,elm) {
298      if (match = elm.id.match(/^(.*)-confirm$/)) {
299        var orig_id = match[1];
300        var orig_elm = jQuery('#' + orig_id);
301        if (orig_elm.hasClass('error')) {
302          return true;
303        }
304        if (v == orig_elm.val()) {
305          removeAFormInputErrorTitle(elm);
306          return true;
307        }else{
308          addAFormInputErrorTitle(elm);
309          postAFormErrorLog('require_twice', elm, v);
310          return false;
311        }
312      }
313    });
314
315    jQuery.validator.addMethod('validate-name', function(v,elm) {
316      if (v.match(/%/)) {
317        addAFormInputErrorTitle(elm);
318        postAFormErrorLog('validate_name', elm, v);
319        return false;
320      }else{
321        removeAFormInputErrorTitle(elm);
322        return true;
323      }
324    });
325
326    jQuery.validator.addMethod('validate-name-kana', function(v,elm) {
327      elm.value = elm.value.toZenkakuKana();
328      if (isEmpty(elm.value) || elm.value.isKanaOnly()) {
329        removeAFormInputErrorTitle(elm);
330        return true;
331      }else{
332        addAFormInputErrorTitle(elm);
333        postAFormErrorLog('validate_name_kana', elm, v);
334        return false;
335      }
336    });
337
338    jQuery.validator.addMethod('validate-name-hiragana', function(v,elm) {
339      if (isEmpty(elm.value) || elm.value.isHiraganaOnly()) {
340        removeAFormInputErrorTitle(elm);
341        return true;
342      }else{
343        addAFormInputErrorTitle(elm);
344        postAFormErrorLog('validate_name_kana', elm, v);
345        return false;
346      }
347    });
348
349    var disable_methods = ['remote', 'minlength', 'maxlength', 'rengelength', 'min', 'max', 'range', 'email', 'url', 'date', 'dateISO', 'number', 'digits', 'creditcard', 'accept', 'equalTo', 'phoneUS'];
350    jQuery.each(disable_methods, function(idx, val) {
351      jQuery.validator.addMethod(val, function (v,elm) {
352        return true;
353      });
354    });
355}
356
357
358
359function addAFormInputErrorTitle(elm)
360{
361  if( ! elm.title.match(eval("/^"+ aform.phrases['Input error:'] +"/")) ){
362    elm.title = aform.phrases['Input error:'] + elm.title;
363  }
364}
365
366
367function removeAFormInputErrorTitle(elm)
368{
369  elm.title = elm.title.replace(eval("/"+ aform.phrases['Input error:'] +"/"), "");
370}
371
372
373function hideAFormAdvice(elm)
374{
375  var field_id = elm.id.replace(/(.*)-[0-9]+$/, "$1");
376  jQuery('#' + field_id + '-error').html('');
377}
378
379function postAFormAccessLog(aform_id)
380{
381  if (!aform || !aform.enabled_report) {
382    return;
383  }
384  var params = {
385    screen : 'form',
386    run_mode : 'access',
387    aform_id : aform_id,
388    aform_url : document.location.href,
389    first_access : Cookies.get(document.location.pathname) ? 0 : 1
390  };
391  jQuery.ajax({
392        url: aform.logger_url,
393        dataType: 'json',
394        data: params
395        }); 
396  var expires_days = 1 / 24 / 2;	// 30min
397  Cookies.set(document.location.pathname, "1", { expires: expires_days });
398}
399
400function postAFormErrorLog(type, elm, value)
401{
402  if (!aform || !aform.enabled_report) {
403    return;
404  }
405  var aform_id = elm.form.id.value;
406  var field_id = elm.name.replace(/aform-field-(\d+).*/, "$1");
407  var params = {
408    run_mode : 'error',
409    aform_id : aform_id,
410    aform_url : document.location.href,
411    type : type,
412    error_field_id : field_id,
413    error_value : value
414  };
415  jQuery.ajax({
416        url: aform.logger_url,
417        dataType: 'json',
418        data: params
419  });
420}
421
422function postAFormChecker()
423{
424  jQuery.ajax({
425    url: aform.checker_url
426  });
427}
428
429function postAFormActiveChecker(aform_id)
430{
431  jQuery('.aform-checking').show();
432  jQuery('.aform-content').hide();
433
434  var params = {
435    __mode : 'rebuild_aform',
436    aform_auto_status: aform.auto_status,
437    aform_id : aform_id
438  };
439  jQuery.ajax({
440        url: aform.checker_url,
441        dataType: 'json',
442        data: params,
443        success: reload_if_rebuild
444  }); 
445}
446
447function reload_if_rebuild(response)
448{
449  if (!response || !response.result) {
450    return;
451  }
452  if (response.result.status == 'rebuild') {
453    location.reload();
454  }
455  if (response.result.msg) {
456    jQuery('.aform-checking').html(response.result.msg);
457  } else {
458    jQuery('.aform-checking').hide();
459    jQuery('.aform-content').show();
460  }
461}
462
463function regist_ajax_upload(field_id, size, type){
464  var ext = '';
465  if( type != '' ){
466    var types = type.split(',');
467    for( i = 0; i < types.length; i++ ){
468      types[i] = '*.' + types[i].replace(/^\s+|\s+$/g, '');
469    }
470    ext = types.join(';');
471  }
472  if( size <= 0 ){
473    size = '';
474  }
475  jQuery('#aform-upload-button-' + field_id).fileUpload({
476    'script' : aform.upload_script_url,
477    'uploader' : aform.static_uri + 'plugins/AForm/js/jquery.uploadify/uploader.swf',
478    'cancelImg' : aform.static_uri + 'plugins/AForm/js/jquery.uploadify/cancel.png',
479//    'buttonImg' : aform.static_uri + 'plugins/AForm/js/jquery.uploadify/button.gif',
480    'auto' : true,
481    'sizeLimit' : size,
482    'fileDesc' : ext,
483    'fileExt' : ext,
484    'fileDataName' : 'upload_file',
485    'scriptData' : {
486      run_mode : 'upload',
487      aform_id : 1,
488      field_id : field_id
489    },
490    'onComplete' : function(event, queueID, fileObj, responseText, data){
491      var response = eval("(" + responseText + ")");
492      jQuery('#aform-upload-info-' + field_id).text(fileObj.name + response.message);
493      switch( response.result ){
494      case 'success':
495        jQuery('#aform-field-' + field_id).val(response.id);
496        jQuery('#aform-upload-name-' + field_id).val(fileObj.name);
497        jQuery('#aform-upload-remove-' + field_id).show();
498        jQuery('#advice-validate-upload-aform-field-' + field_id).hide();
499        break;
500      default:
501        jQuery('#aform-field-' + field_id).val('');
502        jQuery('#aform-upload-name-' + field_id).val('');
503        jQuery('#aform-upload-remove-' + field_id).hide();
504        break;
505      }
506      this.enable();
507    },
508    onError : function(event, queueID, fileObj, errorObj){
509      switch( errorObj.type ){
510      case 'File Size':
511        jQuery("#" + event.target.id + queueID + " .fileName").text("エラー : ファイルサイズオーバー " + fileObj.name);
512        break;
513      default:
514        alert('error!' + errorObj.type);
515        break;
516      }
517      return false;
518    }
519  });
520}
521
522function remove_upload(field_id){
523  jQuery('#aform-upload-info-' + field_id).text('');
524  jQuery('#aform-field-' + field_id).val('');
525  jQuery('#aform-upload-name-' + field_id).val('');
526  jQuery('#aform-upload-remove-' + field_id).hide();
527  Validation.reset($('aform-field-' + field_id));
528}
529
530function get_aform_parameter(parts_id, parameter_name){
531  if( isEmpty(parameter_name) ){
532    return false;
533  }
534  var val = jQuery.query.get(parameter_name);
535  jQuery('#' + parts_id).val(val);
536  jQuery('#' + parts_id + '-text').text(val);
537}
538
539function set_datepicker(parts_id, datepicker_settings) {
540  let range_from = datepicker_settings.range_from;
541  let range_to = datepicker_settings.range_to;
542  let default_value = datepicker_settings.default_value;
543  let disable_dates = datepicker_settings.disable_dates;
544  let limited_weeks = datepicker_settings.limited_weeks;
545  let available_weeks = datepicker_settings.available_weeks;
546
547  init_aform_calendar(parts_id, default_value);
548
549  var range_from_ymd = new Date(range_from, 1-1, 1);
550  if (aform.range_from && aform.range_from[parts_id]) {
551    range_from_ymd = aform.range_from[parts_id];
552    var msg = aform.range_from_msg.replace("%date%", range_from_ymd.getFullYear() +'/'+ (range_from_ymd.getMonth() + 1) +'/'+ range_from_ymd.getDate());
553    jQuery('#'+ parts_id +'-dd').attr('title', msg);
554    jQuery('#'+ parts_id +'-yy,#'+ parts_id +'-mm').change(function() {
555      jQuery('#'+ parts_id +'-dd').valid();
556    });
557  }
558
559  var yearRange = range_from +':'+ range_to;
560  jQuery('#' + parts_id).datepicker({
561    showOn: 'button',
562    buttonImage: aform.static_uri + 'plugins/AForm/images/calendar.gif',
563    buttonImageOnly: true,
564    changeMonth: true,
565    changeYear: true,
566    yearRange: yearRange,
567    minDate: range_from_ymd,
568    maxDate: new Date(range_to, 12-1, 31),
569    beforeShow: function(){
570      var yy = jQuery('#' + parts_id + '-yy').val();
571      var mm = jQuery('#' + parts_id + '-mm').val();
572      var dd = jQuery('#' + parts_id + '-dd').val();
573      if( yy > 0 && mm > 0 && dd > 0 ){
574        jQuery(this).datepicker('setDate', new Date(yy, mm-1, dd));
575      }
576    },
577    beforeShowDay: function(day) {
578      var mm = ("00" + (day.getMonth() + 1)).slice(-2);
579      var dd = ("00" + day.getDate()).slice(-2);
580      var ymd = day.getFullYear() + '' + mm + '' + dd;
581      var week = day.getDay();
582
583      var disable_date = disable_dates[ymd];
584      if (disable_date) {
585        return [false, "", disable_date.title];
586      }
587      if (limited_weeks) {
588        if (Array.isArray(available_weeks) && jQuery.inArray(week+'', available_weeks) < 0) {
589          return [false, ""];
590        }
591      }
592
593      return [true, ""];
594    },
595    onSelect: function() {
596      var date = jQuery(this).datepicker('getDate');
597      var elm_yy = jQuery('#' + parts_id + '-yy');
598      var elm_mm = jQuery('#' + parts_id + '-mm');
599      var elm_dd = jQuery('#' + parts_id + '-dd');
600      jQuery(elm_yy).val(date.getFullYear());
601      jQuery(elm_mm).val(date.getMonth()+1);
602      jQuery(elm_dd).val(date.getDate());
603      jQuery(elm_yy).trigger('change');
604      jQuery(elm_mm).trigger('change');
605      jQuery(elm_dd).trigger('change');
606      jQuery(elm_yy).valid();
607      jQuery(elm_mm).valid();
608      jQuery(elm_dd).valid();
609    }
610  });
611}
612
613function init_aform_calendar(parts_id, default_value) {
614  var elm_yy = jQuery('#' + parts_id + '-yy');
615  var elm_mm = jQuery('#' + parts_id + '-mm');
616  var elm_dd = jQuery('#' + parts_id + '-dd');
617
618  if (jQuery(elm_yy).val() != '' || jQuery(elm_mm).val() != '' || jQuery(elm_dd).val() != '') {
619    return;
620  }
621
622  var date = new Date();
623  var yy = date.getFullYear();
624  var mm = date.getMonth() + 1;
625  var dd = date.getDate();
626
627  if (match = default_value.match(/([\+\-]\d+)((day|month|year))/)) {
628    var offset = parseInt(match[1]);
629    var type = match[2];
630    if (type == "day") {
631      date.setTime(date.getTime() + offset * 60*60*24*1000);
632      yy = date.getFullYear();
633      mm = date.getMonth() + 1;
634      dd = date.getDate();
635    }
636    else if (type == "month") { 
637      mm += offset;
638      if (mm > 12) {
639        yy += 1;
640        mm -= 12;
641      }
642      if (mm < 1) {
643        yy -= 1;
644        mm += 12;
645      }
646    }
647    else if (type == "year") {
648      yy += offset;
649    }
650    // fix date
651    var check_date = new Date(yy, mm, 0);
652    if (dd > check_date.getDate()) {
653      dd = check_date.getDate();
654    }
655  } else if (default_value == 'today') {
656    // 
657  } else {
658    return;
659  }
660  // set dropdown
661  jQuery(elm_yy).val(yy);
662  jQuery(elm_mm).val(mm);
663  jQuery(elm_dd).val(dd);
664}
665
666function aform_set_reserve_events(){
667  jQuery('.aform-reserve-date').each(function(){
668    aform_set_reserve_plan_list(this);
669  });
670  jQuery('.aform-reserve-date').change(function(){
671    aform_set_reserve_plan_list(this);
672  });
673  jQuery('.aform-reserve-plan-id').each(function(){
674    aform_set_reserve_option_list(this);
675  });
676  jQuery('.aform-reserve-plan-id').change(function(){
677    aform_set_reserve_option_list(this);
678  });
679}
680
681function aform_set_reserve_plan_list(date_parts){
682    var parts_id;
683    if( match = date_parts.id.match(/^(.+)-date$/) ){
684      parts_id = match[1];
685    }
686    if( !parts_id ){
687      return;
688    }
689    var plan_select = jQuery('#'+ parts_id +'-plan-id');
690    plan_select.empty();
691    var date_value = jQuery(date_parts).val();
692    var plan_items = '<option value="">-</option>';
693    var plans = aformReserveOptionValues[date_value];
694    jQuery(plans).each(function() {
695      plan_items += '<option value="' + this['id'] + '">' + this['name'] + '</option>';
696    })
697    plan_select.append(plan_items);
698    plan_select.trigger("change");
699}
700
701function aform_set_reserve_option_list(plan_parts){
702    var parts_id;
703    if( match = plan_parts.id.match(/^(.+)-plan-id$/) ){
704      parts_id = match[1];
705    }
706    if( !parts_id ){
707      return;
708    }
709    var date_parts = jQuery('#'+ parts_id +'-date');
710    if( !date_parts ){
711      return;
712    }
713    var date_value = jQuery(date_parts).val();
714    var plan_id = jQuery(plan_parts).val();
715
716    var option_value_select = jQuery('#'+ parts_id +'-option-value-id');
717    option_value_select.empty();
718    var option_items = '<option value="">-</option>';
719    var exists_option = false;
720    if (date_value && plan_id) {
721      var plans = aformReserveOptionValues[date_value];
722      jQuery(plans).each(function() {
723          if (this.id == plan_id) {
724              var option_values = this['option_values'];
725              jQuery(option_values).each(function() {
726                  option_items += '<option value="' + this['id'] + '">' + this['name'] + '</option>';
727                  exists_option = true;
728              });
729          }
730      });
731    }
732    option_value_select.append(option_items);
733
734    if (exists_option) {
735        option_value_select.removeAttr('disabled', '');
736        option_value_select.show();
737    }else{
738        option_value_select.attr('disabled', 'disabled');
739        option_value_select.hide();
740    }
741}
742
743CheckNextStep = {};
744CheckNextStep.vars = {};
745CheckNextStep.check = function(me, max_length, e) {
746    var value = jQuery(me).val();
747    if (value.length < max_length) {
748        return ;
749    }
750    // 矢印キー、TAB、Shift の場合は何もしない
751    var denyKey = [37,38,39,40,9,16];
752    for (var i = 0 ; i < denyKey.length ; i++) {
753        if (e.keyCode == denyKey[i]) {
754            return ;
755        }
756    }
757    value = value.substr(0, max_length); // オーバー分は切る
758    jQuery(me).val(value);
759    
760    if (match = jQuery(me).attr("id").match(/(\d+)$/)) {
761        var next_num = parseInt(match[1],10) + 1;
762        var next_id  = jQuery(me).attr("id").replace(/\d+$/, next_num);
763        jQuery("#"+next_id).focus();
764    } else {
765        jQuery(me).blur();
766    }
767}
768
769function aform_ignore_validate(elm) {
770    if (jQuery(elm).hasClass('require-twice')) {
771        return true;
772    }
773    return false;
774}
775
776jQuery(window).on('load', function(){
777  if (typeof aform === "undefined") {
778    return;
779  }
780
781  // process confirm
782  if (typeof aform_confirm !== "undefined") {
783    return documentReadyFormConfirm();
784  }
785
786  // parameter parts
787  if (aform.parameters) {
788    jQuery.each(aform.parameters, function(key, val) {
789      get_aform_parameter(key, val);
790    });
791  }
792  // calendar parts
793  if (aform.datepickers) {
794    jQuery.each(aform.datepickers, function(key, val) {
795      set_datepicker(key, val);
796    });
797  }
798  // relations
799  if (aform.relations) {
800    jQuery.each(aform.relations, function(parts_id, conditions) {
801      var selector = 'input.'+ parts_id +', select.'+ parts_id +', textarea.'+ parts_id +', file.'+ parts_id;
802      jQuery(selector).change(function() {
803        var val = jQuery(this).val();
804        if (jQuery(this).attr("type") == "radio") {
805          val = jQuery('input[name="'+ this.name +'"]:checked').val();
806        }
807        if (jQuery(this).hasClass("aform-field-option-text")) {
808          return;
809        }
810        jQuery.each(conditions, function(idx, condition) {
811          var show = false;
812          if (condition.cond == '==') {
813            show = (val == condition.value);
814          } else if (condition.cond == '!=') {
815            show = (val != condition.value);
816          }
817          if (show) {
818            jQuery('.'+ condition.parts_id).show().prop("disabled", false);
819            jQuery('.dl_'+ condition.parts_id).show();
820          } else {
821            jQuery('.'+ condition.parts_id).hide().prop("disabled", true);
822            jQuery('.dl_'+ condition.parts_id).hide();
823          }
824        });
825      });
826      jQuery(selector).trigger("change");
827    });
828  }
829  // ajax check
830  if (aform.require_ajax_check) {
831    postAFormActiveChecker(aform.id);
832  }
833  if (aform.is_active == 'published') {
834    postAFormAccessLog(aform.id);
835    postAFormChecker();
836    addAFormValidate();
837    var validate_options = {
838      ignore: [],
839      onkeyup: false,
840//      wrapper: "div",
841//      showErrors: aformValidate_showErrors,
842      errorPlacement: aformValidate_errorPlacement
843    };
844    if (!parseInt(aform.check_immediate)) {
845      validate_options.onfocusout = false;
846    }
847    // payment
848    aform_set_payment_events();
849    jQuery('#aform-form-'+ aform.id).validate(validate_options);
850    // checkbox parts
851    jQuery('.aform-checkbox').click(function() {
852      jQuery(this).valid();
853    });
854  }
855  // reserve
856  aform_set_reserve_events();
857  // reCAPTCHA
858  aform_set_recaptcha_events();
859  // paging
860  if (aform.pages) {
861    aform_set_paging_events();
862  }
863  // upload parts
864  jQuery('.clear_upload').click(function() {
865    var parts_id = jQuery(this).data('parts_id');
866    jQuery('#'+ parts_id).val('');
867  });
868  // others
869  if (aform.documentReadyFunctions) {
870    for (var i = 0; i < aform.documentReadyFunctions.length; i++) {
871      aform.documentReadyFunctions[i]();
872    }
873  }
874});
875
876function aform_set_paging_events() {
877  jQuery(document).ready(function() {
878    // disable enter key(13) on input field
879    jQuery('input').keydown(function(e){
880      if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) {
881        return false;
882      } else {
883        return true;
884      }
885    });
886
887    // show top page
888    jQuery('.aform_page').hide();
889    jQuery('#aform_page_1').show();
890
891    jQuery(aform.pages).each(function() {
892      var page = this;
893      // prev button
894      if (page.prev) {
895        jQuery('#'+ page.prev.btn).click(function() {
896          // show prev page
897          jQuery('.aform_page').hide();
898          jQuery('#'+ page.prev.page).show();
899          document.getElementById(page.prev.page).scrollIntoView({ behavior: 'smooth' });
900        });
901      }
902      // next button
903      if (page.next) {
904        jQuery('#'+ page.next.btn).click(function() {
905          // validate
906          var check = true;
907          jQuery(page.parts_ids).each(function() {
908            var elm = jQuery('.'+ this +'.aform-validate');
909            if (elm.length && !elm.prop('disabled') && !elm.valid()) {
910              // focus if first error
911              if (check == true) {
912                elm.focus();
913              }
914              check = false;
915            }
916          });
917          if (!check) {
918            return false;
919          }
920          // show next page
921          jQuery('.aform_page').hide();
922          jQuery('#'+ page.next.page).show();
923          document.getElementById(page.next.page).scrollIntoView({ behavior: 'smooth' });
924        });
925      }
926    });
927  });
928}
929
930///////////////
931// payments
932function is_payment_method_selected(method) {
933  if (Object.keys(aform.payment.methods).length > 1) {
934    return (jQuery('[name="aform-field-'+ aform.payment.field_id +'"]:checked').val() == method.key);
935  } else {
936    return (jQuery('#'+ aform.payment.parts_id +'-'+ method.key).val() == method.key);
937  }
938}
939function update_payment_method_fields() {
940  jQuery(Object.keys(aform.payment.methods)).each(function(index, key) {
941    if (is_payment_method_selected(aform.payment.methods[key])) {
942      jQuery('#'+ aform.payment.parts_id +'-'+ key +'-cc_info').show();
943    } else {
944      jQuery('#'+ aform.payment.parts_id +'-'+ key +'-cc_info').hide();
945    }
946  });
947}
948function init_card_fields(method) {
949  jQuery('#'+ aform.payment.parts_id +'-'+ method.key +'-cardnumber1').keyup(function(e){ CheckNextStep.check(this,4,e); });
950  jQuery('#'+ aform.payment.parts_id +'-'+ method.key +'-cardnumber2').keyup(function(e){ CheckNextStep.check(this,4,e); });
951  jQuery('#'+ aform.payment.parts_id +'-'+ method.key +'-cardnumber3').keyup(function(e){ CheckNextStep.check(this,4,e); });
952  jQuery.validator.addMethod(method.key + '-cardnumber', function(v, elm) {
953    if (!is_payment_method_selected(method)) {
954      return true;
955    }
956    if (elm.id == aform.payment.parts_id +"-"+ method.key +"-cardnumber4") {
957      if (v.match(/^\d{2,4}$/)) {
958        return true;
959      }
960    } else {
961      if (v.match(/^\d{4}$/)) {
962        return true;
963      }
964    }
965    return false;
966  });
967  jQuery.validator.addMethod(method.key +'-expmm', function(v, elm) {
968    if (!is_payment_method_selected(method)) {
969      return true;
970    }
971    return (!isEmpty(v));
972  });
973  jQuery.validator.addMethod(method.key +'-expyy', function(v, elm) {
974    if (!is_payment_method_selected(method)) {
975      return true;
976    }
977    return (!isEmpty(v));
978  });
979  jQuery.validator.addMethod(method.key +'-cvv', function(v, elm) {
980    if (!is_payment_method_selected(method)) {
981      return true;
982    }
983    if (v.match(/^\d{3,4}$/)) {
984      return true;
985    }
986    return false;
987  });
988}
989function aform_set_payment_events() {
990  jQuery('[name="aform-field-'+ aform.payment.field_id +'"]').click(function() {
991    update_payment_method_fields();
992  });
993  update_payment_method_fields();
994  // ecash
995  if (aform.payment.methods.ecash) {
996    init_card_fields(aform.payment.methods.ecash);
997  }
998  // remise
999  if (aform.payment.methods.remise) {
1000    init_card_fields(aform.payment.methods.remise);
1001  }
1002  // cc_zeus
1003  if (aform.payment.methods.cc_zeus) {
1004    if (aform.payment.methods.cc_zeus.use_token_type) {
1005      init_cc_zeus_token();
1006    } else {
1007      init_card_fields(aform.payment.methods.cc_zeus);
1008    }
1009  }
1010}
1011// cc_zeus token type
1012function cc_zeus_token_clear_error() {
1013  jQuery('#zeus_token_card_error').html('');
1014}
1015
1016function cc_zeus_token_add_error(msg) {
1017  jQuery('#zeus_token_card_error').append('<div>' + msg + '</div>');
1018}
1019
1020function cc_zeus_token_validate() {
1021  var results = true;
1022  var first_error_elm = null;
1023
1024  cc_zeus_token_clear_error();
1025
1026  var elm = jQuery('#zeus_token_card_number');
1027  if (!elm.val().match(/^\d{14,16}$/)) {
1028    cc_zeus_token_add_error(aform.payment.methods.cc_zeus.msgs.cc_number_error);
1029    results = false;
1030    if (!first_error_elm) { first_error_elm = elm; }
1031  }
1032
1033  var exp_mm_elm = null;
1034  elm = jQuery('#zeus_token_card_expires_month');
1035  if (!elm.val().match(/^\d{2}$/)) {
1036    cc_zeus_token_add_error(aform.payment.methods.cc_zeus.msgs.cc_exp_mm_error);
1037    results = false;
1038    if (!first_error_elm) { first_error_elm = elm; }
1039  } else {
1040    exp_mm_elm = elm;
1041  }
1042
1043  var exp_yy_elm = null;
1044  elm = jQuery('#zeus_token_card_expires_year');
1045  if (!elm.val().match(/^\d{4}$/)) {
1046    cc_zeus_token_add_error(aform.payment.methods.cc_zeus.msgs.cc_exp_yy_error);
1047    results = false;
1048    if (!first_error_elm) { first_error_elm = elm; }
1049  } else {
1050    exp_yy_elm = elm;
1051  }
1052
1053  if (exp_yy_elm && exp_mm_elm) {
1054    var date = new Date(exp_yy_elm.val(), exp_mm_elm.val(), 0);
1055    var today = new Date();
1056    if (date.getTime() < today.getTime()) {
1057      cc_zeus_token_add_error(aform.payment.methods.cc_zeus.msgs.cc_exp_error);
1058      results = false;
1059      if (!first_error_elm) { first_error_elm = exp_mm_elm; }
1060    }
1061  }
1062
1063  elm = jQuery('#zeus_token_card_cvv');
1064  if (!elm.val().match(/^\d{3,4}$/)) {
1065    cc_zeus_token_add_error(aform.payment.methods.cc_zeus.msgs.cc_cvv_error);
1066    results = false;
1067    if (!first_error_elm) { first_error_elm = elm; }
1068  }
1069
1070  elm = jQuery('#zeus_token_card_name');
1071  if (!elm.val().match(/^[A-Z ]+$/)) {
1072    cc_zeus_token_add_error(aform.payment.methods.cc_zeus.msgs.cc_owner_error);
1073    results = false;
1074    if (!first_error_elm) { first_error_elm = elm; }
1075  }
1076
1077  if (first_error_elm) {
1078    first_error_elm.focus();
1079  }
1080
1081  return results;
1082}
1083function init_cc_zeus_token() {
1084  var btn_confirm = jQuery('#aform_btn_confirm_'+ aform.id);
1085
1086  var zeus_token_ok = false;
1087  jQuery.validator.setDefaults({ ignore: '#zues_token_card_number,#zeus_token_card_expires_month,#zeus_token_card_expires_year,#zeus_token_card_cvv,#zeus_token_card_name' });
1088  jQuery.validator.addMethod('validate-cc-zeus', function(v,elm) {
1089    if (!is_payment_method_selected(aform.payment.methods.cc_zeus)) {
1090      return true;
1091    }
1092
1093    if (zeus_token_ok) {
1094      return true;
1095    }
1096
1097    if (!cc_zeus_token_validate()) {
1098      jQuery('#zeus_token_card_error').show();
1099      return false;
1100    }
1101
1102    btn_confirm.prop('disabled', true);
1103    zeusToken.getToken(function(zeus_token_response_data) {
1104      if (!zeus_token_response_data['result']) {
1105        var msgs = zeusToken.getErrorMessage(zeus_token_response_data['error_code']).split(' : ');
1106        cc_zeus_token_add_error(msgs[1]);
1107        jQuery('#zeus_token_card_error').show();
1108        jQuery('#zeus_token_card_number').focus();
1109      } else {
1110        cc_zeus_token_clear_error();
1111        jQuery('#zeus_token_card_error').hide();
1112        zeus_token_ok = true;
1113      }
1114    });
1115    btn_confirm.prop('disabled', false);
1116    return zeus_token_ok;
1117  });
1118}
1119
1120
1121// confirm
1122function documentReadyFormConfirm() {
1123    if (aform.use_xhr) {
1124      jQuery('#aform-confirm-form').submit(function() {
1125        return submitAFormConfirm();
1126      });
1127    }
1128}
1129
1130function submitAFormConfirm() {
1131  jQuery('#aform_confirm_msg').hide();
1132  jQuery('#aform_btn_submit').attr('disabled', 'disabled');
1133  jQuery('#aform_btn_back').attr('disabled', 'disabled');
1134
1135  jQuery('#use_js').val(1);
1136  jQuery.ajax ({
1137        type: "POST",
1138        url: jQuery('#aform-confirm-form').attr('action'),
1139        data: jQuery('#aform-confirm-form').serialize(),
1140        success: function(result, dataType) {
1141          jQuery('#aform_result').html(result);
1142          return false;
1143        },
1144        error: function(result, dataType) {
1145          alert('Ajax error');
1146        }
1147      });
1148  return false;
1149}
1150
1151// reCAPTCHA
1152function aform_recaptcha_onSubmit(token) {
1153  aform.recaptcha.token = token;
1154  jQuery('#aform-form-' + aform.id).submit();
1155}
1156
1157function aform_set_recaptcha_events() {
1158  if (aform.recaptcha && aform.recaptcha.enable) {
1159    var form = jQuery('#aform-form-' + aform.id);
1160    jQuery(form).submit(function() {
1161      if (form.valid()) {
1162        if (!aform.recaptcha.token) {
1163          grecaptcha.reset();
1164          grecaptcha.execute();
1165        } else {
1166          aform.recaptcha.token = '';
1167          return true;
1168        }
1169      }
1170      return false;
1171    });
1172  }
1173}
1174
1175function aform_is_ascii(str) {
1176  if (str.match(/[^\x21-\x7E]/)) {
1177    return false;
1178  }
1179  return true;
1180}
1181

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.