/************************************************************************************************************
(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 = '
';
}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
}