// load dependent scripts
loadScript('/Specific/wsurl.js');
loadScript('/Specific/soapclient.js');


function addToBasket(
			productID,
			measureUnitID,
			quantity,
			productAddedText,
			priceDoesNotExistForProductText,
			failedText,
			quantityMustBeGraterThanZeroText)
{
	if (isNaN(parseInt(productID, 10)) || isNaN(parseInt(measureUnitID, 10)))
	{
		alert(failedText);
		return false;
	}
	
	if (isNaN(parseInt(quantity, 10)) || parseInt(quantity, 10) <= 0)
	{
		alert(quantityMustBeGraterThanZeroText);
		return false;
	}
	// soap params
	var soapClParams = new SOAPClientParameters();
	soapClParams.add("productID", productID);
	soapClParams.add("measureUnitID", measureUnitID);
	soapClParams.add("quantity", quantity);

	// send request
	var ret = SOAPClient.invoke(utilities_url(), "AddToBasket", soapClParams, false);

	// switch result
	switch (parseInt(ret, 10))
	{
		case 0:
		{
			alert(productAddedText);
			break;
		}
		case 1:
		{
			alert(priceDoesNotExistForProductText);
			return false;
		}
		default:
		{
			alert(failedText);
			return false;
		}
	}
	
	// ok
	return true;
}

function addToBasketView(
			productID,
			measureUnitsHtmlId,
			quantityHtmlId,
			productAddedText,
			priceDoesNotExistForProductText,
			failedText,
			quantityMustBeGraterThanZeroText)
{
	// get elems and test
	var measureUnitsElem = document.getElementById(measureUnitsHtmlId);
	var quantityElem = document.getElementById(quantityHtmlId);
	if (null == measureUnitsElem || null == quantityElem)
	{
		alert(failedText);
		return;
	}

	// call addToBasket
	var added = addToBasket(productID, measureUnitsElem.value, quantityElem.value, productAddedText, priceDoesNotExistForProductText, failedText, quantityMustBeGraterThanZeroText);
	
	// test added
	if (added)
	{
		quantityElem.value = '';
	}
	quantityElem.focus();
	
	// do nut submit button
	return false;
}

function addToBasketListing(
			productID,
			measureUnitID,
			quantityHtmlId,
			productAddedText,
			priceDoesNotExistForProductText,
			failedText,
			quantityMustBeGraterThanZeroText)
{
	// get elems and test
	var quantityElem = document.getElementById(quantityHtmlId);
	if (null == quantityElem)
	{
		alert(failedText);
		return;
	}

	// call addToBasket
	var added = addToBasket(productID, measureUnitID, quantityElem.value, productAddedText, priceDoesNotExistForProductText, failedText, quantityMustBeGraterThanZeroText);
	
	// test added
	if (added)
	{
		quantityElem.value = '';
	}
	quantityElem.focus();
}
