
var flyingSpeed = 6;
var url_addProductToBasket = 'add_to_basket.asp';
var url_removeProductFromBasket = 'removeProduct.php';
var txt_totalPrice = 'Total: ';


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)
{
    var doFlyToBasket = true;
    var check = document.getElementById('fly_to_basket');
	if (check) {
	    //alert(check.value);
	    if (check.value == 'false') {
	        doFlyToBasket = false;
	    } // if    
	} // if
	if (doFlyToBasket) {
	    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('slidingProd' + 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 {
	    ajaxAddProduct(productId)
	} // else
	
} // function


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);	
    //if(flyingDiv.style.display=='block')setTimeout('flyToBasket("' + productId + '")',10);
    //if(flyingDiv.style.display=='block')setTimeout('flyToBasket("' + productId + '")',10); else return false;
	
} // function

function showAjaxBasketContent(ajaxIndex)
{
	var infoNumberOf = document.getElementById('cart_number_of');
	var infoTotal = document.getElementById('cart_total');	

	
	//alert(ajaxObjects[ajaxIndex].response);
	
	var infoItems = ajaxObjects[ajaxIndex].response.split('||');	// Breaking response from Ajax into tokens
	
	//alert('num:'+infoItems.length);
	
	if (infoNumberOf && infoTotal && infoItems.length == 2) {
	    infoNumberOf.innerHTML = infoItems[0];
	    infoTotal.innerHTML = infoItems[1];
	} // end if
	
	//alert('test: 'infoItems[1]);
		
	ajaxObjects[ajaxIndex] = false;		
	
}

function updateTotalPrice()
{
	var itemBox = document.getElementById('shopping_cart_items');
	// Calculating total price and showing it below the table with basket items
	var totalPrice = 0;
	if(document.getElementById('shopping_cart_totalprice')){
		for(var no=1;no<itemBox.rows.length;no++){
			totalPrice = totalPrice + (itemBox.rows[no].cells[0].innerHTML.replace(/[^0-9]/g) * itemBox.rows[no].cells[2].innerHTML);
			
		}		
		document.getElementById('shopping_cart_totalprice').innerHTML = txt_totalPrice + totalPrice.toFixed(2);
		
	}	
	
}

function removeProductFromBasket(productId)
{
	var productRow = document.getElementById('shopping_cart_items_product' + productId);
	
	var numberOfItemCell = productRow.cells[0];
	if(numberOfItemCell.innerHTML == '1'){
		productRow.parentNode.removeChild(productRow);	
	}else{
		numberOfItemCell.innerHTML = numberOfItemCell.innerHTML/1 - 1;
	}
	updateTotalPrice();
	ajaxRemoveProduct(productId);	
}

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 + '?productIdToRemove=' + productId;	// Saving product in this file
	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)
{
		
    //Collection values:	
	var numOf = 0;
	var size = '';
	var variant = '';
	var addOnPrice = 0;	
	var partList = '';
	var productComment = '';
	var prodNum = '';
	
	var item = document.getElementById('pnumof'+productId);
	if (item) {
	    numOf = item.value;
	} // if
	
	item = document.getElementById('partList'+productId);
	if (item) {
	    partList = item.value;
	} // if
	
	item = document.getElementById('productComment'+productId);
	if (item) {
	    productComment = item.value;
	} // if
	
	item = document.getElementById('prodNum'+productId);
	if (item) {
	    prodNum = item.value;
	} // if
	
	item = document.getElementById(productId+'_size');
    if (item) {
        size = item.options[item.selectedIndex].id;
    } // else
    
    item = document.getElementById(productId+'_variant');
    if (item) {
        variant = item.options[item.selectedIndex].id;
    } // if
    
    var ext_var = '';
    ext_var_items = document.getElementsByName('ext_variants_'+productId);
    ext_var_items_info = document.getElementsByName('ext_variants_id_'+productId);
    if (ext_var_items && ext_var_items.length > 0 && ext_var_items_info && ext_var_items_info.length == ext_var_items.length) {
        
        for (var i=0; i < ext_var_items.length; i++) {
            ext_var_id = ext_var_items_info[i].value;
            try {
                ext_var += ext_var_id + '|' + ext_var_items[i].options[ext_var_items[i].selectedIndex].value + '¤';               
            } catch(err) {
                try {
                    ext_var += ext_var_id + '|' + ext_var_items[i].value + '¤';
                } catch(err) {
                
                } // catch
            
            } // catch
            
        } // for
        if (ext_var.length > 2) {
            ext_var = ext_var.substring(0,ext_var.length-2);
        } // if      
            
    } // if
    
    
    var url = url_addProductToBasket + '?op=paddjs&pid=' + productId + '&pnumof=' + numOf + '&size='+ size + '&varianter=' + variant + '&partList=' + partList + '&productComment=' + productComment + '&prodNum=' + prodNum + '&extList=' + ext_var;
    
    //alert(url);
    
    //document.writeln(url);
        
    var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = url;	// Saving product in this file
	//ajaxObjects[ajaxIndex].onCompletion = alert(ajaxObjects[ajaxIndex].response);//showAjaxBasketContent(ajaxIndex); //function(){ showAjaxBasketContent(ajaxIndex); };	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].onCompletion = function(){ showAjaxBasketContent(ajaxIndex); }; //function(){ showAjaxBasketContent(ajaxIndex); };	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function	
		
	
}

//end if