/************************************************************************************************************
(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 = 15;
var url_addProductToBasket = '/modules/Basket_AddProduct.asp';
var url_updateProductToBasket = '/modules/Basket_UpdateProduct.asp';
var url_removeProductFromBasket = '/modules/Basket_RemoveProduct.asp';
var url_getBasket = '/modules/Basket_GetBasket.asp';
var url_getShops = '/modules/Basket_GetShopsnl.asp';
var url_getShop = '/modules/Basket_GetShop.asp';
var txt_totalPrice = '';


var shopping_cart_div = false;
var flyingDiv = false;
var flyingImage = 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) {
    var basket_isinbasket = document.getElementById('Basket_IsInBasket');
    var basket_addremove = document.getElementById('Basket_AddRemove');
    if (basket_isinbasket.value == "YES") {
        if (!shopping_cart_div) shopping_cart_div = document.getElementById('basket');
        if (!flyingDiv) {
            flyingDiv = document.createElement('DIV');
            flyingDiv.style.position = 'absolute';
            document.body.appendChild(flyingDiv);
        }

        currentProductDiv = document.getElementById('slidingProduct' + productId);

        shopping_cart_x = shoppingCart_getLeftPos(currentProductDiv);
        shopping_cart_y = shoppingCart_getTopPos(currentProductDiv);


        currentXPos = shoppingCart_getLeftPos(shopping_cart_div) - 50;
        currentYPos = shoppingCart_getTopPos(shopping_cart_div) - 200;

        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';
        flyFromBasket(productId);
    } else {
        if (!shopping_cart_div) shopping_cart_div = document.getElementById('basket');
        if (!flyingDiv) {
            flyingDiv = document.createElement('DIV');
            flyingDiv.style.position = 'absolute';
            document.body.appendChild(flyingDiv);
        }

        shopping_cart_x = shoppingCart_getLeftPos(shopping_cart_div) - 50;
        shopping_cart_y = shoppingCart_getTopPos(shopping_cart_div) - 200;

        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);
    }
    if (basket_isinbasket.value == "YES") {
        basket_isinbasket.value = "NO";
        basket_addremove.src = basket_addremove.src.replace("delete","add");
    } else {
        basket_isinbasket.value = "YES";
        basket_addremove.src = basket_addremove.src.replace("add","delete");
    }
}


function deleteFromBasket(productId) {
    if (!flyingDiv) {
        flyingDiv = document.createElement('DIV');
        flyingDiv.style.position = 'absolute';
        document.body.appendChild(flyingDiv);
    }

    currentProductDiv = document.getElementById('basketrow' + productId);

    shopping_cart_x = 0;
    shopping_cart_y = 0;


    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';
	
	var numberOfItemCell = currentProductDiv.cells[0];
	currentProductDiv.parentNode.removeChild(currentProductDiv);	

    flyFromBasket2(productId);
}

function flyToBasket(productId) {
    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 (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 + '")', 10); else ajaxAddProduct(productId);
}

function flyFromBasket(productId) {
    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 (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('flyFromBasket("' + productId + '")', 10); else ajaxRemoveProduct(productId);
}

function flyFromBasket2(productId) {
    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 (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('flyFromBasket2("' + productId + '")', 10); else ajaxRemoveProduct2(productId);
}

function showAjaxBasketContent(ajaxIndex,ajaxOrigin) {
    // Getting a reference to the shopping cart items table
    var basket_nrofproducts = document.getElementById('Basket_NrOfProducts');
    var basket_totalprice = document.getElementById('Basket_TotalPrice');
    var basket_content = document.getElementById('Basket_Content');

    var productItems = ajaxObjects[ajaxIndex].response.split('|||'); // Breaking response from Ajax into tokens

    basket_nrofproducts.innerHTML = productItems[0];
    basket_totalprice.innerHTML = productItems[1];
    basket_content.title = productItems[2];

	if (ajaxOrigin == 'add') {
		alert('Dit product werd toegevoegd aan uw winkelmandje. Om de inhoud van uw winkelmandje te bekijken, klik bovenaan op Winkelmandje.');
	}

    ajaxObjects[ajaxIndex] = false;

}

function showAjaxBasketContent2(ajaxIndex) {
    // Getting a reference to the shopping cart items table
    var basket_nrofproducts = document.getElementById('Basket_NrOfProducts');
    var basket_totalprice = document.getElementById('Basket_TotalPrice');
    var basket_totalprice2 = document.getElementById('Basket_TotalPrice2');
    var basket_content = document.getElementById('Basket_Content');

    var productItems = ajaxObjects[ajaxIndex].response.split('|||'); // Breaking response from Ajax into tokens

    basket_nrofproducts.innerHTML = productItems[0];
    basket_totalprice.innerHTML = productItems[1];
    basket_totalprice2.innerHTML = productItems[1];
    basket_content.title = productItems[2];

    ajaxObjects[ajaxIndex] = false;

}

function showAjaxBasketContent3(ajaxIndex) {
    // Getting a reference to the shopping cart items table
    var productItems = ajaxObjects[ajaxIndex].response.split('|||'); // Breaking response from Ajax into tokens

    var basket_nrofproducts = document.getElementById('Basket_NrOfProducts');
    var basket_totalprice = document.getElementById('Basket_TotalPrice');
    var basket_totalprice2 = document.getElementById('Basket_TotalPrice2');
    var basket_thisprice = document.getElementById('productprice_' + productItems[3]);
    var basket_content = document.getElementById('Basket_Content');


    basket_nrofproducts.innerHTML = productItems[0];
    basket_totalprice.innerHTML = productItems[1];
    basket_totalprice2.innerHTML = productItems[1];
    basket_thisprice.innerHTML = productItems[4];
    basket_content.title = productItems[2];

    ajaxObjects[ajaxIndex] = false;

}

function ajaxValidateRemovedProduct(ajaxIndex) {
    if (ajaxObjects[ajaxIndex].response != 'OK') alert('Error while removing product from the database');

}

function ajaxRemoveProduct(productId) {
    var ajaxIndex = ajaxObjects.length;
    ajaxObjects[ajaxIndex] = new sack();
    ajaxObjects[ajaxIndex].requestFile = url_removeProductFromBasket; // Saving product in this file
    ajaxObjects[ajaxIndex].setVar('ProductGUID', productId);
    ajaxObjects[ajaxIndex].onCompletion = function() { showAjaxBasketContent(ajaxIndex,'remove'); }; // Specify function that will be executed after file has been found
    ajaxObjects[ajaxIndex].runAJAX(); 	// Execute AJAX function		
}

function ajaxRemoveProduct2(productId) {
    var ajaxIndex = ajaxObjects.length;
    ajaxObjects[ajaxIndex] = new sack();
    ajaxObjects[ajaxIndex].requestFile = url_removeProductFromBasket; // Saving product in this file
    ajaxObjects[ajaxIndex].setVar('ProductGUID', productId);
    ajaxObjects[ajaxIndex].onCompletion = function() { showAjaxBasketContent2(ajaxIndex); }; // Specify function that will be executed after file has been found
    ajaxObjects[ajaxIndex].runAJAX(); 	// Execute AJAX function		
}

function ajaxAddProduct(productId) {
    var ajaxIndex = ajaxObjects.length;
    ajaxObjects[ajaxIndex] = new sack();
    ajaxObjects[ajaxIndex].requestFile = url_addProductToBasket; // Saving product in this file
    ajaxObjects[ajaxIndex].setVar('ProductGUID', productId);
    ajaxObjects[ajaxIndex].onCompletion = function() { showAjaxBasketContent(ajaxIndex,'add'); }; // Specify function that will be executed after file has been found
    ajaxObjects[ajaxIndex].runAJAX(); 	// Execute AJAX function		
}

function updateBasket(productId, numberOfItems) {
	if (isNaN(numberOfItems) || mytrim(numberOfItems) == '' || numberOfItems == '0') {
		document.getElementById('numberofitems_' + productId).value = document.getElementById('numberofitems_orig_' + productId).value;
		alert('Gelieve een geldig aantal op te geven');
	} else {
		document.getElementById('numberofitems_orig_' + productId).value = numberOfItems; 
	    var ajaxIndex = ajaxObjects.length;
	    ajaxObjects[ajaxIndex] = new sack();
	    ajaxObjects[ajaxIndex].requestFile = url_updateProductToBasket; // Saving product in this file
	    ajaxObjects[ajaxIndex].setVar('ProductGUID', productId);
	    ajaxObjects[ajaxIndex].setVar('NumberOfItems', numberOfItems);
	    ajaxObjects[ajaxIndex].onCompletion = function() { showAjaxBasketContent3(ajaxIndex); }; // Specify function that will be executed after file has been found
	    ajaxObjects[ajaxIndex].runAJAX(); 	// Execute AJAX function	
	}
}

function switchDeliveryMethod(boxToShow,boxToHide) {
	if (mytrim(boxToShow) != '') {	
		var boxToShowDiv = document.getElementById('box'+boxToShow);
		boxToShowDiv.style.display = 'block';
	}
	if (mytrim(boxToHide) != '') {	
		var boxToHideDiv = document.getElementById('box'+boxToHide);
		boxToHideDiv.style.display = 'none';
	}
}

function retrieveShops(regionGUID) {
    var shoplogo = document.getElementById('shoplogo');
		shoplogo.innerHTML = "";
	    var ajaxIndex = ajaxObjects.length;
	    ajaxObjects[ajaxIndex] = new sack();
	    ajaxObjects[ajaxIndex].requestFile = url_getShops; // Saving product in this file
	    ajaxObjects[ajaxIndex].setVar('RegionGUID', regionGUID);
	    ajaxObjects[ajaxIndex].onCompletion = function() { showAjaxShops(ajaxIndex); }; // Specify function that will be executed after file has been found
	    ajaxObjects[ajaxIndex].runAJAX(); 	// Execute AJAX function	
}

function showAjaxShops(ajaxIndex) {
    // Getting a reference to the shopping cart items table
    var listShops = ajaxObjects[ajaxIndex].response;

    var shopslisting = document.getElementById('shopslisting');

    shopslisting.innerHTML = listShops;

    ajaxObjects[ajaxIndex] = false;

}

function getShopLogo(shopGUID) {
    var shoplogo = document.getElementById('shoplogo');
		shoplogo.innerHTML = "";
	    var ajaxIndex = ajaxObjects.length;
	    ajaxObjects[ajaxIndex] = new sack();
	    ajaxObjects[ajaxIndex].requestFile = url_getShop; // Saving product in this file
	    ajaxObjects[ajaxIndex].setVar('ShopGUID', shopGUID);
	    ajaxObjects[ajaxIndex].onCompletion = function() { showAjaxShop(ajaxIndex); }; // Specify function that will be executed after file has been found
	    ajaxObjects[ajaxIndex].runAJAX(); 	// Execute AJAX function	
}

function showAjaxShop(ajaxIndex) {
    // Getting a reference to the shopping cart items table
    var listShop = ajaxObjects[ajaxIndex].response;

    var shoplogo = document.getElementById('shoplogo');

    shoplogo.innerHTML = listShop;

    ajaxObjects[ajaxIndex] = false;

}

function mytrim(value) {
  value = value.replace(/^\s+/,'');
  value = value.replace(/\s+$/,'');
  return value;
}
