/*
типа класс корзины

каждый эл-т объекта this.positions имеет следующий вид
id =>
	mark - артикул
	rows - массив (массив(0,1,2,3,4), ...)
*/

/* КЛАСС КОРЗИНЫ */

function cart ()
{
	//массив с позициями
	this.positions = new Object ();
	this.positions_length = 0;

	this.pe4enya = new Cookie(document, 'abo_cart', 1);
	this.pe4enya.load ();

	//загрузить позиции
	this.load ();
}

//задать все строки для позиции
cart.prototype.setPositionRows = function (id, mark, rows)
{
	if (this.checkPositionExists (id) == false) {
		this.positions_length ++;
		this.positions[id] = new Object;
	}

	this.positions[id].mark = mark;
	this.positions[id].rows = rows;
	this.save ();
	return true;
}

//выдать объект всех позиций
cart.prototype.getPositions = function ()
{
	return this.positions;
}

//выдать позицию
cart.prototype.getPosition = function (id)
{
	if (this.positions[id]) {
		return this.positions[id];
	} else {
		return false;
	}
}

//удалить позицию
cart.prototype.removePosition = function (id)
{
	if (this.positions[id])
	{
		delete (this.positions[id]);
		this.positions_length --;
		this.save ();
		return true;
	}
	else
		return false;
}

//кол-во позиций
cart.prototype.getPositionsCount = function ()
{
	return this.positions_length;
}

//есть ли позиция
cart.prototype.checkPositionExists = function (id)
{
	if (this.positions[id]) {
		return true;
	} else {
		return false;
	}
}

//очистить корзину
cart.prototype.free = function ()
{
	this.positions = new Object ();
	this.positions_length = 0;
	this.save ();
}


/* сохранение-загрузка в COOKIES */

//сохранить в кукисы
cart.prototype.save = function ()
{
	var tmp = new Array ();
	for (id in this.positions)
	{
		var rows = new Array ();
		for (var row_number in this.positions[id].rows)
		{
			//строки заказа
			var row_fields = new Array ();
			//перебираем каждое поле
			for (var row_field_number in this.positions[id].rows[row_number]) {
				row_fields.push (escape (this.positions[id].rows[row_number][row_field_number]));
			}
			rows.push (row_fields.join (';'))
		}
		tmp.push (id + '-' + escape (this.positions[id].mark) + '|' + rows.join (':'));
	}

	//объединяем позиции по "*"
	tmp = tmp.join ('*');
	//alert (tmp);

	//сохраняем
	this.pe4enya.positions = tmp;
	this.pe4enya.store ();
}

//загрузить из кукисов
cart.prototype.load = function ()
{
	var tmp = this.pe4enya.positions;

	//загружаем
	if (!tmp) {
		this.positions = new Object ();
		this.positions_length = 0;
	} else {
		var tmp2 = tmp.split ('*');
		for (var i = 0; i < tmp2.length; i ++) {
			//перебираем позиции
			tmp2[i] = tmp2[i].split ('|');

			//id&mark
			var id = tmp2[i][0].split ('-');
			var mark = unescape (id[1]);//mark
			var id = id[0];//id

			var tmp4 = tmp2[i][1].split (':');//строки позиции

			var tmp5 = new Array ();
			for (var a in tmp4)
			{
				var b = tmp4[a].split (';');
				for (var c in b)
					b[c] = unescape (b[c]);

				tmp5.push (b);
			}

			this.positions[id] = new Object ();
			this.positions[id].rows = tmp5;
			this.positions[id].mark = mark;
			this.positions_length ++;
		}
	}
}
