$(function (){ $(".btn_cart").on("click", function() { var it_id = $(this).data("it_id"); var $opt = $(this).parent().siblings(".sct_cart_op"); var $btn = $(this).parent(); $(".sct_cart_op").not($opt).css("display", ""); $.ajax({ url: g5_theme_shop_url+"/ajax.itemoption.php", type: "POST", data: { "it_id" : it_id }, dataType: "json", async: true, cache: false, success: function(data, textStatus) { if(data.error != "") { alert(data.error); return false; } $opt.html(data.html); if(!data.option) { add_cart($opt.find("form").get(0)); return; } $btn.css("display","none"); $opt.css("display","block"); $("select.it_option").fancyOptionSelect(); } }); }); $("li.sct_li").on("mouseover", function() { var $opt = $(this).find(".sct_cart_op"); var $btn = $(this).find(".sct_cart_btn"); if($opt.is(":hidden") && $btn.is(":hidden")) $btn.css("display", "block"); }); $("li.sct_li").on("mouseout", function() { var $opt = $(this).find(".sct_cart_op"); var $btn = $(this).find(".sct_cart_btn"); if($opt.is(":hidden") && $btn.is(":visible")) $btn.css("display", ""); }); $(document).on("click", ".cart_add", function() { add_cart(this.form); }); $(document).on("click", ".cartop_close", function() { var $el = $(this).closest(".sct_cart_op"); $el.css("display","none"); }); $(".btn_wish").on("click", function() { add_wishitem(this); }); }); function add_wishitem(el) { var $el = $(el); var it_id = $el.data("it_id"); if(!it_id) { alert("상품코드가 올바르지 않습니다."); return false; } $.post( g5_theme_shop_url + "/ajax.wishupdate.php", { it_id: it_id }, function(error) { if(error != "OK") { alert(error.replace(/\\n/g, "\n")); return false; } alert("상품을 위시리스트에 담았습니다."); return; } ); } function add_cart(frm) { var $frm = $(frm); var $opt = $frm.find("ul.options li.selected"); var $sel = $frm.find("select.it_option"); var it_name = $frm.find("input[name^=it_name]").val(); var it_price = parseInt($frm.find("input[name^=it_price]").val()); var id = ""; var value, info, sel_opt, item, price, stock, run_error = false; var option = sep = ""; var count = $opt.size(); if($sel.size() != count) { alert("상품의 옵션을 선택해 주십시오."); return false; } if(count > 0) { info = $opt.eq(count - 1).data("raw-value").split(","); $opt.each(function(index) { value = String($(this).data("raw-value")); item = $(this).closest(".fancy-select").prev("label").text(); if(!value) { run_error = true; return false; } // 옵션선택정보 sel_opt = value.split(",")[0]; if(id == "") { id = sel_opt; } else { id += chr(30)+sel_opt; sep = " / "; } option += sep + item + ":" + sel_opt; }); if(run_error) { alert(it_name+"의 "+item+"을(를) 선택해 주십시오."); return false; } price = info[1]; stock = info[2]; } else { price = 0; stock = $frm.find("input[name^=it_stock]").val(); option = it_name; } // 금액 음수 체크 if(it_price + parseInt(price) < 0) { alert("구매금액이 음수인 상품은 구매할 수 없습니다."); return false; } // 옵션 선택정보 적용 $frm.find("input[name^=io_id]").val(id); $frm.find("input[name^=io_value]").val(option); $frm.find("input[name^=io_price]").val(price); $.ajax({ url: frm.action, type: "POST", data: $(frm).serialize(), dataType: "json", async: true, cache: false, success: function(data, textStatus) { if(data.error != "") { alert(data.error); return false; } alert("상품을 장바구니에 담았습니다."); } }); return false; } // php chr() 대응 if(typeof chr == "undefined") { function chr(code) { return String.fromCharCode(code); } } // Generated by CoffeeScript 1.4.0 // Modified chicpro (function() { var $; $ = window.jQuery || window.Zepto || window.$; $.fn.fancyOptionSelect = function(opts) { var isiOS, settings; if (opts == null) { opts = {}; } settings = $.extend({ forceiOS: false, includeBlank: false, optionTemplate: function(optionEl) { return optionEl.text(); }, triggerTemplate: function(optionEl) { return optionEl.text(); } }, opts); isiOS = !!navigator.userAgent.match(/iP(hone|od|ad)/i); return this.each(function() { var copyOptionsToList, disabled, options, sel, trigger, updateTriggerText, wrapper; sel = $(this); if (sel.hasClass('fancified') || sel[0].tagName !== 'SELECT') { return; } sel.addClass('fancified'); sel.css({ width: 1, height: 1, display: 'block', position: 'absolute', top: 0, left: 0, opacity: 0 }); sel.wrap('
'); wrapper = sel.parent(); if (sel.data('class')) { wrapper.addClass(sel.data('class')); } wrapper.append('
'); if (!(isiOS && !settings.forceiOS)) { wrapper.append('