/************************************************************************************************************ (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 = '/shopping_cart/addProduct.php'; var url_removeProductFromBasket = '/shopping_cart/removeProduct.php'; /*var txt_totalPrice = 'Total: ';*/ var txt_totalItems = ' '; var txt_totalItems2 = ' '; 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(); 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; } function addToBasket(productId){ 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); } function flyToBasket(productId){ var maxDiff = Math.max(Math.abs(diffX),Math.abs(diffY)); var moveX = (diffX / maxDiff) * flyingSpeed;; var moveY = (diffY / maxDiff) * flyingSpeed; var comp_form = 'comprar_'+productId; currentXPos = currentXPos + moveX; currentYPos = currentYPos + moveY; flyingDiv.style.left = Math.round(currentXPos) + 'px'; flyingDiv.style.top = Math.round(currentYPos) + 'px'; if(moveX>0 && currentXPos > shopping_cart_x){ flyingDiv.style.display='none'; } if(moveX<0 && currentXPos < shopping_cart_x){ flyingDiv.style.display='none'; } /* if(document.getElementById('shopping_cart_items_product' + productId)){ removeProductFromBasket(productId); }// Product isn't allready in the basket - add a new row */ if(flyingDiv.style.display=='block')setTimeout('flyToBasket("' + productId + '")',10); else ajaxAddProduct(productId, eval("document."+comp_form+".quantity.value")); } function showAjaxBasketContent(ajaxIndex,productId){ // 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 AddProducto(productId); /* if(document.getElementById('shopping_cart_items_product' + productItems[0])){ // L'element ja existeix var element = 'qty_'+productItems[0]; if (productItems[3] == 1){ // Decrementar a off var dec_icon = ''; }else{ // Activem l'icona de decrementar var dec_icon = ''; } var inc_icon = '
Qty: '+productItems[3]+'
'; element2 = 'icones_'+productItems[0]; document.getElementById(element2).innerHTML = inc_icon+dec_icon+'
'; }else{ // L'element encara no existeix var tr = itemBox.insertRow(-1); tr.id = 'shopping_cart_items_product' + productItems[0]; var td = tr.insertCell(-1); td.setAttribute('width','60'); td.innerHTML = ''; if (productItems[3] == 1){ // Decrementar a off var dec_icon = ''; }else{ // Activem l'icona de decrementar var dec_icon = ''; } var inc_icon = '
Qty: '+productItems[3]+'
'; var td = tr.insertCell(-1); td.setAttribute('valign','top'); td.innerHTML = '
'+productItems[1]+'
'+inc_icon+dec_icon+'
'; /*var td = tr.insertCell(-1);*/ /*var a = document.createElement('A'); td.appendChild(a); a.href = '#'; a.onclick = function(){ removeProductFromBasket(productItems[0]); }; var img = document.createElement('IMG'); img.src = '/media/remove.gif'; a.appendChild(img); //td.innerHTML = ''; } ajaxObjects[ajaxIndex] = false; */ } function AddProducto(productId) { //$('totales_carrito').innerHTML = $('totales_carrito').innerHTML + 1; var SumaProductos = parseInt(document.getElementById('totales_carrito').innerHTML) + parseInt('1'); document.getElementById('totales_carrito').innerHTML = SumaProductos; //$('anadir_produc_'+ productId).innerHTML = ''; } /* function incrementProduct (productId){ ajaxAddProduct(productId, 1); } function removeProductFromBasket(productId, action){ if(action != 'decrement'){ var productRow = document.getElementById('shopping_cart_items_product' + productId); productRow.parentNode.removeChild(productRow); ajaxRemoveProduct (productId, action); }else{ ajaxDecrementProduct (productId, action); } } function ajaxValidateRemovedProduct(ajaxIndex){ var resposta = ajaxObjects[ajaxIndex].response.split('|||'); if(resposta[0]=='KO')alert('Error while removing product from the database'); } function ajaxRemoveProduct(productId, action){ 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].setVar('action',action); ajaxObjects[ajaxIndex].onCompletion = function(){ ajaxValidateRemovedProduct(ajaxIndex);}; // Specify function that will be executed after file has been found ajaxObjects[ajaxIndex].runAJAX(); // Execute AJAX function } function ajaxDecrementProduct(productId, action){ 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].setVar('action',action); ajaxObjects[ajaxIndex].onCompletion = function(){ ajaxValidateRemovedProduct(ajaxIndex); showAjaxBasketContent(ajaxIndex)}; // Specify function that will be executed after file has been found ajaxObjects[ajaxIndex].runAJAX(); // Execute AJAX function } */ function ajaxAddProduct(productId, quantity, action){ 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('quantity',quantity); ajaxObjects[ajaxIndex].onCompletion = function(){ showAjaxBasketContent(ajaxIndex,productId); }; // Specify function that will be executed after file has been found ajaxObjects[ajaxIndex].runAJAX(); // Execute AJAX function }