/***********************************************************
(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_addNewProductToBasket = 'wp-basket_addnew.php';
var url_addRemoveProductFromBasket = 'wp-basket_addremove.php';

// added savski

// generate codeimage
var url_createCodeImage = 'wp-codeimage_do.php';

// check image size
var url_checkImageSize = 'wp-checkimage_do.php';

/***
// currency converter
var url_currencyConvert = 'convert_it.php';
// public questions
var url_addPublicQuestion = 'publicquestion_add.php';
// contact us
var url_addContact = 'contact_send.php';
***/

//var txt_totalPrice = 'Total: ';
//var txt_currency = ' EUR &nbsp; ';

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, productDesc, productPrice, productTax, productCurrency, productType){
	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);
	}
	currentProductDiv = document.getElementById('slidingProduct' + productId);
	currentXPos = shoppingCart_getLeftPos(currentProductDiv);
	currentYPos = shoppingCart_getTopPos(currentProductDiv);
	shopping_cart_x = shoppingCart_getLeftPos(shopping_cart_div);
	shopping_cart_y = shoppingCart_getTopPos(shopping_cart_div);

	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, productDesc, productPrice, productTax, productCurrency, productType);
}


function flyToBasket(productId, productDesc, productPrice, productTax, productCurrency, productType){
	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 product is in basket - use ajaxAddProduct(productId);
	if(flyingDiv.style.display=='block'){
		setTimeout('flyToBasket("' + productId + '", "' + productDesc + '", "' + productPrice + '", "' + productTax + '", "' + productCurrency + '", "' + productType + '")',10);
	} else 	ajaxAddNewProduct(productId, productDesc, productPrice, productTax, productCurrency, productType);	
}

function ajaxAddNewProduct(productId, productDesc, productPrice, productTax, productCurrency, productType){
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = url_addNewProductToBasket;	// Saving product in this file
	ajaxObjects[ajaxIndex].setVar('productId',productId);
	ajaxObjects[ajaxIndex].setVar('productDesc',productDesc);
	ajaxObjects[ajaxIndex].setVar('productPrice',productPrice);
	ajaxObjects[ajaxIndex].setVar('productTax',productTax);
	ajaxObjects[ajaxIndex].setVar('productCurrency',productCurrency);
	ajaxObjects[ajaxIndex].setVar('productType',productType);
	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].onCompletion = function(){ showAjaxBasketContent(ajaxIndex); };
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		
}

function ajaxAddProduct(productId){
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = url_addRemoveProductFromBasket;	// adding existing product in this file!
	ajaxObjects[ajaxIndex].setVar('productIdToAdd',productId);
	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].onCompletion = function(){ ajaxValidateAddedProduct(ajaxIndex); };	
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		
}

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 ajaxRemoveProduct(productId){
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = url_addRemoveProductFromBasket;	// Saving product in this file!
	ajaxObjects[ajaxIndex].setVar('productIdToRemove',productId);
	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].onCompletion = function(){ ajaxValidateRemovedProduct(ajaxIndex); };	
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		
}

function ajaxValidateRemovedProduct(ajaxIndex){
	if(ajaxObjects[ajaxIndex].response!='OK')alert('Error while removing product from the database');
	//else alert(ajaxObjects[ajaxIndex].response.toString);
}

function ajaxValidateAddedProduct(ajaxIndex){
	if(ajaxObjects[ajaxIndex].response!='OK')alert('Error while adding product to the database');
	//else alert(ajaxObjects[ajaxIndex].response.toString);
}

function addProductToBasket(productId){
	var productRow = document.getElementById('shopping_cart_items_product' + productId);
	var numberOfItemCell = productRow.cells[0];
	numberOfItemCell.innerHTML = numberOfItemCell.innerHTML/1 + 1;
	updateTotalPrice();
	// here we need to check if the product exists since we are adding to the existing  
	ajaxAddProduct(productId);	
}

function showAjaxBasketContent(ajaxIndex){
	// Breaking response from Ajax into tokens
	var productItems = ajaxObjects[ajaxIndex].response.split('|||');	
	// Getting a reference to the shopping cart items table
	var itemBox = document.getElementById('shopping_cart_items');
	if(document.getElementById('shopping_cart_items_product' + productItems[0])){	
		// A product with this id is allready in the basket - just add to items count
		var row = document.getElementById('shopping_cart_items_product' + productItems[0]);
		var items = row.cells[0].innerHTML/1;
		items = items + 1;
		row.cells[0].innerHTML = items;
	} else {	
		// Product isn't allready in the basket - add a new row
		var tr = itemBox.insertRow(-1);
		tr.id = 'shopping_cart_items_product' + productItems[0]
		tr.style.textAlign = 'center';
		
		var td = tr.insertCell(-1);
		td.innerHTML = '1'; 	// Number of items
		
		var td = tr.insertCell(-1);

		// minus
		var img = document.createElement('IMG');
		img.src = 'images/nolines_minus.gif';
		img.style.cursor = 'pointer';
		img.onclick = function(){ removeProductFromBasket(productItems[0]); };
		td.appendChild(img);

		// plus
		var img = document.createElement('IMG');
		img.src = 'images/nolines_plus.gif';
		img.style.cursor = 'pointer';
		img.onclick = function(){ addProductToBasket(productItems[0]); };
		td.appendChild(img);

		var td = tr.insertCell(-1);
		td.innerHTML = productItems[1]; 	// Description
		
		var td = tr.insertCell(-1);
		td.innerHTML = productItems[2]; 	// Price	

		var td = tr.insertCell(-1);
		//if(productItems[4]>1){ 	// subscribe
		td.innerHTML = productItems[3]; 	// Currency	

	} 
	updateTotalPrice();
	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[3].innerHTML);
		}
		//document.getElementById('shopping_cart_totalprice').innerHTML = txt_totalPrice + totalPrice.toFixed(2) + txt_currency;
		document.getElementById('shopping_cart_totalprice').innerHTML = totalPrice.toFixed(2);
		if(document.getElementById('paysubmit')){
			if(document.getElementById('shopping_cart_totalprice').innerHTML!="" && document.getElementById('shopping_cart_totalprice').innerHTML!="0.00")document.getElementById('paysubmit').style.display='block';
			else document.getElementById('paysubmit').style.display='none';
		}
	}	
}


/* next added by savski*/

function ajaxAddQuestion(id, action, message, type, answerid, pin1, pin2){
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = url_addPublicQuestion;	// Saving product in this file
	ajaxObjects[ajaxIndex].setVar('id',id);
	ajaxObjects[ajaxIndex].setVar('action',action);
	ajaxObjects[ajaxIndex].setVar('message',message);
	ajaxObjects[ajaxIndex].setVar('type',type);
	ajaxObjects[ajaxIndex].setVar('answerid',answerid);
	ajaxObjects[ajaxIndex].setVar('pin1',pin1);
	ajaxObjects[ajaxIndex].setVar('pin2',pin2);

	ajaxObjects[ajaxIndex].onCompletion = function(){ showAjaxQuestionContent(ajaxIndex); };	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		
}

// we may need to break this into 
function showAjaxQuestionContent(ajaxIndex){
	// Breaking response from Ajax into tokens
	var Items = ajaxObjects[ajaxIndex].response.split('|||');	
	//id, action, message, answerid;

	// Getting a reference to the specific question answers table row
	var msgBox = document.getElementById('msgsys');
	msgBox.innerHTML = Items[4];	// msgsys response

	if(Items[1]=='submit_answer'){
		var itemBox = document.getElementById('answers_item' + Items[3]);
		var tr = itemBox;
		tr.cells[0].innerHTML = '<b>A:</b>';
		tr.cells[1].innerHTML = Items[2];

	} else if(Items[1]=='submit_question'){
		var itemBox = document.getElementById('questions_items');
		// question is new - add a new row
		var tr = itemBox.insertRow(-1);
		tr.id = 'questionsanswers_item' + Items[4];
		
		var td = tr.insertCell(-1);
		td.innerHTML = '<b>Q:</b>';
	
		var td = tr.insertCell(-1);
		td.innerHTML = Items[2]; 	// message	
	}
	ajaxObjects[ajaxIndex] = false;		
}

function doAjaxCurrencyConvert(convert_amount, convert_from, convert_into){
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	// Script that reads from database and calculates result
	ajaxObjects[ajaxIndex].requestFile = url_currencyConvert;
	ajaxObjects[ajaxIndex].setVar('convert_amount',convert_amount);
	ajaxObjects[ajaxIndex].setVar('convert_from',convert_from);
	ajaxObjects[ajaxIndex].setVar('convert_into',convert_into);
	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].onCompletion = function(){ showAjaxConvertedContent(ajaxIndex); };
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		
}

function showAjaxConvertedContent(ajaxIndex){
	// Getting a reference to the question answers table
	var itemBox = document.getElementById('convert_calculus');
	// Breaking response from Ajax into tokens
	var Items = ajaxObjects[ajaxIndex].response.split('|||');
	itemBox.innerHTML = Items[0]+' ';	// amount
	itemBox.innerHTML += Items[1]; 	// from currency
	itemBox.innerHTML += ' = '; 		// equals 
	itemBox.innerHTML += Items[2]+' '; 	// converted - on two decimals
	itemBox.innerHTML += Items[3]; 	// into currency
	ajaxObjects[ajaxIndex] = false;		
}

function doAjaxRefreshCodeImage(action, codeimagelineid){
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	// we have just a control action to transfer
	ajaxObjects[ajaxIndex].setVar('action',action);
	ajaxObjects[ajaxIndex].setVar('codeimagelineid',codeimagelineid);
	// Script that makes new codeimage
	ajaxObjects[ajaxIndex].requestFile = url_createCodeImage;
	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].onCompletion = function(){ showAjaxRefreshCodeImage(ajaxIndex); };
	// Execute AJAX function
	ajaxObjects[ajaxIndex].runAJAX();
}
function showAjaxRefreshCodeImage(ajaxIndex){
	// here we get the complete line of codeimage data
	// Breaking response from Ajax into tokens
	var Items = ajaxObjects[ajaxIndex].response.split('|||');
	document.getElementById(Items[1]).innerHTML = Items[0];
	ajaxObjects[ajaxIndex] = false;		
}

function doAjaxContact(email, question, contactusok, pin1, pin2){
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = url_addContact;	// Saving product in this file
	ajaxObjects[ajaxIndex].setVar('email',email);
	ajaxObjects[ajaxIndex].setVar('question',question);
	ajaxObjects[ajaxIndex].setVar('contactusok',contactusok);
	ajaxObjects[ajaxIndex].setVar('pin1',pin1);
	ajaxObjects[ajaxIndex].setVar('pin2',pin2);
	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].onCompletion = function(){ showAjaxContact(ajaxIndex); };
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		
}
function showAjaxContact(ajaxIndex){
	// Breaking response from Ajax into tokens
	var Items = ajaxObjects[ajaxIndex].response.split('|||');
	// Getting a reference to the display element
	document.getElementById(Items[0]).innerHTML = Items[1];
	ajaxObjects[ajaxIndex] = false;		
}
function checkAjaxImageSize(source){
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = url_checkImageSize;	// checking in this file
	ajaxObjects[ajaxIndex].setVar('source',source);
	// Specify function that will be executed after file has been found
	ajaxObjects[ajaxIndex].onCompletion = function(){ returnAjaxImageSize(ajaxIndex); };
	ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function		

}
function returnAjaxImageSize(ajaxIndex){
	// Breaking response from Ajax into tokens
	var Items = ajaxObjects[ajaxIndex].response.split('|||');
	var narrowpicture='';
	//alert(Items[0]+'x'+Items[1]);
	if(Items[0]<Items[1]) 	narrowpicture='true';
	if(document.getElementById('narrowpicture')) document.getElementById('narrowpicture').innerHTML = narrowpicture;
	ajaxObjects[ajaxIndex] = false;
}
