$(document).ready(function(){ var FEEDBACK_GENERAL_ERROR = "feedback-general-error"; var FEEDBACK_LOGIN_REQUIRED = "feedback-login-required"; var FEEDBACK_ADD_CART_SUCCESS = "feedback-add-cart-success"; var FEEDBACK_REMOVE_CART_SUCCESS = "feedback-remove-cart-success"; var FEEDBACK_UPDATE_CART_SUCCESS = "feedback-update-cart-success"; var FEEDBACK_ADD_WISHLIST_SUCCESS = "feedback-add-wishlist-success"; var FEEDBACK_REMOVE_WISHLIST_SUCCESS = "feedback-remove-wishlist-success"; var FEEDBACK_UPDATE_CART_QTY_SUCCESS = "feedback-update-cart-qty-success"; var FEEDBACK_MYCART_UPDATE_ERROR = "feedback-mycart-update-error"; var FEEDBACK_WISHLIST_UPDATE_ERROR = "feedback-wishlist-update-error"; var FEEDBACK_MYPURCHASE_CANCEL_ORDER_SUCCESS = "feedback-mypurchase-cancel-order-success"; var SHOW_LOADING_DELAY = 1000; var $html = $("html"); var $body = $("body"); var $headerBar = $("#header-bar"); function ajaxPost(url, data, success, error){ ajaxSend("POST", url, data, success, error); } function ajaxGet (url, data, success, error){ ajaxSend("GET" , url, data, success, error); } function ajaxSend(method, url, data, success, error){ $.ajax({ type : method, url : url, data : data, success : success, dataType: "text" }).fail(error); } function addHeaderCartCounter(value){ addHeaderCounter("mycart", value); } function updateHeaderCartCounter(value){ updateHeaderCounter("mycart", value); } function getHeaderCounter(key){ var $item = $headerBar.find(".header-bar-item-"+key); var $num = $item.find(".header-bar-item-button-num"); if($num.length == 0){ return 0; } return parseInt($num.find(".header-bar-item-button-num-wrapper").text()); } function addHeaderCounter(key, num){ var counter = getHeaderCounter(key); updateHeaderCounter(key, counter + num); } function updateHeaderCounter(key, num){ var $item = $headerBar.find(".header-bar-item-"+key); var $num = $item.find(".header-bar-item-button-num"); if(num == 0){ $num.remove(); }else{ if($num.length == 0){ $num = $("
"); var $wrapper = $("
"); $wrapper.text(num); $num.append($wrapper); $item.find(".header-bar-item-button").append($num); }else{ $num.find(".header-bar-item-button-num-wrapper").text(num); } } } function appendLoading($parent){ var spinner = $parent.data("spinner"); if(spinner == null){ var opt = { color : "#e18078", //color: "#ffffff", zIndex: "auto" //shadow: true }; spinner = new Spinner(opt).spin(); $parent.data("spinner",spinner); $parent.append($(spinner.el)); }else{ spinner.spin(); } } function removeLoading($parent){ var spinner = $parent.data("spinner"); if(spinner == null) return; spinner.stop(); } function isLogged(){ return $body.hasClass("logged"); } function productAction(url, data, successFeedback, errorFeedback, successCallback, errorCallback){ function success(response){ if(response == "1"){ log("success"); hideModalLoading(); if(isBlank(successFeedback)){ if(successCallback != null){ successCallback(response); } }else{ feedback(successFeedback, function(){ if(successCallback != null){ successCallback(response); } }); } }else{ error(response); } } function error(response){ log("error"); log(response); hideModalLoading(); if(isBlank(errorFeedback)){ if(errorCallback != null){ errorCallback(response); } }else{ feedback(errorFeedback, function(){ if(errorCallback != null){ errorCallback(response); } }); } } showModalLoading(); //return; if(SHOW_LOADING_DELAY>0){ setTimeout(function(){ ajaxPost(url, data, success, error); }, SHOW_LOADING_DELAY); }else{ ajaxPost(url, data, success, error); } } function myAjaxPost(url, data, success, error){ if(SHOW_LOADING_DELAY>0){ setTimeout(function(){ ajaxPost(url, data, success, error); }, SHOW_LOADING_DELAY); }else{ ajaxPost(url, data, success, error); } } // call from product function removeProductFromWishlistByProductId(product_id, successCallback, errorCallback){ log("removeProductFromWishlist"); var url = "xml/removeProductFromWishlist.php"; var data = {product_id:product_id}; productAction(url, data, "", "", successCallback, errorCallback); } function removeProductFromWishlistById(id, successCallback, errorCallback){ log("removeProductFromWishlist"); var url = "xml/removeProductFromWishlist.php"; var data = {id:id}; productAction(url, data, "", "", successCallback, errorCallback); } function addProductToWishlistByProductId(product_id, successCallback, errorCallback){ log("addProductToWishlist"); var url = "xml/addProductToWishlist.php"; var data = {product_id:product_id}; productAction(url, data, "", FEEDBACK_GENERAL_ERROR, successCallback, errorCallback); } function addProductToCart(productID, colorID, sizeID, successCallback, errorCallback){ log("addProductToCart"); var url = "xml/addProductToCart.php"; var data = {id:productID, color:colorID, size:sizeID}; productAction(url, data, "", FEEDBACK_GENERAL_ERROR, successCallback, errorCallback); } function updateCart(cartItemID, productID, colorID, sizeID, qty,successCallback, errorCallback){ log("updateCart"); var url = "xml/updateProductToCart.php"; var data = {id:productID, cart_id:cartItemID, color:colorID, size:sizeID, qty:qty}; productAction(url, data, "", FEEDBACK_GENERAL_ERROR, successCallback, errorCallback); } // call from mycart function removeProductFromCart(cartItemID, successCallback, errorCallback){ log("removeProductFromCart"); var url = "xml/removeProductFromCart.php"; var data = {cart_id:cartItemID}; productAction(url, data, "", "", successCallback, errorCallback); } function updateCartQty(cartItemID, qty, successCallback, errorCallback){ log("updateCartQty"); var url = "xml/updateCartQty.php"; var data = {cart_id:cartItemID, qty:qty}; productAction(url, data, "", "", successCallback, errorCallback); } function getMemberDiscount(amount, success, error){ var url = "xml/getMemberDiscount.php"; var data = {amount:amount}; if(SHOW_LOADING_DELAY > 0){ setTimeout(function(){ ajaxPost(url, data, success, error); }, SHOW_LOADING_DELAY); }else{ ajaxPost(url, data, success, error); } } function showModalLoading(){ var $loading = $(""); var options = { noClose : true, noPadding : true, noBoxShadow : true, noBackground: true }; overlay($loading); appendLoading($loading); /* var $loading = $(""); var options = {noClose:true, noPadding:true}; lightbox($loading, options); */ } function hideModalLoading(){ removeLoading($("#modal-loading")); unmodal(); } function modal(){ var $modal = $("
"); $body.append($modal).addClass("modal"); return $modal; /* var $clickable = $(""); $modal.append($clickable).append($stuff); $body.append($modal).addClass("modal"); if(click != null){ $clickable.click(click); } */ } function unmodal(callback){ $("#modal").remove(); $body.removeClass("modal"); if(callback != null){ callback(); } } function overlay($panel){ lightbox($panel, false, false, false); } function lightboxFrame($panel, afterClosed){ lightbox($panel, false, false, true, afterClosed); } function lightboxWindow($panel, afterClosed){ lightbox($panel, true, true, true, afterClosed); } function lightboxMessageNoClose($panel){ lightbox($panel, true, false, false); } function lightboxMessage($panel, afterClosed){ lightbox($panel, true, false, true, afterClosed); } function lightbox($panel, withStyle, withPadding, withClose, afterClosed){ function onClose(){ lightbox_close(afterClosed); } var $modal = modal(); var $table = $(""); $table.hide(); var $cell = $(""); var $win = $(""); $win.append($panel); if(withStyle == true){ $win.addClass("lightbox-window-with-style"); } if(withPadding == true){ $win.addClass("lightbox-window-with-padding"); } $cell.append($win); $table.append($cell); $modal.append($table); // if(withClose == true){ var $close = get_lightbox_close_button(); $close.click(onClose); if(withPadding == true){ $win.addClass("lightbox-window-with-close-button"); } $win.append($close); var $clickable1 = $(""); var $clickable2 = $(""); $clickable1.click(onClose); $clickable2.click(onClose); $modal.prepend($clickable1); $cell.prepend($clickable2); } // $table.fadeIn(); } /* function lightbox($panel, options, afterClosed){ function onClose(){ lightbox_close(afterClosed); } var $modal = modal(); var $table = $(""); $table.hide(); var $cell = $(""); var $win = $(""); $win.append($panel); if(options){ if(options.noPadding){ $win.addClass("lightbox-window-no-padding"); } if(options.noBoxShadow){ $win.addClass("lightbox-window-no-box-shadow"); } if(options.noBackground){ $win.addClass("lightbox-window-no-background"); } } if(options && options.noClose){ }else{ var $close = get_lightbox_close_button(); $close.click(onClose); $win.addClass("lightbox-window-with-close-button").append($close); var $clickable1 = $(""); var $clickable2 = $(""); $clickable1.click(onClose); $clickable2.click(onClose); $modal.append($clickable1); $cell.append($clickable2); } $cell.append($win); $table.append($cell); $modal.append($table); $table.fadeIn(); }*/ function get_lightbox_close_button(){ return $(""); } function lightbox_close(callback){ var $modal = $("#modal"); if($modal.length == 0) { if(callback != null){ callback(); } return; } $modal.find(".lightbox-table").fadeOut("fast", function(){ unmodal(callback); }); } function getFeedbackMessagePanel(text){ var $wrapper = $("
"); var $div = $("
"); $wrapper.append($div); $div.text(text); return $wrapper; } function getFeedbackMessage(key){ return $("#"+key).text(); } function feedback(key, afterClosed){ feedbackMessage(getFeedbackMessage(key), afterClosed); } function feedbackMessage(text, afterClosed){ //var $wrapper = $("
"); //var $div = $("
"); //$wrapper.append($div); //$div.text(text); lightboxMessage(getFeedbackMessagePanel(text), afterClosed); } function requireLogin(){ var text = $("#"+FEEDBACK_LOGIN_REQUIRED).text(); var $wrapper = $("
"); var $div = $("
"); $wrapper.append($div); $div.text(text); var $button = $(""); $button.text("login"); $div.append($button); lightboxMessage($wrapper); } function isCanvasSupported(){ var elem = document.createElement('canvas'); return !!(elem.getContext && elem.getContext('2d')); }function initForm(){ log("initForm()"); function initCommonForm(){ var $form = $("form.common-form"); if($form.length == 0) return; log("initCommonForm()"); var $submit = $form.find(".form-input-submit"); // function onsubmit(){ log("onsubmit()"); $form[0].submit(); } // if($submit.is("input[type='submit']")){ $form.bind("submit", function(e){ e.preventDefault(); if($submit.hasClass("common-button-disabled")) return; onsubmit(); }); }else{ $submit.click(function(){ if($submit.hasClass("common-button-disabled")) return; onsubmit(); }); } $form.bind("submit", function(e){ e.preventDefault(); if($submit.hasClass("common-button-disabled")) return; onsubmit() }); /* $submit.click(function(){ if($(this).hasClass("common-button-disabled")) return; onsubmit(); });*/ SimpleForm_initForm($form, $submit); } /* function isInputText($input){ return $input.hasClass("form-input-text"); } function isInputTextarea($input){ return $input.hasClass("form-input-textarea"); } function isInputSelect($input){ return $input.hasClass("form-input-select"); } function isInputEmail($input){ return $input.hasClass("form-input-email"); } function isInputPassword($input){ return $input.hasClass("form-input-password"); } function isInputConfirmPassword($input){ return $input.hasClass("form-input-confirm-password"); } function initCommonForm(){ // function submitForm($form){ //alert("submit"); log(".submit()"); $form[0].submit(); } function validateElement($element){ clearElementError($element); var $input = $element.find(".form-input"); var skip_validate = ($input.attr("data-validate")=="false"); // function validateRequired(){ //$element.removeClass("form-element-validate-error-required"); if(!$element.hasClass("form-element-required")) return true; if(isInputText($input) || isInputTextarea($input) || isInputEmail($input) || isInputPassword($input) || isInputConfirmPassword($input)){ return !isBlank($input.val()); }else if(isInputSelect($input)){ return ($input[0].selectedIndex != 0); } return false; } function isValidPassword(password){ var regExp = new RegExp(/^.{6,8}$/); return regExp.test(password); } function validateEmail(){ //$element.removeClass("form-element-validate-error-email"); if(!isInputEmail($input)) return true; return isValidEmail($input.val()); } function validatePassword(){ if( (!isInputPassword($input)) && (!isInputConfirmPassword($input)) ) return true; //if(!isInputPassword($input)) return true; return isValidPassword($input.val()); } function validateConfirmPassword(){ if(!isInputConfirmPassword($input)) return true; var password = $input.closest("form").find(".form-input-password").val(); var confpswd = $input.val(); return (password==confpswd); } // //log("validateElement " + $input.attr("name")); if(!validateRequired()) { if(!skip_validate){ addElementValidateError($element, "required"); } return false; } // if(skip_validate) return true; // if(!validateEmail()){ addElementValidateError($element, "email"); return false; } if(!validatePassword()){ addElementValidateError($element, "password"); return false; } if(!validateConfirmPassword()){ addElementValidateError($element, "confirm-password"); return false; } // return true; } function validateForm($form){//return true; var result = true; $form.find(".form-element").each(function(){ if(!validateElement($(this))){ result = false; } }); return result; } function addElementValidateError($element, error){ $element.addClass("form-element-error"); var errorClass = "form-element-validate-error-" + error; var errorData = $element.data("validateError"); if(errorData == null){ errorData = []; } errorData.push(errorClass); $element.data("validateError", errorData); $element.addClass(errorClass); } function clearElementError($element){ $element.removeClass("form-element-error"); var errorData = $element.data("validateError"); if(errorData == null) return; for(var i=0;i0)?index+1:index-1; target = Math.max(0, target); target = Math.min(target, MAX_INDEX); var ml = -target * step; $itemWrapper.attr("data-index", target); $itemWrapper.animate({"margin-left":ml}, dur, easing); update(target); } function update(target){ if(target>0){ leftButton.addClass("index-highlight-collection-button-left-active"); }else{ leftButton.removeClass("index-highlight-collection-button-left-active"); } if(target