PageSourceSearch

https://www.happycampus.com/js/cart.js?jsVer=20260921.1

js happycampus.com collected 2026-09-24 09:09:18 UTC 21,765 bytes, 628 lines download raw bytes

1/**
2 *
3 * 카트 클래스
4 *
5 * @date 2012-07-27
6 * @author 이기열
7 * @type class
8 *
9 **/
10
11Cart = {
12	checkCount : 0, //체크한 아이템갯수
13	totalItemCount : 0, //카트에 담긴 상품수
14	//체크된 아이템이 존재하는지 체크
15	getCheckCount: function() {
16		// :enabled 추가 기업보고서에서 이미 구매한 기업보고서가 선택되어 있고 (disabled 이지만) 다운로드 눌렀을 때
17		// /pay/order 에서 메시지 출력 -> Error: order->setCartAttributes 주문아이템 정보가 존재하지 않음.
18		return this.checkCount = $('input:checkbox[name="cartSeq[]"]:checked:enabled').length;
19	},
20	//전체카트상품 갯수
21	getTotalCount: function() {
22		return this.totalItemCount = $('input:checkbox[name="cartSeq[]"]').length;
23	},
24	/**
25	 * 전체아이템 선택 or 해제
26	 */
27	checkAll: function() {
28		//set vars : 전체선택 체크박스, 체크 여부
29		var $allSelect = $('#all_select');
30		var procMode = $allSelect.prop('checked');
31		//set vars : 장바구니 체크박스 목록
32		var $cartSeqCheckbox = $('input:checkbox[name="cartSeq[]"]');
33
34		//모바일과 PC의 처리를 분리함
35		if (Common.isUrlMobileMode()) {
36			//set vars : 전체선택 체크박스 영역
37			var $allSelectArea = $('#allSelectArea');
38
39			if ($allSelectArea.length > 0) {
40				//전체선택 체크박스의 체크상태를 토글함(체크->언체크, 언체크->체크)
41				$allSelect.prop('checked', !procMode);
42
43				//전체선택 체크박스 영역 css 추가/삭제 처리
44				if (procMode) $allSelectArea.find('span').removeClass('checked');
45				else $allSelectArea.find('span').addClass('checked');
46			}
47
48			//장바구니 자료를 순회하며 체크/언체크 처리
49			$cartSeqCheckbox.each(function () {
50				$(this).prop('checked', !procMode);
51				if (procMode) $(this).parent().find('span').removeClass('checked');
52				else $(this).parent().find('span').addClass('checked');
53			});
54		} else {
55			//장바구니 자료를 순회하며 체크/언체크 처리
56			$cartSeqCheckbox.each(function() {
57				$(this).prop('checked', procMode);
58			});
59		}
60
61		//가격갱신
62		this.updateTotalPrice();
63	},
64	//아이템 선택 시 처리
65	checkEach : function() {
66		var selectArea = $('#allSelectArea');
67		//전체선택 체크박스 처리
68		if(this.getCheckCount() < this.getTotalCount()) {
69			$('#all_select').attr('checked',false);
70			if(selectArea.length > 0) {
71				selectArea.find('span').removeClass('checked');
72			}
73		} else {
74			$('#all_select').attr('checked',true);
75			if(selectArea.length > 0) {
76				selectArea.find('span').addClass('checked');
77			}
78		}
79		//가격갱신
80		this.updateTotalPrice();
81	},
82
83	checkItem:function(itemSeq) {
84		var item = $('input[type=checkbox][value=' + itemSeq + ']');
85		item.prop('checked', !item.prop('checked'));
86		if(item.prop('checked')) {
87			item.parent().find('span').addClass('checked');
88		} else {
89			item.parent().find('span').removeClass('checked');
90		}
91
92		Cart.checkEach();
93	},
94	//업데이트 총금액 갱신
95	updateTotalPrice : function() {
96		var sumPrice = Common.numberFormat(this.selectedItemPrice());
97		$('#totalPrice').val(sumPrice);
98		if($('#idTotalPrice').length) {
99			$('#idTotalPrice').html(sumPrice);
100		}
101		var sumCount = this.getCheckCount();
102		if($('#idTotalCount').length) {
103			$('#idTotalCount').html(Common.numberFormat(sumCount));
104		}
105	},
106
107	//선택된 아이템 가격 계산
108	selectedItemPrice : function() {
109		var sumPrice = 0;
110		$('input:checkbox[name="cartSeq[]"]:checked').each(function(idx){
111			var _cartSeq = this.value;
112			sumPrice += parseInt($('input:hidden[name="price['+_cartSeq+']"]').val());
113		});
114		return sumPrice;
115	},
116	//선택된 아이템을 삭제한다.
117	deleteChoice: function() {
118		if(this.getCheckCount()) {
119			if(confirm('선택하신 상품을 장바구니에서 삭제하시겠습니까?'))
120				$('#cartForm').attr('action','/cart/removeItem').submit();
121		} else {
122			alert('최소한 하나의 자료를 선택해 주시기 바랍니다.');
123		}
124	},
125	/**
126	 * 상품을 카트에 추가한다.
127	 * @param refSeq
128	 * @returns {boolean}
129	 */
130	addItem: function(refSeq) {
131		var that = this;
132		var isMulti = $('#multi').val();
133		var params = {};
134		var productTypeSeq = (typeof arguments[1] != 'undefined') ? arguments[1] : 2;
135		var returnUrl = (typeof arguments[2] != 'undefined' && arguments[2]) ? arguments[2] : encodeURIComponent(document.location.href);
136		var target = (typeof arguments[3] != 'undefined') ? arguments[3] : '';
137		var confirmCheck=(typeof arguments[4] != 'undefined') ? arguments[4] : 'true';
138
139		//refSeq가 넘어온 경우 우선적으로 설정
140		if(typeof refSeq != 'undefined') {
141			params = {refSeq:refSeq,productTypeSeq:productTypeSeq};
142		} else {
143			if ( $('input:checkbox[name="cartSeq[]"]').length > 0 ) {
144				params = $('input:checkbox[name="cartSeq[]"]:checked').serialize();
145			} else {
146				params = $('input:checkbox[name="docSeq[]"][data-price!=0]:checked').serialize();
147			}
148		}
149
150		$.ajax({
151			type: 'post',
152			dataType: 'json',
153			url: '/cart/addItem',
154			data: params,
155			async: false,
156			success: function(json){
157				if(json != null){
158					if(json.checkResult == 'ok'){
159						//카트카운트수 갱신
160						$('#top_cart_cnt').html(that.getItemCount());
161
162						if(confirmCheck=="false") return;
163
164						var userAgent = Common.getUserAgent();
165						var androidVersion = false;
166						if(userAgent.browser == 'safari'){
167							androidVersion = Common.getAndroidVersion();
168						}
169						var cartUrl = '/cart/?ru=' + returnUrl;
170						if(androidVersion !== false){ // 안드로이드 브라우저 Confirm 창에 [확인]만 출력되는 오류 보정을 위해서   && androidVersion < 4
171							Common.divConfirm('<div style="padding:10px;">' + json.message + '</div>', 264, 100, "if('" + target + "' == 'opener'){ window.close(); $(opener.location).attr('href', '" + cartUrl + "'); }else{ $(location).attr('href','" + cartUrl + "'); }", null, 'padding:10px; border:solid 2px #000;border-radius: 5px;box-shadow: 0px 1px 20px #000;', true);
172						}
173						else{
174							if( confirm(json.message)) {
175								if(target=='opener'){
176									window.close();
177									$(opener.location).attr('href', cartUrl);
178								}else{
179									$(location).attr('href',cartUrl);
180								}
181							}
182						}
183					} else if(json.checkResult == 'buy'){
184						if( confirm(json.message) ) {
185							var buyListWin = window.open('/mypage/buyList/','buyListWin');
186							buyListWin.focus();
187						}
188
189					} else{
190						if(json.message != ''){
191							alert(json.message);
192						} else {
193							alert('상품추가에 실패하였습니다. 문제가 지속될 경우 1:1 고객센터에 문의바랍니다.');
194						}
195					}
196				}
197			},
198			error: function(xhr, status, error){
199				Common.ajaxErrorProcess(xhr, status, error);
200			}
201		});
202	},
203	//현재카트에 담겨진 아이템 갯수 반환
204	getItemCount : function() {
205		var renew = new Date();
206		var result = null;
207		if($.ajax({
208			type: "POST",
209			url: "/cart/getItemCount",
210			data: "renew=" + renew.getTime(),
211			dataType: 'json',
212			async: false,
213			success: function(json) {
214				result = json;
215			}
216		})){
217
218		}
219		return result.count;
220	},
221	//카트아이템으로 주문서를 생성한다.
222	order : function() {
223		if(arguments.length == 1 && typeof arguments[0] == 'function') {
224			if(!arguments[0]()) return false;
225		}
226
227		//선택된 아이템이 한개 이상 존재하는 경우에만 가능.
228		if(this.getCheckCount()) {
229			$('#cartForm').attr('action','/pay/order');
230			$('#cartForm').submit();
231		} else {
232			alert('최소한 하나의 자료를 선택해 주시기 바랍니다.');
233		}
234	},
235
236	//추천자료 보기/닫기
237	toggleRecommendDoc : function() {
238		$(".recommend_data").toggle();
239
240		if ($("#btnRecommend").length) { //리뉴얼
241			if ($("#btnRecommend").attr("src") == "/images/pay/2013/recommend_open.gif") {
242				$("#btnRecommend").attr("src", "/images/pay/2013/recommend_close.gif");
243				$("#btnRecommend").attr("alt", "추천자료 닫기");
244			} else {
245				$("#btnRecommend").attr("src", "/images/pay/2013/recommend_open.gif");
246				$("#btnRecommend").attr("alt", "추천자료 열기");
247			}
248		} else {
249			if ($("#btn_recommend").attr("src") == "/images/cart/btn_recommend_open.gif") {
250				$("#btn_recommend").attr("src", "/images/cart/btn_recommend_close.gif");
251				$("#btn_recommend").attr("alt", "추천자료 닫기");
252			} else {
253				$("#btn_recommend").attr("src", "/images/cart/btn_recommend_open.gif");
254				$("#btn_recommend").attr("alt", "추천자료 열기");
255			}
256		}
257	},
258
259	/**
260	 * 옵션 삭제
261	 * @param funCampusProductSeq
262	 * @param funCampusProductOptionSeq
263	 */
264	'changeOrderResult': false,
265	'afterChangeOrderInfo': null,
266	'optionDelete':function(funCampusProductSeq, funCampusProductOptionSeq){
267		if(confirm('해당 옵션 상품을 정말로 삭제하시겠습니까?')) {
268			Cart.changeOrderResult = false;
269			Cart.afterChangeOrderInfo = null;
270			$.ajax({
271				type: 'post',
272				dataType: 'json',
273				url: '/cart/changeCartOption',
274				data: {'mode': 'delete', 'funCampusProductSeq': funCampusProductSeq, 'funCampusProductOptionSeq': funCampusProductOptionSeq},
275				async: false,
276				success: function(json){
277					if(json.errorMsg != ''){
278						alert(json.errorMsg);
279					}
280					else{
281						Cart.changeOrderResult = true;
282						Cart.afterChangeOrderInfo = json.afterOrderInfo;
283					}
284				},
285				error: function(xhr, status, error){
286					Common.ajaxErrorProcess(xhr, status, error);
287				}
288			});
289
290			if(Cart.changeOrderResult) {
291				$("#opt" + funCampusProductSeq + '_' + funCampusProductOptionSeq).remove();
292				// 현재 대상 상품의 남아있는 옵션이 없는 경우 상품자체를 삭제
293				if ($('[id^="opt' + funCampusProductSeq + '"]').length == 0) {
294					$('#product' + funCampusProductSeq).remove();
295				}
296				// 남아 있는 상품이 없는 경우
297				if( $('[id^="product"]').length == 0) {
298					if( $("#blankCart").length > 0 ){
299						$("#blankCart").show();
300					} else {
301						$('#cartTable').append('<td colspan="5">장바구니가 비어있습니다.</td>');
302					}
303				}
304				else{
305					if(Cart.afterChangeOrderInfo !== null) {
306						$('#ticketCount' + funCampusProductSeq).html(Common.numberFormat(Cart.afterChangeOrderInfo['ticketCount']) + '장');
307						$('#deliveryPrice' + funCampusProductSeq).html(((Cart.afterChangeOrderInfo['deliveryPrice'] > 0) ? Common.numberFormat(Cart.afterChangeOrderInfo['deliveryPrice']) + '원' : '무료'));
308						$('#basePrice' + funCampusProductSeq).html(Common.numberFormat(Cart.afterChangeOrderInfo['basePrice']) + '원');
309						$('#amount' + funCampusProductSeq).html('<strong>' + Common.numberFormat(Cart.afterChangeOrderInfo['amount']) + '원</strong>');
310					}
311				}
312
313				Cart.totalBuyPrice();
314			}
315		}
316	},
317
318	/**
319	 * 옵션 갯수 수정
320	 * @param funCampusProductSeq
321	 * @param funCampusProductOptionSeq
322	 * @param type
323	 * @returns {boolean}
324	 */
325	'changeOrderCount':function(funCampusProductSeq, funCampusProductOptionSeq, type){
326		var postfix = funCampusProductSeq + '_' + funCampusProductOptionSeq;
327		var salePrice = parseInt($("#salePrice"+funCampusProductSeq).val(),10);
328		var buyLimit = parseInt($("#buyLimit"+funCampusProductSeq).val(), 10);
329		var totalOrderCount = parseInt($("#totalOrderCount"+funCampusProductSeq).val(), 10);
330		var buyCount = parseInt($("#optionCount"+postfix).val(), 10);
331		var defaultCount = parseInt($("#defaultCount"+postfix).val(), 10);
332
333		/* 옵션에 가격이 입력되어 있을 경우 */
334		if( funCampusProductOptionSeq > 0 && $("#salePrice"+funCampusProductOptionSeq).val() > 0 ){
335			salePrice = $("#salePrice"+funCampusProductOptionSeq).val();
336		} else if( funCampusProductSeq > 0 && $("#salePrice"+funCampusProductSeq).val() > 0 ){
337			salePrice = $("#salePrice"+funCampusProductSeq).val();
338		}
339		
340		switch(type){
341			case 'up': // 한개 증가
342				if(buyLimit > 0){
343					if( buyLimit < (buyCount+1) ){
344						alert("최대 구매수량 " + buyLimit + "개까지만 구매가 가능합니다.");
345						$("#optionCount"+postfix).focus();
346						return false;
347					}
348				}
349
350				++buyCount;
351				++totalOrderCount;
352				break;
353			case 'down': // 한개 내림
354				if(buyCount <= 1){
355					return false;
356				}
357
358				--buyCount;
359				--totalOrderCount;
360				break;
361			case 'direct': // 직접 입력한 경우
362				if(!Common.isNumeric($("#optionCount"+postfix).val())){ // 숫자만 입력되어야 함
363					alert('숫자만 입력해 주세요');
364					$("#optionCount"+postfix).val(defaultCount); // 기본값으로 변경
365					$("#optionCount"+postfix).focus();
366					return false;
367				}
368
369				if(defaultCount == buyCount){
370					return false;
371				}
372				else{
373					if(defaultCount < buyCount){ // 기존값보다 증가한 경우
374						if(buyLimit > 0){
375							if( buyLimit < buyCount ){ // (totalOrderCount + (buyCount - defaultCount)
376								alert("최대 구매수량 " + buyLimit + "개까지만 구매가 가능합니다.");
377								$("#optionCount"+postfix).val(defaultCount); // 기본값으로 변경
378								$("#optionCount"+postfix).focus();
379								return false;
380							}
381						}
382					}
383					else{
384						if(buyCount < 1){
385							$("#optionCount"+postfix).val(defaultCount); // 기본값으로 변경
386							return false;
387						}
388					}
389				}
390				break;
391		}
392
393		Cart.changeOrderResult = false;
394		Cart.afterChangeOrderInfo = null;
395		$.ajax({
396			type: 'post',
397			dataType: 'json',
398			url: '/cart/changeCartOption',
399			data: {'mode': 'orderCount', 'funCampusProductSeq': funCampusProductSeq, 'funCampusProductOptionSeq': funCampusProductOptionSeq, 'orderCount': buyCount},
400			async: false,
401			success: function(json){
402				if(json.errorMsg != ''){
403					alert(json.errorMsg);
404				}
405				else{
406					Cart.changeOrderResult = true;
407					Cart.afterChangeOrderInfo = json.afterOrderInfo;
408				}
409			},
410			error: function(xhr, status, error){
411				Common.ajaxErrorProcess(xhr, status, error);
412			}
413		});
414
415		if(Cart.changeOrderResult) {
416			$("#optionCount" + postfix).val(buyCount);
417			$("#defaultCount"+postfix).val(buyCount);
418			$("#optionPrice" + postfix).html(Common.numberFormat(salePrice * buyCount) + '원');
419
420			$("#totalOrderCount" + funCampusProductSeq).val(Common.numberFormat(Cart.afterChangeOrderInfo['totalOrderCount']));
421			$('#ticketCount' + funCampusProductSeq).html(Common.numberFormat(Cart.afterChangeOrderInfo['ticketCount']) + '장');
422			$('#deliveryPrice' + funCampusProductSeq).html( ((Cart.afterChangeOrderInfo['deliveryPrice'] > 0) ? Common.numberFormat(Cart.afterChangeOrderInfo['deliveryPrice']) +'원' : '무료') );
423			$('#basePrice' + funCampusProductSeq).html(Common.numberFormat(Cart.afterChangeOrderInfo['basePrice']) + '원');
424			if( Common.isUrlMobileMode() ){
425				$('#amount' + funCampusProductSeq).html('<strong>' + Common.numberFormat(Cart.afterChangeOrderInfo['amount']) + '원<span class="plus"></span></strong>');
426			} else {
427				$('#amount' + funCampusProductSeq).html('<strong>' + Common.numberFormat(Cart.afterChangeOrderInfo['amount']) + '원</strong>');
428			}
429
430			Cart.totalBuyPrice();
431		}
432	},
433
434	/**
435	 * 전체 상품 선택
436	 * @param [type]
437	 */
438	'checkAllProduct': function(type) {
439		/* 모바일 장바구니 전체 선택 */
440		if( $("#allCheckbox").length > 0 ){
441			if( $("#allCheckbox").is(':checked') ){
442				$("span.check_mark").addClass('checked');
443				$('input:checkbox[name="funCampusProductSeq[]"]').attr('checked', 'checked');
444			} else {
445				$("span.check_mark").removeClass('checked');
446				$('input:checkbox[name="funCampusProductSeq[]"]').removeAttr('checked');
447			}
448		}
449		/* PC */
450		else {
451			switch(type){
452				case 'cancel':
453					$('#allCheckboxBtn').show();
454					$('#allCheckboxBtn2').show();
455					$('#allCheckCancelBtn').hide();
456					$('#allCheckCancelBtn2').hide();
457					$('input:checkbox[name="funCampusProductSeq[]"]').removeAttr('checked');
458					break;
459				default:
460					$('#allCheckboxBtn').hide();
461					$('#allCheckboxBtn2').hide();
462					$('#allCheckCancelBtn').show();
463					$('#allCheckCancelBtn2').show();
464					$('input:checkbox[name="funCampusProductSeq[]"]').attr('checked', 'checked');
465					break;
466			}
467		}
468
469		//가격갱신
470		Cart.totalBuyPrice();
471	},
472
473	/**
474	 * 상품 하나 선택시
475	 * @param productSeq
476	 */
477	'funCartGoodsSelect':function(productSeq){
478		if( $("#funCartList"+productSeq).is(':checked') ){
479			$("#checkMark"+productSeq).addClass('checked');
480		} else {
481			$("#checkMark"+productSeq).removeClass('checked');
482		}
483
484		var allChk = true;
485		$('input:checkbox[name="funCampusProductSeq[]"]').each(function(){
486			if( !$(this).is(':checked') ){
487				allChk = false;
488			}
489		});
490
491		/* 전체가 선택되어 있으면 전체선택 체크 */
492		if( allChk ){
493			$("#checkMark").addClass('checked');
494			$('#allCheckbox').attr('checked', 'checked');
495		} else {
496			$("#checkMark").removeClass('checked');
497			$('#allCheckbox').removeAttr('checked');
498		}
499	},
500
501	/**
502	 * 현재 필요한 티켓 수량이 부족한지 여부
503	 * @returns {boolean}
504	 */
505	'isLessTicket': function(){
506		var currentTicketCount = parseInt($('#currentTicketCount').text().replace(/[,|장|개|원]/g,''), 10);
507		var totalTicketCount = parseInt($('#totalTicketCount').text().replace(/[,|장|개|원]/g,''), 10);
508		if((currentTicketCount < totalTicketCount)) {
509			$('#needTicketCount').html(Common.numberFormat(totalTicketCount - currentTicketCount));
510			return true;
511		}
512		return false;
513	},
514
515	/**
516	 * 선택된 상품 주문
517	 * @returns {boolean}
518	 */
519	'checkOrderForm': function(){
520		if($('input:checkbox[name="funCampusProductSeq[]"]:checked').length == 0){
521			alert('주문할 상품을 한개 이상 선택해 주세요');
522			return false;
523		}
524
525		if(this.isLessTicket()){
526			alert('티켓이 부족합니다. 보유 티켓 수에 맞춰 상품을 선택해 주세요.');
527			$('#lessTicketPopup').show();
528			$('#lessTicketPopup > a').focus();
529			return false;
530		}
531
532		return true;
533	},
534
535	/**
536	 * 한개의 상품을 카트에서 삭제한다.
537	 * @param productSeq
538	 */
539	'thisRemoveProduct':function(productSeq){
540		/* 전체 선택 취소 */
541		$(".check_mark ").removeClass('checked');
542		$('input:checkbox[name="funCampusProductSeq[]"]').removeAttr('checked');
543
544		/* 해당 상품 선택 */
545		$("#checkMark"+productSeq).addClass('checked');
546		$("#funCartList"+productSeq).attr('checked', 'checked');
547
548		/* 선택 상품 삭제 */
549		Cart.removeProduct();
550	},
551
552	/**
553	 * 선택된 상품 삭제
554	 * @returns {boolean}
555	 */
556	'deleteTargetProducts': '',
557	'removeProduct': function(){
558		// 체크된 상품 번호
559		if($('input:checkbox[name="funCampusProductSeq[]"]:checked').length == 0){
560			alert('삭제할 상품을 선택해 주세요');
561			return false;
562		}
563
564		if(confirm('정말로 삭제하시겠습니까?')) {
565			Cart.deleteTargetProducts = '';
566			$('input:checkbox[name="funCampusProductSeq[]"]:checked').each(function () {
567				Cart.deleteTargetProducts += ((Cart.deleteTargetProducts == '') ? '' : ',') + $(this).val();
568			});
569
570			$('#funCampusProducts').val(Cart.deleteTargetProducts);
571			$('#deleteForm').submit();
572		}
573	},
574
575	/**
576	 * 총 상품 금액 계산
577	 */
578	'totalBuyPrice':function(){
579		var totalBasePrice = 0;
580		var totalTicketCount = 0;
581		var totalDeliveryFee = 0;
582		var totalSalePrice = 0;
583
584		if($('input:checkbox[name="funCampusProductSeq[]"]:checked').length > 0){
585			$('input:checkbox[name="funCampusProductSeq[]"]:checked').each(function(){
586				$('[id^=basePrice' + $(this).val() + ']').each(function(){
587					totalBasePrice += parseInt($(this).text().replace(/[,|장|개|원]/g,''), 10);
588				});
589				$('[id^=ticketCount' + $(this).val() + ']').each(function(){
590					if( Common.trim($(this).text()) != '' ){
591						totalTicketCount += parseInt($(this).text().replace(/[,|장|개|원]/g,''), 10);
592					}
593				});
594				$('[id^=amount' + $(this).val() + ']').each(function(){
595					totalSalePrice += parseInt($(this).text().replace(/[,|장|개|원]/g,''), 10);
596				});
597				$('[id^=deliveryPrice' + $(this).val() + ']').each(function(){
598					if($(this).text().indexOf('무료') === -1){
599						totalDeliveryFee += parseInt($(this).text().replace(/[,|장|개|원]/g, ''), 10);
600					}
601				});
602			});
603		}
604
605		$('#totalBasePrice').html(Common.numberFormat(totalBasePrice) + '<em>원</em>');
606		$('#totalTicketCount').html(Common.numberFormat(totalTicketCount) + '<em>장</em>');
607		$('#totalDiscountPrice').html(Common.numberFormat(totalBasePrice - totalSalePrice) + '<em>원</em>');
608		$('#totalDeliveryFee').html( ((totalDeliveryFee > 0) ? Common.numberFormat(totalDeliveryFee) + '<em>원</em>' : '무료') );
609		$('#totalAmount').html(Common.numberFormat(totalSalePrice+totalDeliveryFee) + '<em>원</em>');
610
611		// 티켓 부족 확인 레이어 노출 조정
612		if(this.isLessTicket()){
613            $('#guestPossible').val('');
614			$('#lessTicketPopup').show();
615			$('#totalTicketCount, #totalDiscountPrice, #totalDeliveryFee, #totalAmount').addClass('cal2');
616			$('#totalAmount').removeClass('cal4');
617			$('#totalAmount').addClass('cal3');
618			$('#lessTicketPopup > a').focus();
619		}
620		else{
621            $('#guestPossible').val('y');
622			$('#lessTicketPopup').hide();
623			$('#totalTicketCount, #totalDiscountPrice, #totalDeliveryFee, #totalAmount').removeClass('cal2');
624			$('#totalAmount').addClass('cal4');
625			$('#totalAmount').removeClass('cal3');
626		}
627	}
628};

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.