﻿/*
shoppingcart.js
// handles all cart js calls 
*/

function initCart()
{
	var numberOfItems = 0;
	var price = 0;
	if(existsCookie())
	{
		var cartItemsArray = new Array();
		var keyAndValue = new Array();
		
		cartItemsDelimetered = getCookie('e2c65c48-d5f2-455f-8be7-9e1db60d93f2');
		cartItemsArray = cartItems.split("||");
		for(i=0; i < cartItemsArray.length; i++)
		{
			keyAndValue = cartItemsArray[i].split("|");
			numberOfItems += parseInt(keyAndValue[1]);

			price += keyAndValue[1] * keyAndValue[2];
		}
		
	}
	document.getElementById('numberOfItems').innerHTML = numberOfItems;
	document.getElementById('priceLabel').innerHTML = price.toFixed(2);
	
	var str = numberOfItems.toString();
	if(str.endsWith("1") && !(str.endsWith("11")))
	{
		document.getElementById('itemLabel').innerHTML = 'предмет';
	}
	else if((str.endsWith("2") || str.endsWith("3") || str.endsWith("4")) && !(str.endsWith("12") || str.endsWith("13") || str.endsWith("14")))
	{
		document.getElementById('itemLabel').innerHTML = 'предмета';
	}
	else
	{
		document.getElementById('itemLabel').innerHTML = 'предметов';
	}
}

function addItem(itemId, itemPrice)
{
	var result = "";

	if(existsCookie())
	{
		var existingKey = false;
		var cartItemsArray = new Array();
		var keyAndValue = new Array();
		
		cartItemsDelimetered = getCookie('e2c65c48-d5f2-455f-8be7-9e1db60d93f2');
		cartItemsArray = cartItems.split("||");
		
		for(i=0; i < cartItemsArray.length; i++)
		{
			keyAndValue = cartItemsArray[i].split("|");
			if(keyAndValue[0] == itemId)
			{
				// item exists. increment the quantity by 1, append to result
				keyAndValue[1] = parseInt(keyAndValue[1]) + 1;
				result += keyAndValue[0] + "|" + keyAndValue[1] + "|" +  keyAndValue[2] + "||";
				existingKey = true;
			}
			else
			{
				// append to result
				result += keyAndValue[0] + "|" + keyAndValue[1] + "|" +  keyAndValue[2] + "||";
			}
		}
		if(!existingKey)
		{
			// new value. append to result
			result += itemId + "|" + "1" + "|" + itemPrice;
		}
	}
	else
	{
		// first and the only one item in this cookie
		result = itemId + "|" + "1" + "|" + itemPrice;
	}

	// if result endswith ||, remove it
	if(result.endsWith("||"))
	{
		result = result.left(result.length-2);
	}
	
	setCookie(result, 1);
	initCart();
}

function updateItem(itemId, qty)
{
	if(qty < 0)
	{
		alert('Error! Item quantity can not be negative!');
	}
	else if(qty == 0)
	{
		removeItem(itemId);
	}
	else
	{
		var result = "";

		if(existsCookie())
		{
			var cartItemsArray = new Array();
			var keyAndValue = new Array();
			
			cartItemsDelimetered = getCookie('e2c65c48-d5f2-455f-8be7-9e1db60d93f2');
			cartItemsArray = cartItems.split("||");
			
			for(i=0; i < cartItemsArray.length; i++)
			{
				keyAndValue = cartItemsArray[i].split("|");
				if(keyAndValue[0] == itemId)
				{
					result += keyAndValue[0] + "|" + parseInt(qty) + "|" + keyAndValue[2] + "||";
				}
				else
				{
					result += keyAndValue[0] + "|" + keyAndValue[1] + "|" + keyAndValue[2] + "||";
				}
				
				// if result endswith ||, remove it
				if(result.endsWith("||"))
				{
					result = result.left(result.length-2);
				}
			}
			setCookie(result, 1);
		}
	}
}

function updateCart()
{
	var result = "";
	var error = false;
	
	if(existsCookie())
	{
		var cartItemsArray = new Array();
		var keyAndValue = new Array();
		
		cartItemsDelimetered = getCookie('e2c65c48-d5f2-455f-8be7-9e1db60d93f2');
		cartItemsArray = cartItems.split("||");
		
		for(i=0; i < cartItemsArray.length; i++)
		{
			keyAndValue = cartItemsArray[i].split("|");
			var qty = document.getElementById(keyAndValue[0]).value;
			if(qty > 0)
			{
				result += keyAndValue[0] + "|" + qty + "|" + keyAndValue[2] + "||";
			}
			if(qty < 0)
			{
				error = true;
				result += keyAndValue[0] + "|" + keyAndValue[1] + "|" + keyAndValue[2] + "||";
			}
		}
		
		// if result endswith ||, remove it
		if(result.endsWith("||"))
		{
			result = result.left(result.length-2);
		}
	}
	setCookie(result, 1);
	
	if(error)
	{
		alert('Error! Item quantity can not be negative!');
	}
}
			
function removeItem(itemId)
{
	var result = "";

	if(existsCookie())
	{
		var cartItemsArray = new Array();
		var keyAndValue = new Array();
		
		cartItemsDelimetered = getCookie('e2c65c48-d5f2-455f-8be7-9e1db60d93f2');
		cartItemsArray = cartItems.split("||");
		
		for(i=0; i < cartItemsArray.length; i++)
		{
			keyAndValue = cartItemsArray[i].split("|");
			if(keyAndValue[0] != itemId)
			{
				// append to result
				result += keyAndValue[0] + "|" + keyAndValue[1] + "|" + keyAndValue[2] + "||";
			}
		}
	}

	// if result endswith ||, remove it
	if(result.endsWith("||"))
	{
		result = result.left(result.length-2);
	}
	
	setCookie(result, 1);
}

function emptyCart()
{
	// expire the cookie and initialize cart
	setCookie("", 0);
}


//////////// Helper prototypes

String.prototype.endsWith = function(value) {
   if (this.length<value.length) {
    return false;
  }
  else {
    return this.substring(this.length-value.length, this.length)===value;
  }
}

String.prototype.left = function(count) {
  if (this.length>count) {
    return this.substring(0, count);
  }
  else {
    return this;
  }
}

