1function _CardAPI() {} 2var CardAPI = new _CardAPI(); 3 4/* ¨CÉüèîñCookieÅåo^ */ 5var FAVORITE_COOKIE_MAX = '99'; 6 7/* {ðCookieÅåo^ */ 8var HISTORY_COOKIE_MAX = '4'; 9 10/* J[hÆïAPI ¨CÉüèJ[hêæ¾ AjaxURL */ 11var AJAX_URL_FAVORITE_CARDLIST = '/iss-pc/common/card/api/cardInquiryAPIFavoriteCardList.html'; 12 13/* J[hÆïAPI J[h{ðÆï AjaxURL */ 14var AJAX_URL_HISTORY_CARDLIST = '/iss-pc/common/card/api/cardInquiryAPIHistoryCardList.html'; 15 16/* J[hÆïAPI J[hêiiÝEõðpjæ¾ AjaxURL */ 17var AJAX_URL_REFINE_CARDLIST = '/iss-pc/common/card/api/cardInquiryAPIRefineCardList.html'; 18 19/* J[hÆïAPI J[hêiiÝEJ[hIDpjæ¾ AjaxURL */ 20var AJAX_URL_REFINECARDID_CARDLIST = '/iss-pc/common/card/api/cardInquiryAPIRefineCardIdCardList.html'; 21 22/* J[hÆïAPI ärJ[hîñÚ׿¾ AjaxURL */ 23var AJAX_URL_COMPARE_CARDDETAIL = '/iss-pc/common/card/api/cardInquiryAPICompareCardDetail.html'; 24 25/* J[hÆïAPI J[hîñÚ׿¾ AjaxURL */ 26var AJAX_URL_CARDDETAIL = '/iss-pc/common/card/api/cardInquiryAPICardDetail.html'; 27 28/* ¨CÉüèîñCookie¼ */ 29var FAVORITE_COOKIE_NAME = 'jcbCardFavorite'; 30 31/* {ðCookie¼ */ 32var HISTORY_COOKIE_NAME = 'jcbCardHistory'; 33 34/* ärîñzñ */ 35var compareList = []; 36 37/* CookieLøúÀi90új */ 38var COOKIE_MAX_AGE = 90; 39 40/** 41 * ¨CÉüèÆïB 42 * 43 * @param cardId J[hID 44 * @returns ¨CÉüèo^óÔBtrue: o^ èAfalse: o^ȵ 45 */ 46_CardAPI.prototype.getFavoriteStatus = function(cardId) { 47 48 // Cookie`FbN 49 checkCookie(); 50 51 // Cookieæ¾ 52 var cookie = $.cookie(FAVORITE_COOKIE_NAME); 53 54 // ¨CÉüèîñÉøÌJ[hIDª¶Ý·éêAtrueðÔp·é 55 return checkExist(cookie, cardId); 56} 57 58/** 59 * ¨CÉüèJ[ho^ ðB 60 * 61 * @param cardId J[hID 62 * @returns ¨CÉüèo^ÊB1: ¨CÉüèo^¬÷A2: ¨CÉüèð¬÷ 63 */ 64_CardAPI.prototype.changeFavoriteStatus = function(cardId) { 65 66 // Cookie`FbN 67 checkCookie(); 68 69 // o^·éJ[hIDÌ¢Ýè`FbN 70 if (isEmpty(cardId)) { 71 throw new SystemError(); 72 } 73 74 // ¨CÉüèCookieÖÌo^^ð 75 return cookieRegistOrRelease(FAVORITE_COOKIE_NAME, cardId, FAVORITE_COOKIE_MAX, COOKIE_MAX_AGE); 76} 77 78/** 79 * ¨CÉüèJ[hîñêæ¾B 80 * 81 * @param page æ¾y[W 82 */ 83_CardAPI.prototype.getBookmarkCardList = function(page) { 84 85 // Cookie`FbN 86 checkCookie(); 87 88 try { 89 // J[hîñæ¾ 90 return callAjax( 91 AJAX_URL_FAVORITE_CARDLIST, 92 { 93 'page' : emptyConversionEncodeURI(page), 94 'favoriteCardIds' : emptyConversionEncodeURI($.cookie(FAVORITE_COOKIE_NAME)) 95 }); 96 } 97 catch (e) { 98 // ü´ñnG[ª¶µ½êACookieðí 99 removeTargetCookie(e, FAVORITE_COOKIE_NAME); 100 throw e; 101 } 102} 103 104/** 105 * ¨CÉüèJ[hîñê¶Ý»èæ¾B 106 * 107 */ 108_CardAPI.prototype.isBookmarkCardList = function() { 109 110 // Cookie`FbN 111 checkCookie(); 112 113 // J[hîñê¶Ý»è 114 return $.cookie(FAVORITE_COOKIE_NAME) != ""; 115} 116 117/** 118 * J[h{ðo^B 119 * 120 * @param parentCardId ã\J[hID 121 */ 122_CardAPI.prototype.addCardHistoryList = function(parentCardId) { 123 124 // Cookie`FbN 125 checkCookie(); 126 127 // o^·éJ[hIDÌ¢Ýè`FbN 128 if (isEmpty(parentCardId)) { 129 throw new SystemError(); 130 } 131 132 // {ðCookieÖÌo^^ð 133 var ret = cookieRegistOrRelease(HISTORY_COOKIE_NAME, parentCardId, HISTORY_COOKIE_MAX, COOKIE_MAX_AGE); 134 135 // CookieððsÁ½êAÄo^ 136 if (ret == '2') { 137 addCookieFirst(HISTORY_COOKIE_NAME, $.cookie(HISTORY_COOKIE_NAME), parentCardId, COOKIE_MAX_AGE); 138 } 139} 140 141/** 142 * J[h{ðÆïB 143 * 144 * @param displayNumber \¦ 145 */ 146_CardAPI.prototype.getCardHistory = function(displayNumber) { 147 148 // Cookie`FbN 149 checkCookie(); 150 151 try { 152 // J[hîñæ¾ 153 return callAjax( 154 AJAX_URL_HISTORY_CARDLIST, 155 { 156 'displayNumber' : emptyConversionEncodeURI(displayNumber), 157 'cardIds' : emptyConversionEncodeURI($.cookie(HISTORY_COOKIE_NAME)) 158 }); 159 } 160 catch (e) { 161 // ü´ñnG[ª¶µ½êACookieðí 162 removeTargetCookie(e, HISTORY_COOKIE_NAME); 163 throw e; 164 } 165} 166 167/** 168 * J[hêiÝBiõðpj 169 * 170 * @param searchInfo õðîñ 171 * @param page æ¾y[W 172 */ 173_CardAPI.prototype.searchCardList = function(searchInfo, page) { 174 175 // J[hîñæ¾ 176 return callAjax( 177 AJAX_URL_REFINE_CARDLIST, 178 { 179 'searchInfo' : emptyConversionEncodeURI(searchInfo), 180 'page' : emptyConversionEncodeURI(page) 181 }); 182} 183 184/** 185 * J[hêiÝBiJ[hIDpj 186 * 187 * @param cardIds J[hID 188 * @param page æ¾y[W 189 */ 190_CardAPI.prototype.serachCardListByCardId = function(cardIds, page) { 191 192 // J[hîñæ¾ 193 return callAjax( 194 AJAX_URL_REFINECARDID_CARDLIST, 195 { 196 'cardIds' : emptyConversionEncodeURI(cardIdListToCsv(cardIds)), 197 'page' : emptyConversionEncodeURI(page) 198 }); 199} 200 201/** 202 * ärpJ[ho^B 203 * 204 * @param cardId J[hID 205 * @returns ärpJ[ho^ÊBtrue: o^¬÷Afalse: o^¸s 206 */ 207_CardAPI.prototype.addCompareCard = function(cardId) { 208 209 // o^·éJ[hIDÌ¢Ýè`FbN 210 if (isEmpty(cardId)) { 211 throw new SystemError(); 212 } 213 214 if (checkArrayExist(compareList, cardId)) { 215 // ärîño^ èÌêAI¹ 216 return false;
217 } 218 else { 219 // ãLÈOio^ȵjÌêAVKo^·é 220 221 // zñÌöÉJ[hIDðÇÁ 222 compareList.push(cardId); 223 return true; 224 } 225} 226 227/** 228 * ärpJ[hðB 229 * 230 * @param cardId J[hID 231 * @returns ärpJ[hðÊBtrue: ð¬÷Afalse: ð¸s 232 */ 233_CardAPI.prototype.delCompareCard = function(cardId) { 234 235 if (checkArrayExist(compareList, cardId)) { 236 // ärîño^ èÌêAo^ðð 237 releaseArrayCardId(compareList, cardId); 238 return true; 239 } 240 else { 241 // ãLÈOio^ȵjÌêAI¹ 242 return false; 243 } 244} 245 246/** 247 * ärpJ[hÆïB 248 * 249 * @param cardId J[hID 250 * @returns ärpJ[ho^óÔBtrue: o^ èAfalse: o^ȵ 251 */ 252_CardAPI.prototype.getCompareStatus = function(cardId) { 253 254 // ärîñÉøÌJ[hIDª¶Ý·éêAtrueðÔp·é 255 return checkArrayExist(compareList, cardId); 256} 257 258/** 259 * »ÝärJ[hæ¾B 260 * 261 * @returns ärJ[hê 262 */ 263_CardAPI.prototype.getCompareCardList = function() { 264 265 return compareList; 266} 267 268/** 269 * ärJ[hÚ×îñêæ¾B 270 */ 271_CardAPI.prototype.getCompareCardDetailList = function() { 272 273 // J[hîñæ¾ 274 return callAjax( 275 AJAX_URL_COMPARE_CARDDETAIL, 276 { 277 'cardIds' : emptyConversionEncodeURI(compareList.join(',')) 278 }); 279} 280 281/** 282 * J[hîñÚ׿¾B 283 * 284 * @param cardIdArray J[hIDzñiargumentsðgpµÄó¯æéj 285 */ 286_CardAPI.prototype.getCardDetail = function() { 287 288 // argumentsðArrayÉÏ· 289 var cardIdArray = Array.prototype.slice.call(arguments, 0); 290 291 // J[hîñæ¾ 292 return callAjax( 293 AJAX_URL_CARDDETAIL, 294 { 295 'cardIds' : emptyConversionEncodeURI(cardIdListToCsv(cardIdArray)) 296 }); 297} 298 299/** 300 * lªóÌêAtrueðÔp·éB»êÈOÌêAfalseB 301 */ 302function isEmpty(value) { 303 if (value == undefined || value == null || value == '') { 304 return true; 305 } 306 return false; 307} 308 309/** 310 * uEUÌCookieÝ誳øÈêÉgp·éáOIuWFNgB 311 * 312 * @param message áOG[bZ[WBbZ[WðwèµÈ¢êÍftHgÌbZ[WðÝè·éB 313 */ 314var CookieDisabledError = function(message) { 315 this.name = 'CookieDisabledError'; 316 this.message = message; 317} 318 319CookieDisabledError.prototype = new Error(); 320CookieDisabledError.prototype.constructor = CookieDisabledError; 321 322/** 323 * VXeáOIuWFNgB 324 * 325 * @param message áOG[bZ[WBbZ[WðwèµÈ¢êÍftHgÌbZ[WðÝè·éB 326 */ 327var SystemError = function(message) { 328 this.name = 'SystemError'; 329 this.message = message; 330} 331 332SystemError.prototype = new Error(); 333SystemError.prototype.constructor = SystemError; 334 335/** 336 * CookieLø`FbNB 337 * Cookieª³øÈêAܽÍCookieÌÝèàeªs³ÈêACookieDisabledErrorðthrow·éB 338 */ 339function checkCookie() { 340 341 $.cookie('_cookie_script_check_flg','fine'); 342 var cookie_script_check_flg = $.cookie('_cookie_script_check_flg'); 343 if (isEmpty(cookie_script_check_flg)) { 344 throw new CookieDisabledError(); 345 } 346 $.removeCookie('_cookie_script_check_flg','none'); 347} 348 349/** 350 * ó¯æÁ½îñð³ÉACookieÖÌo^^ððs¤B 351 * 352 * @param cookieName Cookie¼ 353 * @param cardId J[hID 354 * @param maxCount Åå 355 * @param maxAge CookieLøúÀibj 356 * @returns CookieÉo^µ½êA1Bo^ððµ½êA2B 357 */ 358function cookieRegistOrRelease(cookieName, cardId, maxCount, maxAge) { 359 360 // Cookieæ¾ 361 var cookie = $.cookie(cookieName); 362 363 if (checkExist(cookie, cardId)) { 364 // CookieÉo^ÏÝÌêAo^ðð 365 releaseCardId(cookieName, cookie, cardId, maxAge); 366 return 2; 367 } 368 else { 369 // ãLÈOiCookieÉ¢o^jÌêAVKo^ 370 371 // o^ªÅåÌêAêÔâîñðí 372 cookie = releaseOldCardId(cookie, maxCount); 373 374 // CookieÌæªÉJ[hIDðÇÁ 375 addCookieFirst(cookieName, cookie, cardId, maxAge); 376 return 1; 377 } 378} 379 380/** 381 * ó¯æÁ½CookieîñÉJ[hIDª¶Ý·é©`FbNðs¤B 382 * 383 * @param cookieValue Cookieîñ 384 * @param cardId J[hID 385 * @returns CookieîñÉJ[hIDª¶Ý·éêAtrueB»êÈOÍfalseB 386 */ 387function checkExist(cookieValue, cardId) { 388 389 // øª¢ÝèÌêAfalseðÔp 390 if (isEmpty(cookieValue) || isEmpty(cardId)) { 391 return false;
392 } 393 394 var cardIdList = splitComma(cookieValue); 395 396 // ªµ½CookieîñÉJ[hIDª¶Ý·éêAtrueðÔp 397 for (var i = 0; i < cardIdList.length; i++) { 398 if (cardIdList[i] == cardId) { 399 return true; 400 } 401 } 402 403 // ªµ½CookieîñÉJ[hIDª¶ÝµÈ¢êAfalseðÔp 404 return false; 405} 406 407/** 408 * CookieÉo^³ê½J[hIDðí·éB 409 * 410 * @param cookieName Cookie¼ 411 * @param cookieValue Cookiel 412 * @param maxAge CookieLøúÀibj 413 * @param cardId íÎÛÌJ[hID 414 */ 415function releaseCardId(cookieName, cookieValue, cardId, maxAge) { 416 417 var cardIdList = splitComma(cookieValue); 418 419 // CookieîñÉêv·éJ[hIDª¶Ýµ½êAí·é 420 for (var i = 0; i < cardIdList.length; i++) { 421 if (cardIdList[i] == cardId) { 422 cardIdList.splice(i, 1); 423 break; 424 } 425 } 426 427 // J[hIDXgðCSV`®ÉÏ·µACookieÉo^·é 428 $.cookie(cookieName, cardIdListToCsv(cardIdList), setCookieOption(maxAge)); 429} 430 431/** 432 * wè³ê½CookieÌæªÉJ[hIDðÇÁ·éB 433 * 434 * @param cookieName Cookie¼ 435 * @param cookieValue Cookiel 436 * @param cardId o^ÎÛÌJ[hID 437 * @param maxAge CookieLøúÀibj 438 */ 439function addCookieFirst(cookieName, cookieValue, cardId, maxAge) { 440 441 var cardIdList = splitComma(cookieValue); 442 443 // J[hIDXgÌæªÉJ[hIDðÇÁ·é 444 cardIdList.unshift(cardId); 445 446 // J[hIDXgðCSV`®ÉÏ·µACookieÉo^·é 447 $.cookie(cookieName, cardIdListToCsv(cardIdList), setCookieOption(maxAge)); 448} 449 450/** 451 * wè³ê½CookieÌöÉJ[hIDðÇÁ·éB 452 * 453 * @param cookieName Cookie¼ 454 * @param cookieValue Cookiel 455 * @param maxAge CookieLøúÀibj 456 * @param cardId o^ÎÛÌJ[hID 457 */ 458function addCookieEnd(cookieName, cookieValue, cardId, maxAge) { 459 460 var cardIdList = splitComma(cookieValue); 461 462 // J[hIDXgÌöÉJ[hIDðÇÁ·é 463 cardIdList.push(cardId); 464 465 // J[hIDXgðCSV`®ÉÏ·µACookieÉo^·é 466 $.cookie(cookieName, cardIdListToCsv(cardIdList), setCookieOption(maxAge)); 467} 468 469/** 470 * CookieÌIvVÝè 471 * 472 * @param maxAge CookieLøúÀibj 473 * @return IvV 474 */ 475function setCookieOption(maxAge) { 476 if (isEmpty(maxAge)) { 477 return {path: "/"}; 478 } 479 else { 480 return {path: "/", expires: maxAge}; 481 } 482} 483 484/** 485 * CookielªÅåÉBµÄ¢éêAÅåÈãÌlðí·éB 486 * 487 * @param cookieValue Cookiel 488 * @param maxCount Åå 489 * @return Åå-1ÌCookielBCookielª¢ÝèÌêAó¶B 490 */ 491function releaseOldCardId(cookieValue, maxCount) { 492 493 // Cookielª¢ÝèÌêAó¶ðÔp 494 if (isEmpty(cookieValue)) { 495 return ""; 496 } 497 498 var cardIdList = splitComma(cookieValue); 499 500 // CookieîñÉÅåÈãÌo^ª éêAí·é 501 if (cardIdList.length >= maxCount) { 502 // Ååo^ÈãÌêAÅåÚ©çA´ßªðí·éB 503 cardIdList.splice(maxCount - 1, cardIdList.length - maxCount + 1); 504 } 505 506 // J[hIDðCSV`®ÉÏ·µAÔp·é 507 return cardIdListToCsv(cardIdList); 508} 509 510/** 511 * ó¯æÁ½J[hIDXgðcsv`®Ì¶ñÉÏ·µAÔp·éB 512 * 513 * @param cardIdList J[hIDXg 514 * @returns J[hID(csv) 515 */ 516function cardIdListToCsv(cardIdList) { 517 518 var csv = ''; 519 520 for (var i = 0; i < cardIdList.length; i++) { 521 522 if (i != 0) { 523 // ñ[vÈOÌêA¶ÝÏðt^ 524 csv += ','; 525 } 526 csv += cardIdList[i]; 527 } 528 529 return csv; 530} 531 532/** 533 * ó¯æÁ½csv`®ÌJ[hIDðzñÉÏ·µÔp·éB 534 * 535 * @param cardIdCsv J[hID(csv) 536 * @returns J[hIDXg 537 */ 538function splitComma(cardId) { 539 540 // J[hIDicsvjªóÌêAóÌzñðÔp 541 if (isEmpty(cardId)) { 542 return []; 543 } 544 545 return cardId.split(','); 546} 547 548/** 549 * øÌlªói""AnullAundefindjÌêAó¶ðÔp·éB 550 * »êÈOÌêAURLGR[hµ½lðÔp·éB 551 * 552 * @param data GR[hÎÛÌl 553 */ 554function emptyConversionEncodeURI(data) { 555 if (isEmpty(data)) { 556 return ''; 557 } 558 return encodeURIComponent(data); 559} 560 561/** 562 * AjaxNGXgðM·éB 563 * 564 * @param ajaxUrl AjaxNGXgURL 565 * @param data Mf[^ 566 * @return Ê 567 */ 568function callAjax(ajaxUrl, data) { 569 570 var result; 571 572 $.ajax({ 573 type : 'POST', 574 url : ajaxUrl, 575 dataType : 'text', 576 async : false, 577 data : data 578 }) 579 .done(function(res) { 580 result = successProc(res); 581 }) 582 .fail(function() { 583 throw new SystemError(); 584 }); 585 586 return result; 587} 588 589/** 590 * AjaxÌsuccess¤ÊB 591 * 592 * @param res AjaxÊ 593 */ 594function successProc(res) { 595 596 try { 597 var json = $.parseJSON(res); 598 }
599 catch (e) { 600 // JSONϷɸsµ½ê 601 throw new SystemError(); 602 } 603 604 // G[bZ[WªÔp³ê½ê 605 if (!isEmpty(json.messageId)) { 606 throw new SystemError(json.messageId); 607 } 608 609 // ¨CÉüèo^óÔÌÝè 610 if (json.cardInfo.length > 0 611 && json.cardInfo[0].favoriteStatus != undefined) { 612 // J[hîñª0ÈOA©ÂA¨CÉüèo^óÔª¶Ý·éê 613 for (var i = 0; i < json.cardInfo.length; i++) { 614 var cardId = json.cardInfo[i].cardId; 615 if (CardAPI.getFavoriteStatus(cardId)) { 616 json.cardInfo[i].favoriteStatus = true; 617 } 618 } 619 } 620 621 return JSON.stringify(json,null," "); 622} 623 624/** 625 * ó¯æÁ½zñîñÉJ[hIDª¶Ý·é©`FbNðs¤B 626 * 627 * @param arrayValue zñîñ 628 * @param cardId J[hID 629 * @returns zñîñÉJ[hIDª¶Ý·éêAtrueB»êÈOÍfalseB 630 */ 631function checkArrayExist(arrayValue, cardId) { 632 633 // øª¢ÝèÌêAfalseðÔp 634 if (isEmpty(arrayValue) || isEmpty(cardId)) { 635 return false; 636 } 637 638 // zñîñÉJ[hIDª¶Ý·éêAtrueðÔp 639 for (var i = 0; i < arrayValue.length; i++) { 640 if (arrayValue[i] == cardId) { 641 return true; 642 } 643 } 644 645 // zñîñÉJ[hIDª¶ÝµÈ¢êAfalseðÔp 646 return false; 647} 648 649/** 650 * zñÉo^³ê½J[hIDðí·éB 651 * 652 * @param arrayValue zñl 653 * @param cardId íÎÛÌJ[hID 654 */ 655function releaseArrayCardId(arrayValue, cardId) { 656 657 // zñîñÉêv·éJ[hIDª¶Ýµ½êAí·é 658 for (var i = 0; i < arrayValue.length; i++) { 659 if (arrayValue[i] == cardId) { 660 arrayValue.splice(i, 1); 661 break; 662 } 663 } 664} 665 666/** 667 * ü´ñnG[ª¶µ½êAÎÛÌCookieðí·éB 668 * 669 * @param e VXeG[ 670 * @param cookieName Cookie¼Ì 671 */ 672function removeTargetCookie(e, cookieName) { 673 if ('Er15402008' == e.message || 'Er15402009' == e.message || 'Er15402010' == e.message) { 674 $.removeCookie(cookieName, {path: "/"}); 675 } 676}
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.