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.