📄 product.js
字号:
//global variablesvar combinations = new Array();var selectedCombination = new Array();var globalQuantity = new Number;var colors = new Array();//add a combination of attributes in the global JS sytemfunction addCombination(idCombination, arrayOfIdAttributes, quantity, price, ecotax, id_image){ globalQuantity += quantity; var combination = new Array(); combination['idCombination'] = idCombination; combination['quantity'] = quantity; combination['idsAttributes'] = arrayOfIdAttributes; combination['price'] = price; combination['ecotax'] = ecotax; combination['image'] = id_image; combinations.push(combination);}// search the combinations' case of attributes and update displaying of availability, prices, ecotax, and imagefunction findCombination(){ //create a temporary 'choice' array containing the choices of the customer var choice = new Array(); $('div#attributes select').each(function(){ choice.push($(this).val()); }); var nbAttributesEquals = 0; //testing every combination to find the conbination's attributes' case of the user for (combination in combinations) { //verify if this combinaison is the same that the user's choice nbAttributesEquals = 0; for (idAttribute in combinations[combination]['idsAttributes']) { //ie6 bug fix if (idAttribute != 'indexOf'){ //if this attribute has been choose by user if (in_array(combinations[combination]['idsAttributes'][idAttribute], choice)) { //we are in a good way to find the good combination ! nbAttributesEquals++; } } } if (nbAttributesEquals == choice.length) { //combination of the user has been found in our specifications of combinations (created in back office) selectedCombination['unavailable'] = false; $('#idCombination').val(combinations[combination]['idCombination']); //get the data of product with these attributes quantityAvailable = combinations[combination]['quantity']; selectedCombination['price'] = combinations[combination]['price']; if (combinations[combination]['ecotax']) selectedCombination['ecotax'] = combinations[combination]['ecotax']; else selectedCombination['ecotax'] = default_eco_tax; //show the large image in relation to the selected combination if (combinations[combination]['image'] && combinations[combination]['image'] != -1) displayImage( $('#thumb_'+combinations[combination]['image']).parent() ); //update the display updateDisplay(); //leave the function because combination has been found return; } } //this combination don't exist (not created in back office) selectedCombination['unavailable'] = true; updateDisplay();}function updateColorSelect(id_attribute){ // Visual effect $('#color_'+id_attribute).fadeTo('fast', 1, function(){ $(this).fadeTo('slow', 0, function(){ $(this).fadeTo('slow', 1, function(){}); }); }); // Attribute selection $('#group_'+id_color_default+' option[value='+id_attribute+']').attr('selected', 'selected'); $('#group_'+id_color_default+' option[value!='+id_attribute+']').removeAttr('selected'); findCombination();}//update display of the availability of the product AND the prices of the productfunction updateDisplay(){ if (!selectedCombination['unavailable'] && quantityAvailable > 0) { //show the choice of quantities $('#quantity_wanted_p:hidden').show('slow'); //show the "add to cart" button ONLY if it was hidden $('#add_to_cart:hidden').fadeIn(600); //availability value management if (availabilityValue != '') { //update the availability statut of the product $('#availability_value').removeClass('warning-inline'); $('#availability_value').text(availabilityValue); $('#availability_statut:hidden').show(); } else { //hide the availability value $('#availability_statut:visible').hide(); } //'last quantities' message management if (quantityAvailable <= maxQuantityToAllowDisplayOfLastQuantityMessage) { //display the 'last quantities' message $('#last_quantities').show('slow'); } else { //hide the 'last quantities' message $('#last_quantities').hide('slow'); } //display the quantities of pieces (only if allowed) if (quantitiesDisplayAllowed) { $('#pQuantityAvailable:hidden').show('slow'); $('#quantityAvailable').text(quantityAvailable); if(quantityAvailable < 2) { $('#quantityAvailableTxt').show(); $('#quantityAvailableTxtMultiple').hide(); } else { $('#quantityAvailableTxt').hide(); $('#quantityAvailableTxtMultiple').show(); } } } else { //hide 'last quantities' message if it was previously visible $('#last_quantities:visible').hide('slow'); //hide the quantity of pieces if it was previously visible $('#pQuantityAvailable:visible').hide('slow'); //hide the choice of quantities $('#quantity_wanted_p:visible').hide('slow'); //display that the product is unavailable with theses attributes if (!selectedCombination['unavailable']) $('#availability_value').text(doesntExistNoMore + (globalQuantity > 0 ? ' ' + doesntExistNoMoreBut : '')).addClass('warning-inline'); else $('#availability_value').text(doesntExist).addClass('warning-inline'); $('#availability_statut:hidden').show(); //show the 'add to cart' button ONLY IF it's possible to buy when out of stock AND if it was previously invisible if (allowBuyWhenOutOfStock && !selectedCombination['unavailable']) { $('#add_to_cart:hidden').fadeIn(600); $('p#availability_statut:visible').hide('slow'); } else { $('#add_to_cart:visible').fadeOut(600); $('p#availability_statut:hidden').show('slow'); } } //update display of the the prices in relation to tax, discount, ecotax, and currency criteria if (!selectedCombination['unavailable']) { var attribut_price_tmp = selectedCombination['price']; var tax = (taxRate / 100) + 1; if (noTaxForThisProduct) attribut_price_tmp /= tax; var productPriceWithoutReduction2 = (attribut_price_tmp + productPriceWithoutReduction) * currencyRate; if (reduction_from != reduction_to && (currentDate > reduction_to || currentDate < reduction_from)) var priceReduct = 0; else var priceReduct = productPriceWithoutReduction2 / 100 * parseFloat(reduction_percent) + reduction_price; var priceProduct = productPriceWithoutReduction2 - priceReduct; var productPricePretaxed = (productPriceWithoutReduction2 - priceReduct) / tax; $('#our_price_display').text(formatCurrency(priceProduct, currencyFormat, currencySign)); $('#pretaxe_price_display').text(formatCurrency(productPricePretaxed, currencyFormat, currencySign)); $('#old_price_display').text(formatCurrency(productPriceWithoutReduction2, currencyFormat, currencySign)); $('#ecotax_price_display').text(formatCurrency(selectedCombination['ecotax'], currencyFormat, currencySign)); }}//update display of the large imagefunction displayImage(domAAroundImgThumb){ if (!domAAroundImgThumb.hasClass('shown')) { if (domAAroundImgThumb.attr('href')) { var newSrc = domAAroundImgThumb.attr('href').replace('thickbox','large'); $('#bigpic').fadeOut('fast', function(){ $(this).attr('src', newSrc); $(this).fadeIn('fast'); }); $('#views_block li a').removeClass('shown'); $(domAAroundImgThumb).addClass('shown'); } }}//To do after loading HTML$(document).ready(function(){ //init the serialScroll for thumbs $('#thumbs_list').serialScroll({ items:'li', prev:'a#view_scroll_left', next:'a#view_scroll_right', axis:'x', offset:0, start:0, stop:true, duration:700, step: 2, lock: false, force:false, cycle:false }); //hover 'other views' images management $('#views_block li a').hover( function(){displayImage($(this));}, function(){} ); //add a link on the span 'view full size' and on the big image $('span#view_full_size, div#image-block img').click(function(){ $('#views_block li a.shown').click(); }); //catch the click on the "more infos" button at the top of the page $('div#short_description_block p a.button').click(function(){ $('#more_info_tab_more_info').click(); $.scrollTo( '#more_info_tabs', 1200 ); }); //init the price in relation of the selected attributes if (typeof productHasAttributes != 'undefined' && productHasAttributes) findCombination();});
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -