//<!--
//----------------------------------------------
// проверяет включен ли JavaScript
function JSEnabled()
{
	return true;
}

//----------------------------------------------
// вешает кук
function SetCookie( key, value, date)
{
	var str='';
/*	if( document.cookie.indexOf('Pson')!=-1 )
		str = key+'=' + value +'; expires='+date.toGMTString()+'; path=/';
	else
*/		str = key+'=' + value +';';
	window.document.cookie = str;
}

//----------------------------------------------
// убирает из начала и конца строки
//	- пробелы
//	- знаки возврата коретки
//	- знаки таблуяции
//	- знаки новой строки
function TideString( str)
{
	while(	str.charAt(0)==' ' || 
			str.charAt(0)=='\n' || 
			str.charAt(0)=='\r' || 
			str.charAt(0)=='\t' )
	{
		str=str.substring(1, str.length);
	}
	while(	str.charAt(str.length-1)==' ' || 
			str.charAt(str.length-1)=='\n' || 
			str.charAt(str.length-1)=='\r' || 
			str.charAt(str.length-1)=='\t' )
	{
		str=str.substring(0, str.length-1);
	}
	return str;
}

// ----------------------------------------------------------
//	Считывает массив из строки str с разделителем div
//
function CreateArray( str, div, div2)
{
	var res = new Array();
	str = TideString( str);
	if( str.length == 0)
	{	
		return res;
	}
		
	var index = 0;
	var prevIndex = 0;
	var section;
	var num=0;
	
	var lastSection=false;
	while( (index = str.indexOf (div)) !=-1 || lastSection==false )
	{
		if( index == -1)
		{
			lastSection = true;
			index = str.length;
		}
		
		section = TideString( str.substring(0, index) );
		if( section == '')
			continue;
		
		var eq = section.indexOf(div2); 
		if( eq != -1)
		{
			var name = TideString(section.substring(0, eq));
			var value = section.substring(eq+1, section.length);
			
			if( name!='')
				res[num]=new Array(name,value);
		}
		else
			res[num]=new Array( section,'');
		
		if( lastSection!=true )
			str = str.substring(index+1, str.length);
		num++;
	}
	return res;
}


//--------------------------------------------------------
// Задает начальное состояние корзины
//
//
var cookieName = 'clientCart';
function PrepareCart()
{
	var arr = CreateArray(document.cookie, ";", "=");
	for( var i=0; i< arr.length; i++)
	{
		if( arr[i][0]=='SCart')
		{	SetCookie( cookieName, arr[i][1],null);
			return;
		}
	}
}
// ----------------------------------------------------------
// Конструктор корзины
// обращается к кукам, разбирает кук корзины с именем cart
// создает объект, в крайнем случае пустой корзины
//
function ShoppingCart()
{
	// название кука корзины
	
	// все куки документа
	var array = CreateArray( document.cookie, ';','=');
	var i;
	for( i=0 ; i< array.length; i++)
	{	if( array[i][0] == cookieName)
			break;
	}
	this.weight = -1;
	this.price = -1;
	this.cart = new Array();
	this.toCookie = toCookieString;
	this.addBook = AddToCart;
	this.isEmpty = IsEmpty;
	this.saveCart = SaveCart;
	this.contains = Contains;
	this.Summery = toSummery;
	this.pType = 1;
	
	if( i!= array.length)
	{
		// флаг корректности
		var flOk = false;
		//alert(array[i][1]);
		var cartArr = CreateArray(array[i][1],"&",":");
		
		for( var j = 0; j< cartArr.length; j++)
		{
			if( cartArr[j][0] == 'weight' && !isNaN(parseFloat(cartArr[j][1]))  )
			{
				flOk=true;
				this.weight = parseFloat(cartArr[j][1]);
			}
			if( cartArr[j][0] == 'price' && !isNaN(parseFloat(cartArr[j][1]))  )
			{
				flOk=true;
				this.price = parseFloat(cartArr[j][1]);
			}
			if( cartArr[j][0] == 'pT' && !isNaN(parseFloat(cartArr[j][1]))  )
			{
				flOk=true;
				this.pType = parseFloat(cartArr[j][1]);
			}
			
			if( !isNaN(parseInt( cartArr[j][0])) && !isNaN(parseInt( cartArr[j][1])) )
			{
				this.cart.push( new Array( parseInt(cartArr[j][0]) , parseInt(cartArr[j][1])) );
			}
		}
		if( flOk != -1 )
			return this;
	}
	this.weight = 0;
	this.price = 0;
	this.pType = 1;
	this.cart=new Array();
	return this;	
}
//----------------------------------------------
// метод корзины
// проверяет корзину на пустоту
//
function toSummery()
{
	var wei = this.weight;
	var pri = this.price;
	var res = '';
	if(wei!=0)
		res=(Math.ceil(wei*1000))/1000+"кг - " + pri+"р";
	else
		res="Корзина";
	return res;
}
//----------------------------------------------
// метод корзины
// проверяет корзину на пустоту
//
function IsEmpty()
{
	// достать корзину ..
	var cart = this.cart;
	if( this == null)
		alert('isempty null object');
	
	// посчитать кол-во книг
	if( cart.length == 0 )
		return true;

	return false;
}

// ----------------------------------------------------------
// метод корзины
// если вес влезает - добавляет книгу с количеством в кукис корзины 
//
function AddToCart( id, num, wei, pri)
{
	// проверка параметров
	id=parseInt(id);
	num=parseInt(num);
	wei=parseFloat(wei);
	pri=parseFloat(pri);

	if( isNaN(id)==true || id<0 ||
		isNaN(num)==true || num<1 ||
		isNaN(wei)==true || wei <= 0 ||
		isNaN(pri)==true || pri<=0 
	  )
	{	
		alert('error input values');
		return false;
	}
	
	// считывание корзины
	var cart = this.cart;
	if( cart == null)
	{
		alert('error getting cart');
		return false;
	}
	
	// проверка лежит ли уже книга в корзине
	for(var i=0; i < cart.length; i++)
		if( cart[i][0]==id)
		{	
			alert(' Книга уже помещена в корзину');
			return false;
		}
	
	// если книга влезает в максимальный вес
	// то положить ее в корзину
	if( this.weight + wei*num <= 1000 )
	{
//		alert('BEFORE weight = '+ this.weight+'  cartlength'+cart.length);
		cart.push( new Array(id, num) );
		this.weight += wei*num;
		this.price += pri*num;
//		alert('AFTER weight=' + this.weight+' CartLEngth ='+cart.length);
	}
	else
	{	
		alert('Превышен максимальный вес корзины.\r\n\r\nПожалуйста, завершите текущую покупку \r\nи продолжите выбор товаров.');
		return false;
	}
	return true;
}

// ----------------------------------------------------------
// метод корзины
// строит строку кука по текущему объекту корзины
//
function toCookieString()
{
	var str='';
	// достать корзину..
	var c = this.cart;
	// взять вес.. 
	str += 'weight:'+this.weight;
	str += '& pT:'+this.pType;
	// взять цену
	str += '& price:' +this.price;
	for( var i=0; i<c.length; i++)
		str+=" &"+c[i][0]+":"+c[i][1];
	
//	alert('CookieString: '+ str);
	return str;
}

//-------------------------------------------
// метод корзины
// проверяет, находится ли книга в корзине
//
function Contains( id)
{
	for(var i=0; i<this.cart.length; i++)
		if( this.cart[i][0] == id)
			return true;
	
	return false;
}

function SaveCart()
{
	var d=new Date();
	
	d.setFullYear( d.getFullYear()+1 );
	
	SetCookie(cookieName, this.toCookie(), d);
}
//-->
