/************************************************************************************************************ (C) www.dhtmlgoodies.com, March 2006 This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website. Terms of use: You are free to use this script as long as the copyright message is kept intact. However, you may not redistribute, sell or repost it without our permission. Version: 1.0 Released March. 3rd 2006 Thank you! www.dhtmlgoodies.com Alf Magne Kalleland ************************************************************************************************************/ var flyingSpeed = 25; var url_addProductToBasket = '/index.php?module=catalog&add_to_cart'; var url_removeProductFromBasket = '/index.php?module=catalog&remove_from_cart'; var txt_totalPrice = 'Всего: '; var shopping_cart_div = false; var flyingDiv = false; var currentProductDiv = false; var shopping_cart_x = false; var shopping_cart_y = false; var slide_xFactor = false; var slide_yFactor = false; var diffX = false; var diffY = false; var currentXPos = false; var currentYPos = false; var ajaxObjects = new Array(); var count_of_orders=0; function shoppingCart_getTopPos(inputObj) { var returnValue = inputObj.offsetTop; while((inputObj = inputObj.offsetParent) != null){ if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop; } return returnValue; } function shoppingCart_getLeftPos(inputObj) { var returnValue = inputObj.offsetLeft; while((inputObj = inputObj.offsetParent) != null){ if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft; } return returnValue; } var count_set = 0; function addToBasket(productId, count) { if(!count) { count=count_set; } if(!count && document.getElementById('product_count')!==null) { count=parseFloat(document.getElementById('product_count').value); } if(count>=1) { count_set = count; if(!shopping_cart_div)shopping_cart_div = document.getElementById('shopping_cart'); if(!flyingDiv){ flyingDiv = document.createElement('DIV'); flyingDiv.style.position = 'absolute'; document.body.appendChild(flyingDiv); } shopping_cart_x = shoppingCart_getLeftPos(shopping_cart_div); shopping_cart_y = shoppingCart_getTopPos(shopping_cart_div); currentProductDiv = document.getElementById('slidingProduct' + productId); currentXPos = shoppingCart_getLeftPos(currentProductDiv); currentYPos = shoppingCart_getTopPos(currentProductDiv); diffX = shopping_cart_x - currentXPos; diffY = shopping_cart_y - currentYPos; var shoppingContentCopy = currentProductDiv.cloneNode(true); shoppingContentCopy.id=''; flyingDiv.innerHTML = ''; flyingDiv.style.left = currentXPos + 'px'; flyingDiv.style.top = currentYPos + 'px'; flyingDiv.appendChild(shoppingContentCopy); flyingDiv.style.display='block'; flyingDiv.style.width = currentProductDiv.offsetWidth + 'px'; flyToBasket(productId, count); } else { alert('Количество товара необходимо указывать целым числом.'); } } function flyToBasket(productId, count) { var maxDiff = Math.max(Math.abs(diffX),Math.abs(diffY)); var moveX = (diffX / maxDiff) * flyingSpeed;; var moveY = (diffY / maxDiff) * flyingSpeed; currentXPos = currentXPos + moveX; currentYPos = currentYPos + moveY; flyingDiv.style.left = Math.round(currentXPos) + 'px'; flyingDiv.style.top = Math.round(currentYPos) + 'px'; if (typeof(count)=="undefined") count = 1; if(moveX>0 && currentXPos > shopping_cart_x){ flyingDiv.style.display='none'; } if(moveX<0 && currentXPos < shopping_cart_x){ flyingDiv.style.display='none'; } if(flyingDiv.style.display=='block')setTimeout('flyToBasket("' + productId + '", '+count+')',10); else ajaxAddProduct(productId, count); } function showAjaxBasketContent(ajaxIndex) { // Getting a reference to the shopping cart items table var itemBox = document.getElementById('shopping_cart_items'); var productItems = ajaxObjects[ajaxIndex].response.split('|||'); // Breaking response from Ajax into tokens if(document.getElementById('shopping_cart_items_product' + productItems[0])) { $quantity = jQuery('#shopping_cart_items_product'+productItems[0]).find('.cart_quantity span'); $price = jQuery('#shopping_cart_items_product'+productItems[0]).find('.cart_price span'); price_val = parseInt($price.html()); price_val += parseInt(productItems[3]); $price.html(price_val); quantity_val = parseInt($quantity.html()); quantity_val += parseInt(productItems[2]); $quantity.html(quantity_val); } else { count_of_orders++; var tr = itemBox.insertRow(-1); tr.id = 'shopping_cart_items_product' + productItems[0]; var td = tr.insertCell(-1); td.style.paddingBottom = '4px'; td.innerHTML = "
" + "
" + ""+productItems[1]+"" + "
" + "
Общая цена: "+productItems[3]+"
" + "
Количество: "+productItems[2]+"
" + "
" + "Удалить" + "
" + "
"; if (count_of_orders > 0) { if ($('no_articles')) { $('no_articles').style.display = 'none'; } document.getElementById("order_all_btn").style.display = 'block'; } else { if ($('no_articles')) { $('no_articles').style.display = 'block'; } document.getElementById("order_all_btn").style.display = 'none'; } } ajaxObjects[ajaxIndex] = false; } function removeProductFromBasket(productId) { var productRow = document.getElementById('shopping_cart_items_product' + productId); count_of_orders--; if (count_of_orders > 0) { $('no_articles').style.display = 'none'; } else { if (count_of_orders < 1) { $('no_articles').style.display = 'block'; } document.getElementById("order_all_btn").style.display = 'none'; } var numberOfItemCell = productRow.cells[0]; productRow.parentNode.removeChild(productRow); ajaxRemoveProduct(productId); } function ajaxValidateRemovedProduct(ajaxIndex) { if(ajaxObjects[ajaxIndex].response!='OK')alert('Error while removing product from the database '+ajaxObjects[ajaxIndex].response+''); } function ajaxRemoveProduct(productId) { var ajaxIndex = ajaxObjects.length; ajaxObjects[ajaxIndex] = new sack(); ajaxObjects[ajaxIndex].requestFile = url_removeProductFromBasket; // Saving product in this file ajaxObjects[ajaxIndex].setVar('productIdToRemove', productId); ajaxObjects[ajaxIndex].onCompletion = function(){ ajaxValidateRemovedProduct(ajaxIndex); }; // Specify function that will be executed after file has been found ajaxObjects[ajaxIndex].runAJAX(); // Execute AJAX function } function ajaxAddProduct(productId, count, append) { if(typeof(append)=='undefined') append = false; if(count) { count_set = count; } if(count_set >= 1) { document.getElementById("cart_box").style.display=""; var ajaxIndex = ajaxObjects.length; ajaxObjects[ajaxIndex] = new sack(); ajaxObjects[ajaxIndex].requestFile = url_addProductToBasket; // Saving product in this file ajaxObjects[ajaxIndex].setVar('productId', productId); ajaxObjects[ajaxIndex].setVar('count', count_set); ajaxObjects[ajaxIndex].setVar('append', append); ajaxObjects[ajaxIndex].onCompletion = function(){showAjaxBasketContent(ajaxIndex);}; // Specify function that will be executed after file has been found ajaxObjects[ajaxIndex].runAJAX(); // Execute AJAX function } else { alert('Количество товара необходимо указывать положительным, целым числом.'); } }