/************************************************************************************************************ (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 = site_url+'/index.php?module=catalog&add_to_cart'; var url_removeProductFromBasket = site_url+'/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); } else { alert('Количество товара необходимо указывать целым числом.'); } } function scrollTo(element, to, duration) { if (duration <= 0) return; var difference = to - element.scrollTop; var perTick = difference / duration * 10; setTimeout(function() { element.scrollTop = element.scrollTop + perTick; if (element.scrollTop === to) return; scrollTo(element, to, duration - 10); }, 10); } function flyToBasket(productId) { flyingDiv.style.display='none'; flyingDiv.style.display='none'; ajaxAddProduct(productId); scrollTo(document.body, 600, 400); } 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])) { alert('Вы уже добавили этот товар в корзину!'); } else { count_of_orders++; var tr = itemBox.insertRow(-1); tr.id = 'shopping_cart_items_product' + productItems[0]; var ins_body = ""; var td = tr.insertCell(-1); td.style.paddingBottom = '4px'; ins_body += "
"; ins_body += ""+productItems[1]+"
"; ins_body += "
Общая цена: "+productItems[3]+"
"; ins_body += "
Количество: "+productItems[2]+"
"; ins_body += "
"; ins_body += "Удалить"; ins_body += ""; ins_body += "Заказать
"; td.innerHTML = ins_body; if(count_of_orders>0) { if($('no_articles')) { $('no_articles').style.display = 'none'; } } else { if($('no_articles')) { $('no_articles').style.display = 'block'; } } if(count_of_orders>1) { document.getElementById("order_all_btn").style.display = 'block'; } else { 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>1) { $('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) { if(count) { count_set = count; } if(count_set >= 1) { 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].onCompletion = function(){showAjaxBasketContent(ajaxIndex);}; // Specify function that will be executed after file has been found ajaxObjects[ajaxIndex].runAJAX(); // Execute AJAX function } else { alert('Количество товара необходимо указывать положительным, целым числом.'); } }