var fields = ['size_id','pos','quantity','flover','bd','present'];
var show_fields = ['firm','goods'];
var r_btns = ['color_id'];
var cart = new Cart();
cart.init();
function Item ()
{
	this.pos=0;
	this.quantity=0;
	this.flover=0;
	this.size_id='';
	this.color_id=0;
	this.bd='s';
	this.present=0;
	this.show = item_show;
	this.serialize = item_serialize;
	this.unserialize = item_unserialize;
}
function item_show()
{	var property ='';
	var strTemp = '';
	for (property in this)
	{		if ('function' == typeof(this[property]) ) continue;
		strTemp += property.toString() + ' ' + this[property]+'\n';	}
	return strTemp;
}
function item_unserialize()
{}
function item_serialize()
{	var property ='';
	var strTemp = '';
	var del = '';
	for (property in this)
	{
		if ('function' == typeof(this[property]) ) continue;
		strTemp += del + this[property];
		del = '|';
	}
	return strTemp;
}
/*--> class Cart */
function Cart()
{	this.items = new Array();
	this.add_item = add_item;
	this.full_weight = get_full_weight;
	this.full_cost = get_full_cost;
	this.full_count = get_full_count;
	this.update_product = update_product;
	this.clear = clearCart;
	this.init = initCart;
	this.show = cart_show;
	this.serialize = cart_serialize;
	this.unserialize = cart_unserialize;
}
function cart_unserialize(strFields,strData)
{	var i=0;
	var j=0;
	var count=0;
	var data = strData.split('$');
	var fields = strFields.split('|');
	for(i=0; i<data.length; i++)
	{  	item_data = data[i].split('|');
  	var item = new Item();
  	var prop='';
  	for (j in fields)
  	{  		item[fields[j]]=item_data[j];
  	}
  	//alert(item.show());
  	this.add_item(item);
  	this.update_product(item,item.quantity);	}
}
function cart_serialize()
{	var i=0;
	var strTemp = '';
	var item = new Item;
	var del='';
	for (property in item)
	{
		if ('function' == typeof(this[property]) ) continue;
		strTemp += del + property.toString();
		del = '|';
	}
	setCookie('fields', strTemp);
	strTemp = '';
	del = '';
	for (i in this.items)
	{
		strTemp += del + this.items[i].serialize();
		del = '$';
	}
	setCookie('cart', strTemp);
	return strTemp;
}
function cart_show()
{
	var i=0;
	var strTemp='';
	for (i in this.items)
	{
		strTemp += 'item' + i + ':\n' + this.items[i].show()+'\n';
	}
	return strTemp;
}
function add_item(item)
{	//проверка наличия аналогичного товара
	var i=0;
	for (i in this.items)
	{		if ( this.items[i].pos == item.pos
				&& this.items[i].flover == item.flover
				&& this.items[i].color_id == item.color_id
				&& this.items[i].size_id == item.size_id )
		{   		this.items[i].quantity++; //увеличение кол-ва
   		return;		}
	}
	if (0 == item.quantity) item.quantity = 1;	//добавление нового
	this.items.push(item);
}
function get_full_weight()
{	var i = 0;
	var weight = 0;
	for (i in this.items)
	{		weight += this.items[i].tare * this.items[i].quantity;
	}
	return Math.round(weight*1000)/1000;}
function get_full_cost()
{	var i=0;
	var cost=0;
	for (i in this.items)
	{
		cost += this.items[i].price * this.items[i].quantity;
	}
	return cost;
}
function get_full_count()
{	var i=0;
	var count = 0;
	for (i in this.items)
	{
		count += parseInt(this.items[i].quantity);
	}
	return count;
}
function clearCart()
{	this.items = new Array();
	this.serialize();}
function initCart()
{	var strData = getCookie('cart');
	var strFields = getCookie('fields');
	this.items = new Array();
	if (!strData || !strFields) return;
	this.unserialize(strFields,strData);}
function update_product(item_to_update,quantity)
{	var i=0;
	for (i in this.items)
	{
		if ( this.items[i].pos == item_to_update.pos
				&& this.items[i].flover == item_to_update.flover
				&& this.items[i].color_id == item_to_update.color_id
				&& this.items[i].size_id == item_to_update.size_id )
		{
			if ( 1 > quantity )
			{
				 this.items.splice(i,1);
				 return;
			}
			else
			{
				this.items[i].quantity = quantity;
				return;
			}
		}
	}
}
/*<-- class Cart */

function add_to_cart(formName)
{	var form = document.getElementById(formName);
	var item = new Item;
	var msg='';
	var goods='';
	var firm='';
	var size='';
	var color='';
	var flover='';
	cart.init();
	for (i=0;i<fields.length;i++)
	{		var elem = form.elements[fields[i]];
		if ( typeof(elem) == 'undefined' )
			continue;
		item[fields[i]] = elem.value;	//св-ва товара
		if ('size_id' == fields[i])
			size = elem.value;
		if ('flover' == fields[i])
			flover = elem.options[elem.selectedIndex].text;
	}
	for (i=0; i<r_btns.length; i++)
	{		radio_value = GetCheckedRadio(form,r_btns[i]);
		if (radio_value != null)
		{
			item[r_btns[i]] = radio_value;	//свойства by radio
			if ( 'color_id' == r_btns[i])
				color=radio_value;		}
	}
	for (i=0;i<show_fields.length;i++)
	{
		var elem = form.elements[show_fields[i]];
		if ( typeof(elem) == 'undefined' )
			continue;
		msg += ' ' + elem.value;	//св-ва товара
	}
	if (0 < flover.length)
		msg += ' вкус:' + flover;
	if (0 < size.length)
		msg += ' размер:' + size;
	if (0 < color.length)
		msg += ' цвет:' + color;
	cart.add_item(item);
	alert("Вы добавили в корзину:\n" + msg +
	"\n\nВаша корзина содержит\nНаименований: " +cart.items.length + '\nВсего: '  + cart.full_count() + " шт.");
	cart.serialize();
	//alert (cart.show());
	return false;}
function GetCheckedRadio (pForm, pGroupName )
{
	var i=0;
	for ( i = 0; i < pForm.elements.length; i++)
	{
		var formElement = pForm.elements[i];
		if ((formElement.type == 'radio') && ( formElement.name == pGroupName ))
			if ( formElement.checked )
				return formElement.value;
	}
	return null;
}
function setCookie(pName, pValue, pExpired, pPath, pDomain, pIsSecured)
{	var s = pName + '=' + escape(pValue.toString());
	if (pExpired)
		s += "; expires=" + pExpired.toGMTString();
	if (pPath)
		s += "; path=" + pPath;
	if (pDomain)
		s += "; domain=" + pDomain;
	if (pIsSecured)
		s += "; secured";
	document.cookie = s;}
function getCookie( pName )
{
	var sCookie = document.cookie;
	var cookieLen = sCookie.length;
	var sName = pName + "=";
	var sNameLen = sName.length;
	var sValue = null;
	var i=0;
	var j=0;
	while (i < cookieLen)
	{		j = i + sNameLen;
		if (sCookie.substring(i,j) == sName)
		{			var n = sCookie.indexOf(";",j);
			if (n == -1) n = cookieLen;
			sValue = unescape(sCookie.substring(j,n));
			break;		}
		i = sCookie.indexOf(' ', i) +1;
		if (i == 0) break;
	}
	return sValue;
}
function deleteCookie(pName, pPath, pDomain)
{	if (getCookie( pName ))
	{		var s = pName + "=; expires=Thu, 01-Jan-70 00:00:01 GMT";
		if (pPath)
			s += "; path=" + pPath;
		if (pDomain)
			s += "; domain=" + pDomain;
		document.cookie = s;	}}
