1/** 2 * ============================================================================================= 3 * ì¬ê¸° ìëë¶í°ë ë§ë ì¬ëì ì ìê¶ì´ ì¡´ì¬íë ì½ëì ëë¤. 4 * ì ë ì§ì°ê±°ë ìì íì§ ë§ì¸ì!!! 5 * --------------------------------------------------------------------------------------------- 6 * ë§ë ë ì§ : 2022-05-01 7 * ìì ë ì§ : 2022-05-17 8 * ë§ë ì¬ë : ë°ì¸í 9 * ì°ë½ì² : [email protected] 10 * --------------------------------------------------------------------------------------------- 11 * 모ë ì½ëì ì ìê¶ í´ìì½í¼ë ì´ì ì ììµëë¤. 12 * ë¬´ë¨ ëì© ë° ì½ëì ì¬ê°ê³µì ë²ì ì± ìì 물ì ì ììµëë¤. 13 * --------------------------------------------------------------------------------------------- 14 * Copyright © HASH Corporation. All rights reserved. 15 * ============================================================================================= 16 **/ 17 18/** 19 * ì¸í ë³ì ì´ê¸°í 20 * ----------------------------------------------------- 21 * !!!ì§ì°ê±°ë ìì íì§ ë§ì¸ì!!! 22======================================================== */ 23var HASHCORP = {} || HASHCORP; 24HASHCORP.isCopyright = false; 25HASHCORP.copyrightLog = console.log; 26HASHCORP.copyright = `Copyright © HASHCORP All right reserved. 27-------------------------------------- 28ìì ì : í´ìì½í¼ë ì´ì 29ì°ë½ì² : 010-5738-3314 30ì´ë©ì¼ : [email protected] 31ìì ì¼ : 2023-11-11 32-------------------------------------- 33`; 34 35var setting = { 36 categorySubLevel: 0, 37 categoryBannerLinks: [], 38 isThumbAddImage: { 39 isActive: 1, 40 count: undefined, 41 }, 42}; 43 44/** 45 * ì¸í ê´ë ¨ ì ë ¥ë¶ë¶ 46 * ----------------------------------------------------- 47 * !!!ì§ì°ê±°ë ìì íì§ ë§ì¸ì!!! 48======================================================== */ 49function setCategorySubLevel(level) { 50 if (level) { 51 setting.categorySubLevel = level; 52 } 53} 54 55function setCategoryBannerLink(no, link, text) { 56 if (no && link) { 57 setting.categoryBannerLinks.push({ 58 no: no, 59 link: link, 60 description: text, 61 }); 62 } 63} 64 65function setIsThumbAddImage(isActive, count) { 66 setting.isThumbAddImage = { 67 isActive: isActive, 68 count: count, 69 }; 70} 71 72/** 73 * ì¸í ê´ë ¨ ì¶ë ¥ë¶ë¶ 74 * ----------------------------------------------------- 75 * !!!ì§ì°ê±°ë ìì íì§ ë§ì¸ì!!! 76======================================================== */ 77/* ìë¸ì¹´í ê³ ë¦¬ ë 벨 ê° ì¶ë ¥ */ 78function getCategorySubLevel() { 79 return setting.categorySubLevel; 80} 81/* ë°°ëë§í¬ ê° ì¶ë ¥ */ 82function getBannerLinks() { 83 return setting.categoryBannerLinks; 84} 85 86/** 87 * ê¸°ë¥ í¨ì ë¶ë¶ 88 * ----------------------------------------------------- 89 * !!!ì§ì°ê±°ë ìì íì§ ë§ì¸ì!!! 90======================================================== */ 91 92/** 93 * ì´ë©ì¼ ê·ì¹ ê²ì¬ 94 * ----------------------------------------------------------- */ 95function validateEmail(email) { 96 var re = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/; 97 return re.test(String(email).toLowerCase()); 98} 99 100/** 101 * ë©ì¸ìí리ì¤í¸ 기ê°í ì¸ ë¶ë¬ì¤ê¸° 102 * íìì¸ì¼ ê¸°ë¥ 103 * -------------------------------------------------------------------------------------------------- 104 * getProductMainLTimeSale(ëì¤íë ì´ ê·¸ë£¹, 매ì¹í ìí ê°¯ì, 구íë Element Selector) 105-------------------------------------------------------------------------------------------------- */ 106function getProductMainLTimeSale(displayGroup, count, selector) { 107 // íìì¸ì¼ ì¢ ë£ì 108 function closeTimesale(selector) { 109 /** 110 * íìì¸ì¼ 죵ë¡ì Dimmed ì²ë¦¬ 111 -------------------------------------------------------- */ 112 /* Create Element */ 113 var div = document.createElement('div'); 114 var span = document.createElement('span'); 115 div.classList.add('item__dimmed'); 116 span.classList.add('dimmed__timesale'); 117 span.textContent = 'ì´ë²¤í¸ê° ì¢ ë£ ëììµëë¤.'; 118 div.append(span); 119 selector.append(div); 120 } 121 122 /** 123 * iOS ë ì§ ì¸ì½ë© 124 * iOSììë ISO8601 íìì ì§ìíì§ìì NaNì¼ë¡ ë¨ë 문ì 를 í´ê²° 125 * ----------------------------------------------------------- */ 126 function convertDateForIos(dateString) { 127 var convertString = dateString.replace(/-/g, '/'); 128 return new Date(convertString); 129 } 130 131 // íìì¸ì¼ ì¤ìê° ìê° 132 function timesale(targetDate, endDate, elSelector, parentSelector, intervalId, isOpen) { 133 if (targetDate && elSelector && intervalId) { 134 var now = new Date(); // íì¬ìê° 135 var diffDate = targetDate - now; 136 var diffDay = Math.floor(diffDate / (1000 * 60 * 60 * 24)); 137 var diffHour = Math.floor((diffDate / (1000 * 60 * 60)) % 24); 138 var diffMin = Math.floor((diffDate / (1000 * 60)) % 60); 139 var diffSec = Math.floor((diffDate / 1000) % 60); 140 141 elSelector.querySelector('.date__day').textContent = diffDay; 142 elSelector.querySelector('.date__hour').textContent = String(diffHour).padStart(2, '0'); 143 elSelector.querySelector('.date__minute').textContent = String(diffMin).padStart(2, '0'); 144 elSelector.querySelector('.date__second').textContent = String(diffSec).padStart(2, '0'); 145 146 //elSelector.querySelector('.timesale__date').textContent = diffDay + 'ì¼ ' + String(diffHour).padStart(2, '0') + ':' + String(diffMin).padStart(2, '0') + ':' + String(diffSec).padStart(2, '0'); 147 148 // ìê°ì´ ë¤ëìë 149 if (diffDay <= 0 && diffHour <= 0 && diffMin <= 0 && diffSec <= 0) { 150 if (isOpen) { 151 clearInterval(intervalId); 152 parentSelector.querySelector('.item__dimmed-open').remove(); 153 var iso = CAFE24.SHOP.getLanguage().replace('_', '-'); 154 var currency = CAFE24.SHOP.getCurrency(); 155 156 $.ajax({
157 url: '/exec/front/Product/ApiProductMain?display_group=' + displayGroup + '&count=' + count, 158 dataType: 'json', 159 success: function (aData) { 160 if (aData.rtn_code === '1000' && aData.rtn_data.data && aData.rtn_data.data.length > 0) { 161 var data = aData.rtn_data.data; 162 163 for (var i = 0; i < data.length; i++) { 164 var isPromotion = data[i].product_promotion_display; 165 166 // ìíì ìì´ëê°ê³¼ ì¤íëë ì´ë²¤í¸ì ìì´ëê°ì´ ê°ì ê²½ì° 167 if (isPromotion && 'time-sale__' + data[i].product_id === parentSelector.closest('.list__item').id) { 168 var id = data[i].product_id; 169 170 /* Create Element */ 171 var div = document.createElement('div'); 172 var span = document.createElement('span'); 173 div.classList.add('item__timesale'); 174 span.classList.add('timesale__date'); 175 div.append(span); 176 177 /** 178 * í´ë¡ì 를 íµí´ ë¨ììê°ì ê³ì°íì¬ DOMì ë£ì´ì¤ë¤ 179 * --------------------------------------------------- */ 180 (function (j) { 181 var promotion = { 182 id: id, 183 el: parentSelector, 184 isPromotion: isPromotion, // íë¡ëª¨ì ë ¸ì¶ì¬ë¶ 185 startDate: data[j].product_promotion_start_date, // ììë ì§ 186 endDate: data[j].product_promotion_end_date, // ì¢ ë£ë ì§ 187 promotionDate: data[j].product_promotion_date, // íë¡ëª¨ì ê¸°ê° 188 dcPrice: data[j].product_promotion_dc_price, // íë¡ëª¨ì í ì¸ê° 189 optimumPrice: data[j].optimum_discount_price_api, // ìµì í ì¸ê° 190 periodSalePrice: data[j].origin_prd_price_sale, // 기ê°í ì¸ê° 191 price: data[j].product_price, // ìëê°ê²© 192 unit: data[j].price_unit_tail, // ííì ë 193 }; 194 var endDate = convertDateForIos(promotion.endDate); // ì´ë²¤í¸ ë§ê°ìê° 195 var startDate = convertDateForIos(promotion.startDate); // ì´ë²¤í¸ ìììê° 196 var today = new Date(); // íì¬ìê° 197 198 var spanTitle = document.createElement('span'); 199 var spanDay = document.createElement('span'); 200 var spanHour = document.createElement('span'); 201 var spanMinute = document.createElement('span'); 202 var spanSecond = document.createElement('span'); 203 spanTitle.classList.add('timesale__title'); 204 spanDay.classList.add('date__day'); 205 spanHour.classList.add('date__hour'); 206 spanMinute.classList.add('date__minute'); 207 spanSecond.classList.add('date__second'); 208 209 var infoDiscountPrice = parentSelector.querySelector('.info__discount-price'); 210 var infoPrice = parentSelector.querySelector('.info__price del'); 211 infoDiscountPrice.classList.remove('displaynone'); 212 infoPrice.classList.remove('displaynone'); 213 214 var price = parseInt(promotion.price) - parseInt(promotion.dcPrice.replace(',', '')); 215 var productPrice = new Intl.NumberFormat(iso, { style: 'decimal', currency: currency }).format(price); 216 infoDiscountPrice.querySelector('strong').textContent = productPrice + promotion.unit; 217 218 spanTitle.textContent = 'ë¨ììê°'; 219 div.prepend(spanTitle); 220 parentSelector.append(div); 221 222 var timeSaleDate = promotion.el.querySelector('.timesale__date'); 223 timeSaleDate.append(spanDay, 'ì¼', spanHour, 'ìê°', spanMinute, 'ë¶', spanSecond, 'ì´'); 224 225 var intervalId = null; 226 intervalId = setInterval(function () { 227 timesale(endDate, null, timeSaleDate, promotion.el, intervalId, false); 228 }, 1000); 229 })(i); 230 } //if 231 else { 232 } 233 } //for 234 } //if 235 }, //success 236 }); //ajax 237 } else { 238 clearInterval(intervalId); 239 parentSelector.querySelector('.info__discount-price').remove(); 240 parentSelector.querySelector('.info__price').remove(); 241 parentSelector.querySelector('.item__timesale').remove(); 242 closeTimesale(parentSelector); 243 } 244 } 245 } 246 } 247
248 // ë ì§ ì ë³´ ë¹ëê¸°ë¡ ê°ì ¸ì¤ê¸° 249 $.ajax({ 250 url: '/exec/front/Product/ApiProductMain?display_group=' + displayGroup + '&count=' + count, 251 dataType: 'json', 252 success: function (aData) { 253 if (aData.rtn_code === '1000' && aData.rtn_data.data && aData.rtn_data.data.length > 0) { 254 var data = aData.rtn_data.data; 255 for (var i = 0; i < data.length; i++) { 256 var isPromotion = data[i].product_promotion_display; 257 if (isPromotion) { 258 var id = data[i].product_id; 259 var el = document.querySelector(selector + id + ' .product__item'); 260 261 /* Create Element */ 262 var div = document.createElement('div'); 263 var span = document.createElement('span'); 264 div.classList.add('item__timesale'); 265 span.classList.add('timesale__date'); 266 div.append(span); 267 268 /** 269 * í´ë¡ì 를 íµí´ ë¨ììê°ì ê³ì°íì¬ DOMì ë£ì´ì¤ë¤ 270 * --------------------------------------------------- */ 271 (function (j) { 272 var promotion = { 273 id: id, 274 el: el, 275 isPromotion: isPromotion, // íë¡ëª¨ì ë ¸ì¶ì¬ë¶ 276 startDate: data[j].product_promotion_start_date, // ììë ì§ 277 endDate: data[j].product_promotion_end_date, // ì¢ ë£ë ì§ 278 promotionDate: data[j].product_promotion_date, // íë¡ëª¨ì ê¸°ê° 279 dcPrice: data[j].product_promotion_dc_price, // íë¡ëª¨ì í ì¸ê° 280 optimumPrice: data[j].optimum_discount_price_api, // ìµì í ì¸ê° 281 periodSalePrice: data[j].origin_prd_price_sale, // 기ê°í ì¸ê° 282 }; 283 284 var endDate = convertDateForIos(promotion.endDate); // ì´ë²¤í¸ ë§ê°ìê° 285 var startDate = convertDateForIos(promotion.startDate); // ì´ë²¤í¸ ìììê° 286 var today = new Date(); // íì¬ìê° 287 288 var spanTitle = document.createElement('span'); 289 var spanDay = document.createElement('span'); 290 var spanHour = document.createElement('span'); 291 var spanMinute = document.createElement('span'); 292 var spanSecond = document.createElement('span'); 293 spanTitle.classList.add('timesale__title'); 294 spanDay.classList.add('date__day'); 295 spanHour.classList.add('date__hour'); 296 spanMinute.classList.add('date__minute'); 297 spanSecond.classList.add('date__second'); 298 299 // ì´ë²¤í¸ ì ì´ë¼ë©´ 300 if (startDate > today) { 301 spanTitle.textContent = 'ì¤íìê°'; 302 div.prepend(spanTitle); 303 304 /* Create Element */ 305 var dimmedDiv = document.createElement('div'); 306 var dimmedTitleSpan = document.createElement('span'); 307 dimmedDiv.classList.add('item__dimmed-open'); 308 dimmedTitleSpan.classList.add('dimmed-open__timesale'); 309 dimmedTitleSpan.textContent = 'ì´ë²¤í¸ê° ì¤í ì ì ëë¤.'; 310 dimmedDiv.append(dimmedTitleSpan); 311 dimmedDiv.append(div); 312 el.append(dimmedDiv); 313 314 var timeSaleDate = promotion.el.querySelector('.timesale__date'); 315 timeSaleDate.append(spanDay, 'ì¼', spanHour, 'ìê°', spanMinute, 'ë¶', spanSecond, 'ì´'); 316 317 var intervalId = null; 318 intervalId = setInterval(function () { 319 timesale(startDate, endDate, timeSaleDate, promotion.el, intervalId, true); 320 }, 1000); 321 } 322 // ì´ë²¤í¸ê° ì¢ ë£ëìë¤ë©´ 323 else if (today > endDate) { 324 return; 325 } 326 // ì´ë²¤í¸ ì§íì¤ì´ë¼ë©´ 327 else { 328 spanTitle.textContent = 'ë¨ììê°'; 329 div.prepend(spanTitle); 330 el.append(div); 331 332 var timeSaleDate = promotion.el.querySelector('.timesale__date'); 333 timeSaleDate.append(spanDay, 'ì¼', spanHour, 'ìê°', spanMinute, 'ë¶', spanSecond, 'ì´'); 334 335 var intervalId = null; 336 intervalId = setInterval(function () { 337 timesale(endDate, null, timeSaleDate, promotion.el, intervalId, false); 338 }, 1000); 339 } 340 })(i); 341 } //if 342 else { 343 /** 344 * íìì¸ì¼ 리ì¤í¸ì ìì§ë§ íë¡ëª¨ì 기ê°ì´ ì¢ ë£ë ìí 345 -------------------------------------------------------- */ 346 var id = data[i].product_id; 347 var el = document.querySelector(selector + id + ' .product__item'); 348 if (el) { 349 closeTimesale(el); 350 } 351 } // else 352 } //for 353 } //if 354 }, //success 355 }); //ajax 356} 357 358/** 359 * ì¹í ì½ëë¡ ë³ê²½ë¨ / 기존기ë¥ì ìì 360 * ë©ì¸ìí리ì¤í¸ ì¶ê°ì´ë¯¸ì§ ë¶ë¬ì¤ê¸° 361 * -------------------------------------------------------------------------------------------------- 362 * getProductMainListAddImages(그룹ID, ë¶ë¬ë¤ì¼ ìíê°ì, ë¶ë¬ë¤ì¼ ì¶ê°ì´ë¯¸ì§ê°ì, 구íë Element Selector); 363-------------------------------------------------------------------------------------------------- */ 364/* 365function getProductMainListAddImages(displayGroup, count, imgCount, selector) { 366 367 if(setting.isThumbAddImage.isActive) { 368 369 var sCount = imgCount; 370 if(setting.isThumbAddImage.count !== undefined) { 371 sCount = setting.isThumbAddImage.count; 372 } 373 374 $.ajax({
375 url : '/exec/front/Product/ApiProductMain?display_group=' + displayGroup + '&count=' + count, 376 dataType: 'json', 377 success: function(aData) { 378 if(aData.rtn_code === '1000' && aData.rtn_data.data && aData.rtn_data.data.length > 0) { 379 var data = aData.rtn_data.data; 380 for(var i=0; i<data.length; i++) { 381 var id = data[i].product_id; 382 var el = document.querySelector(selector + id + ' .product__item'); 383 var elChildName = el.querySelector('.item__info'); 384 var max = 0; 385 var ul = document.createElement('ul'); 386 ul.classList.add('item__add-images'); 387 for(var j=0; j<sCount; j++) { 388 if( data[i]['add_image_src' + (j+1)] ) { 389 var li = document.createElement('li'); 390 li.classList.add('add-images__item'); 391 var button = document.createElement('div'); 392 button.classList.add('item__button'); 393 var img = document.createElement('img'); 394 img.src = data[i]['add_image_src' + (j+1)]; 395 396 img.onmouseover = function(e) { 397 e.target.closest('.list__item').querySelector('.item__thumb img').setAttribute('src', e.target.getAttribute('src')); 398 } 399 img.onmouseout = function(e) { 400 var origin = e.target.closest('.list__item').querySelector('.item__thumb img'); 401 origin.setAttribute('src', origin.getAttribute('data-origin-src')); 402 } 403 404 button.append(img); 405 li.append(button); 406 ul.append(li); 407 } 408 } 409 el.insertBefore(ul, elChildName); 410 } 411 } 412 } 413 }); 414 } 415} 416*/ 417 418function scrollToTarget(target) { 419 const targetElement = document.getElementById(target); 420 targetElement.scrollIntoView({ behavior: 'smooth' }); 421} 422 423function isMobileDevice() { 424 const userAgent = navigator.userAgent.toLowerCase(); 425 const isMobile = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/.test(userAgent); 426 const isNarrowScreen = window.innerWidth <= 720; 427 return isMobile || isNarrowScreen; 428}
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.