function round_float(x,n){
  if(!parseInt(n))
  	var n=0;
  if(!parseFloat(x))
  	return false;
  return Math.round(x*Math.pow(10,n))/Math.pow(10,n);
}

function trim(string) {
	return string.replace(/(^\s+)|(\s+$)/g, "");
}

$( function() {
			
	//типы
	var type1   = '.b-articles_type1 ';
	var type2   = '.b-articles_type2 ';
	var type34  = '.b-articles_type34 ';
	var type5   = '.b-articles_type5 ';
	var type678 = '.b-articles_type678 ';
	var type9   = '.b-articles_type9 ';
	
	// параметры
	var cthick  = '.e-item_thick';
	var cpack   = '.e-item_pack';
	var csize   = '.e-item_size';
	var cprice  = '.e-item_price';
	var clength = '.e-item_length';
	var ccount  = '.count';
	var csum    = '.sum';
	var cname   = '.e-mess_header';
	
	$( '.b-articles ' + ccount + ' input').val('')
	$( '.b-articles ' + ccount + ' input').keypress( function(event) { 
		if( event.keyCode !=8 && event.keyCode !=0 && (event.keyCode <48 || event.keyCode >57))	return false;	
	 });
	
	// Обработчик 1-го типа
	$( type1 + ccount + ' input').val('');
	$( type1 + ccount + ' input').keyup( function() { 
		var cnt = $(this);
		var data = cnt.parent();
		if (cnt.val() == '') {
			data.nextAll(csum).text('');
			return;
		}
		var price = data.prevAll(cprice).text();
		
		data.nextAll(csum).text( round_float(parseFloat(price) * cnt.val(), 2) );
	});
	
	// Обработчик 2-го типа
	$( type2 + cthick ).each( function() {
		var data = $(this);
		var size = data.find('option:selected').val();
		data.nextAll(cprice).text(size);
	});
	$( type2 + cthick + ' select').change( function() { 
		var sel = $(this);
		var opt = sel.find('option:selected');
		var data = sel.parent();
		var price = opt.val()
		var cnt = data.nextAll(ccount).children();
		data.nextAll(cprice).text( price );
		if (cnt.val() != '') {
			data.nextAll(csum).text( round_float( parseFloat(price) * cnt.val(), 2 ) );
		}
	});
	$( type2 + ccount + ' input').keyup( function() { 
		var cnt = $(this);
		var data = cnt.parent();
		if (cnt.val() == '') {
			data.nextAll(csum).text('');
			return;
		}
		var price = data.prevAll(cthick).find('option:selected').val();
		data.nextAll(csum).text( round_float( parseFloat(price) * cnt.val(), 2 ) );
	});
	
	// Обработчик 3-го и 4-го типов
	$( type34 + cthick ).each( function() {
			var data = $(this);
		var size = data.find('option:selected');
		data.nextAll(cprice).text(size.val());
	});
	$( type34 + cthick + ' select').change( function() { 
		var sel = $(this);
		var opt = sel.find('option:selected');
		var data = sel.parent();
		var price = opt.val()
		var cnt = data.nextAll(ccount).children();
		data.nextAll(cprice).text( price );
		if (cnt.val() != '') {
			data.nextAll(csum).text( round_float( parseFloat(price) * cnt.val(), 2 ) );
		}
	});
	$( type34 + ccount + ' input').keyup( function() { 
		var cnt = $(this);
		var data = cnt.parent();
		if (cnt.val() == '') {
			data.nextAll(csum).text('');
			return;
		}
		var price = data.prevAll(cthick).find('option:selected');
		data.nextAll(csum).text( round_float( price.val() * cnt.val(), 2 ) );
	});
	
	// Обработчик 5-го типа
	$( type5 + cpack ).each( function() {
		var data = $(this);
		var size = data.find('option:selected');
		data.nextAll(csize).text(size.val());
	});
	$( type5 + cpack + ' select').change( function() { 
		var sel = $(this);
		var opt = sel.find('option:selected');
		var data = sel.parent();
		data.nextAll(csize).text(opt.val());
		var price = data.nextAll(cprice).text();
		var cnt = data.nextAll(ccount).children();
		if (cnt.val() != '') {
			data.nextAll(csum).text( round_float( parseFloat(price) * cnt.val() * opt.text(), 2 ) );
		}
	});
	$( type5 + ccount + ' input').keyup( function() { 
		var cnt = $(this);
		var data = cnt.parent();
		if (cnt.val() == '') {
			data.nextAll(csum).text('');
			return;
		}
		var price = data.prevAll(cprice).text();
		var pack = data.prevAll(cpack).find('option:selected');
		data.nextAll(csum).text( round_float( parseFloat(price) * pack.text() * cnt.val(), 2 ) );
	});
	
	// Обработчик 6-го, 7-го и 8-го типов
	$( type678 + ccount + ' input').keyup( function() { 
	
		var cnt = $(this);
		var data = cnt.parent();
		if (cnt.val() == '') {
			data.nextAll(csum).text('');
			return;
		}
		var price = parseFloat(data.prevAll(cprice).text());
		var pack = parseFloat( data.prevAll(cpack).text() );
		data.nextAll(csum).text( round_float( parseFloat(price) * pack * cnt.val(), 2 ) );
	});
	
	// Обработчик 9-го типа
	$( type9 + clength ).each( function() {
		var data = $(this);
		var length = data.find('option:selected');
		data.nextAll(cprice).text(length.val());
	});
	$( type9 + clength + ' select').change( function() { 

		var sel = $(this);
		var opt = sel.find('option:selected');
		var data = sel.parent();
		var pack = data.next().text();
		var price = opt.val()
		var cnt = data.nextAll(ccount).children();
		data.nextAll(cprice).text( price );
		if (cnt.val() != '') {
			data.nextAll(csum).text( round_float( parseFloat(price) * cnt.val(), 2 ) );
		}
	});
	$( type9 + ccount + ' input').keyup( function() { 
		var cnt = $(this);
		var data = cnt.parent();
		if (cnt.val() == '') {
			data.nextAll(csum).text('');
			return;
		}
		var price = data.prevAll(clength).find('option:selected').val();
		var pack = data.prevAll(cpack).text();
		data.nextAll(csum).text( round_float( parseFloat(price) * cnt.val(), 2 ) );
	});
	
	var counter = 0;
	
	//Обработчик добавления в корзину
	$('.b-articles .addtocart').click( function() {

		var add = $(this).parent();
		var cnt = add.prevAll(ccount).children();

		if (round_float(cnt.val())) {
                    $('#tempresult').css('margin-top', '0');
		    $('#tempresult').html('<b>Итого:</b>');
			var sum = $.cookie('sum');
			var counter = parseInt($.cookie('counter'));
			
			if (!counter) {
				counter = 0;
			}
			counter++;
			$.cookie('counter', counter);			
			
			var article = trim(add.prevAll(cname).text());
			var size = add.prevAll(cthick).attr('class') ? add.prevAll(cthick) : add.prevAll(csize);
			var onePrise = parseFloat(add.prevAll(cprice).text());
			var amount = add.prevAll(ccount).find('input').val();
			var measure = add.parent('tr').parent().find('th.count').find('.units').text();
			var summ = add.prev(csum).text();
			
			if (typeof size.children().attr('type') == 'string') {
				sizeCount = size.find('select')[0].options[size.find('select')[0].selectedIndex].text;
				sizeUnits = size.find('.units').text();
				size = sizeCount + sizeUnits;
			} else {
				size = size.text();	
			}

			if (counter > 1) {
				var number = round_float(parseFloat(sum) + parseFloat(add.prev(csum).text()), 2);
				var cookieData = ',[' + $.cookie('counter') + ',"'+article+'","'+size+'","'+onePrise+'","'+amount+measure+'","'+summ+'"]';			// Не более 4Kb информации.
				if ((cookieData.length + document.cookie.length) >= 3990) {
					counter--;
					$.cookie('counter', counter);
					alert('корзина переполнена');
					return false;
				}
				$.cookie('cart', $.cookie('cart') + cookieData);
			} else {
				var number = parseFloat(add.prev(csum).text());
				var cookieData = '[' + $.cookie('counter') + ',"'+article+'","'+size+'","'+onePrise+'","'+amount+measure+'","'+summ+'"]';			// Не более 4Kb информации.
				if (cookieData.length + document.cookie.length >= 3990) {
					counter--;
					$.cookie('counter', counter);					
					alert('корзина переполнена');
					return false;
				}
				$.cookie('cart', cookieData);
			}

			eval('var cookieDataArray=[' + $.cookie('cart') + ']');

			// Собираем шаблон для каждой позиции.
			var template = '';
			for (var i = 0; i < cookieDataArray.length; i++) {
				template += '<div class="stripe">';
				  template += '<span class="article">' + cookieDataArray[i][1] + '</span><br>';
				  template += '<div>' + cookieDataArray[i][2]  + '</div>';
				  template += '<div class="summ">' + cookieDataArray[i][5] + '</div>';
				  template += '<div class="oneprise">(' + cookieDataArray[i][3] + ' * ';
				  template += cookieDataArray[i][4] + ')</div>';
				template += '</div>';
			}			

			$('.b-cart .list').html('');
			$('.b-cart .list').html(template);
		
			$.cookie('sum', number);	
			$('.b-cart .sum').html( $.cookie('sum') + ' руб.' );
		}
	} );

	// Собираем корзину при загрузке страницы.
	if ($.cookie('counter') >= 1) {
	  eval('var cookieDataArray=[' + $.cookie('cart') + ']');
	  var template = '';
	  for (var i = 0; i < cookieDataArray.length; i++) {
		template += '<div class="stripe">';
		  template += '<span class="article">' + cookieDataArray[i][1] + '</span><br>';
		  template += '<div>' + cookieDataArray[i][2]  + '</div>'
		  template += '<div class="summ">' + cookieDataArray[i][5] + '</div>';
		  template += '<div class="oneprise">(' + cookieDataArray[i][3] + ' * ';
		  template += cookieDataArray[i][4] + ')</div>';
		template += '</div>';
	  }		
	} else {
		var template = '';
	}	

	$('.b-cart .list').html(template);

	if ( $.cookie('sum') != null) {
		$('#sum').html($.cookie('sum') + ' руб.');
$('#tempresult').css('margin-top', '0');
	}
	else {
		//$('#sum').html('0 руб.');
		$('#tempresult').html('Вы еще не добавили товары к заказу.');
		$('#sum').html('');		
	}
	    
	// CLear cart.
	$('#clearAll').click(function() {
		$.cookie('cart', null);
		$.cookie('counter', null);		
		$.cookie('sum', null);
		//$('#sum').html('0 руб.');
		$('#cartText').html('');
		$('#tempresult').html('Вы еще не добавили товары к заказу.');
		$('#sum').html('');
$('#tempresult').css('margin-top', '-10px');	
	});

	var srcOld = $('#crossclear').attr('src');
	var colorOld = $('#clearAll').css('color');
	$('#clearAll').hover(function() {
			$('#crossclear').attr('src', '/_data/objects/0000/0766/crossH.gif');
			$(this).toggleClass('clearHover');
		}, function() {
			$('#crossclear').attr('src', srcOld);
			$(this).toggleClass('clearHover');
	});
});
