    	sum_discounts = [];
    	sum_for_discounts = [];
    	function check_limit(id) {
           if ($('limit_'+id)  == null) {return true;}
    	   limit = parseInt($('limit_'+id).firstChild.nodeValue);
    	   type = $('limit_type_'+id).firstChild.nodeValue;
    	   count = parseInt($F($('count_'+id)));
    	   pt = $F($('pricetype_'+id))
    	   
    	   if(type == 'шт.') {
    	       if(pt != 4 ){
    	           if(count % limit != 0) {
    	               alert("Заказ для позиции \""+$('name_'+id).firstChild.nodeValue+"\" должен быть кратен "+limit+" шт.");
        	           return false;
        	       }
    	       } else {
    	            if(count < limit) {
    	               alert("Заказ для позиции \""+$('name_'+id).firstChild.nodeValue+"\" должен быть не менее "+limit+" шт.");
        	           return false;
        	       }
    	       }
    	   } else {
    	        price = parseFloat($('price_'+id).firstChild.nodeValue);
                if(count*price < limit) {
                    alert("Сумма заказ для позиции \""+$('name_'+id).firstChild.nodeValue+"\" должена быть не менее "+limit+" руб.");
                    return false;
                }
    	   }
    	   
    	   return true;
    	}
    	
		function submit_order() {
			str = ""
			if($('register-type') != null) {
				if($F($('register-type')) == 1) {
					if($F($('f_org_name'))  == "") {
						str += "\t*Не заполнено поле \"Название организации\"\n"; 
					}
					
					if($F($('f_inn'))  == "") {
						str += "\t*Не заполнено поле \"ИНН\"\n"; 
					}
					
					if($F($('f_kpp'))  == "") {
						str += "\t*Незаполнено поле \"КПП\"\n"; 
					}
					
					if($F($('f_bik'))  == "") {
						str += "\t*Не заполнено поле \"БИК\"\n"; 
					}
					
					if($F($('f_r_acc'))  == "") {
						str += "\t*Не заполнено поле \"Рассчетный счет\"\n"; 
					}
					
					if($F($('f_phone'))  == "") {
						str += "\t*Не заполнено поле \"Телефон\"\n"; 
					}
					
					if($F($('f_address'))  == "") {
						str += "\t*Не заполнено поле \"Адрес\"\n"; 
					}
					if($F($('f_email'))  == "") {
						str += "\t*Не заполнено поле \"E-mail\"\n"; 
					}
				} else {
					if($F($('f_fio'))  == "") {
						str += "\t*Не заполнено поле \"ФИО\"\n"; 
					}
					if($F($('f_p_phone'))  == "") {
						str += "\t*Не заполнено поле \"Телефон\"\n"; 
					}
					if($F($('f_p_address'))  == "") {
						str += "\t*Не заполнено поле \"Адрес\"\n"; 
					}
					if($F($('f_p_email'))  == "") {
						str += "\t*Не заполнено поле \"E-mail\"\n"; 
					}
					if($F($('f_p_passport'))  == "") {
						str += "\t*Не заполнено поле \"Паспортные данные\"\n"; 
					}
				}
		
				if(str != '') {
					alert("При обработке формы произошли следующие ошибки:\n"+str);
					return false;
				}
			}
			$('order-form').submit();
			return true;
		}
		
		function proceed_order() {
		    if(calc_cart() == 'limit') {
		      $('register-man').style.display = 'none';
		      $('register-legal').style.display = 'none';
		      return;
		    }
		    
			if($('register-type') == null) {
				return submit_order();
			}
			
			if($F($('register-type')) == 1) {
				$('register-man').style.display = 'none';
				$('register-legal').style.display = '';
			} else {
				$('register-legal').style.display = 'none';
				$('register-man').style.display = '';
			}
		}
		
		function remove_from_cart(container, id) {
			butt = container.innerHTML;
			container.innerHTML = "<div class=\"Load\"></div>";
			url = "/cart/remove.html?id="+ encodeURIComponent(id);
			new Ajax.Request(url, {
					method: 'get',
					onSuccess: function(transport) {
						response = transport.responseJSON;
						if(response == null || !response.result) {
							container.innerHTML = butt;
							return;
						}

						$('tr_'+id).parentNode.removeChild($('tr_'+id));
						if($$('input.item-id').length < 1) {
							window.location.href="/cart/view.html";
						}

						calc_cart();
					},
					onFailure: function(transport) {
						container.innerHTML = butt;
					}
				}
			);
		}
		
		function get_remains(items) {
			remains = "";
			ids="";
			for(i=0;i<items.length;i++) {
				id = $F(items[i]);
				ids += id+";";
			}
			url = "/cart/remains.html?ids="+encodeURIComponent(ids);
			new Ajax.Request(url, {
					method: 'get',
					asynchronous: false,
					onSuccess: function(transport) {
						response = transport.responseJSON;
						if(response == null) {
							alert("Ошбика загрузки данных!");
						}
						remains = response;
					},
					onFailure: function(transport) {
						alert("Ошбика загрузки данных!");
					}
				}
			);
			
			return remains;
		}
		
		function pre_clone() {
			clonable = $('clonable-preorder');
			table = $('preorder-table');
			new_tr = clonable.cloneNode(true);
			input = new_tr.getElementsByTagName("input")[0];
			input.value=1;
			new_tr.style.display='';
			new_tr.id='preorder_'+1;
			table.appendChild(new_tr);
			
			
		}
		
		function delete_preorder(id) {
			table = $('preorder-table');
			tr = $('preorder_'+id);
			table.removeChild(tr);
			if(table.getElementsByTagName('tr').length == 2) {
				$('preorder-span').style.display='none';
			}
		}
		
		function create_preorder(preorder) {
			clonable = $('clonable-preorder');
			table = $('preorder-table');
			for (ind in preorder) {
				if($('preorder_'+ind) != null) {
					$('preorder_input_'+ind).value = preorder[ind];
				} else {
					new_tr = clonable.cloneNode(true);
					input = new_tr.getElementsByTagName("input")[0];
					input.value=1;
					new_tr.style.display='';
					new_tr.id='preorder_'+ind;
					td = new_tr.getElementsByTagName('td')[0];
					Element.extend(td);
					td.update($('name_'+ind).firstChild.nodeValue)
					input = new_tr.getElementsByTagName('input')[0];
					input.name = 'preorder['+ind+']';
					input.id = 'preorder_input_'+ind;
					input.value = preorder[ind];
					del_lnk = new_tr.getElementsByTagName('td')[2];
					del_lnk.innerHTML = '<a href="#" onclick="delete_preorder('+ind+'); return false;"><img src="/image/delete.gif" alt="удалить позицию" width="60" height="18"></a>'
					table.insertBefore(new_tr, clonable);
				}
			}
			
			$('preorder-span').style.display='';
			
		}
		
		function calc_remains(remainds, items) {
			str = "";
			str_max_len = 180;
			strings = new Array();
			preorder = {};
			for(i=0;i<items.length;i++) {
				id = $F(items[i]);
				count = parseInt($F($('count_'+id)));
				if(isNaN(count)) {
					alert("Количество должно быть числом!");
					return false;
				}
				remains[id] = parseInt(remains[id])
				
				if(remains[id] < count) {
					t = "* "+$('name_'+id).firstChild.nodeValue+":\t\t"+(count-remains[id]) + " шт. \n";
					
					str += t;
					$('count_'+id).value = remains[id];
					preorder[id] = count-remains[id];
				}
				
				 
			}	
			if(str != "")
			{
				cstr = "К сожалению, выбранного вами товара нет на складе в достаточном количестве.\n\n"
					   + "Вы хотите оформить предзаказ на следующие позиции:\n\n";
					   for(ind=0;ind<str_max_len-1;ind++){
					   		cstr += " ";
					   }
				cstr += "\n";
				cstr += str
				if(confirm(cstr)) {
					create_preorder(preorder);	
				}
			}
			
			return true;
		}
		
		function calc_cart(auto)
		{
		    if($('calc-button') == null) { return; }
			buttr = $('calc-button').innerHTML;
			$('calc-button').innerHTML = "<div class=\"Load\"></div>";
			items = $$('input.item-id');
			remains = get_remains(items);
			sum_discounts = [];
			sum_for_discounts = [];
			
			if(!calc_remains(remains, items)) {
				return false;
			}

			if(remains == "") {
				return;
			}
			
						var sum = 0;
			var ids = "";
            
            for(i=0;i<items.length;i++) {
				calc_sums_line($F(items[i])); 
			}	
                      
			for(i=0;i<items.length;i++) {
			    if(!auto) {
			         if(!check_limit($F(items[i]))) {
    			         $('calc-button').innerHTML = buttr;
			             return "limit";
			         }
			    }
				ssum = calc_cart_line($F(items[i])); 
				if(ssum === false) {
					$('calc-button').innerHTML = buttr;
		      		return false; 
				}
				ids += $F(items[i]) + ":" + parseInt($F($('count_'+ $F(items[i])))) + ";";
				sum += ssum
			}	
			
			
			$('sum').update(sum.toFixed(2));
			$('sum-hidden').update(sum.toFixed(2));
			
			for(i=0;i<items.length;i++) {
    			update_discount($F(items[i]));
            }
            
			if(!auto) { 
				url = "/cart/update.html?ids=" + encodeURIComponent(ids);
				new Ajax.Request(url, {
					method: 'get',
					onSuccess: function(transport) {
						response = transport.responseJSON;
						if(response == null || !response.result) {
							alert("Обновить данные не удалось!");
							$('calc-button').innerHTML = buttr;
							return;
						}
						$('calc-button').innerHTML = buttr;
					},
					onFailure: function(transport) {
						alert("Обновить данные не удалось!");
						$('calc-button').innerHTML = buttr;
					}
				}
			);
			} else {
				$('calc-button').innerHTML = buttr;
			}
		}
		function update_discount(id) {
		      pt = $F($('pricetype_'+id));
		      pst = $F($('pricesubtype_'+id));
		      
		      if(sum_discounts[pt] != null && sum_discounts[pt][pst] != null) {
		          $('discount_'+id).update(sum_discounts[pt][pst].toFixed(1));
		      }
		}
		
		function calc_sums_line(id) {
		    count = parseInt($F($('count_'+id)));
			price = parseFloat($('price_'+id).firstChild.nodeValue);
			pt = $F($('pricetype_'+id))
			pst = $F($('pricesubtype_'+id))

			if(isNaN(count)) {
				alert("Количество должно быть числом!");
				return false;
			}
			
			
		    if(isNaN(price)) {
				alert("Неизвестная ошибка");
				return false;
			}
            if(sum_for_discounts[pt] == null) {
                sum_for_discounts[pt] = [];
			}
								
			if(sum_for_discounts[pt][pst] == null) {
                sum_for_discounts[pt][pst] = 0.0;
            }
            
            sum_for_discounts[pt][pst] += count*price;
        }
		
		function calc_cart_line(id) {
		  

			count = parseInt($F($('count_'+id)));
			price = parseFloat($('price_'+id).firstChild.nodeValue);
			
			if(isNaN(count)) {
				alert("Количество должно быть числом!");
				return false;
			}
		    if(isNaN(price)) {
				alert("Неизвестная ошибка");
				return false;
			}
				
			if(!Dealer) {
		
				pt = $F($('pricetype_'+id));
				pst = $F($('pricesubtype_'+id));
			     var discount = 0;
			    if(count != 0) {
				if(Discounts[pt] != undefined && Discounts[pt][pst] != undefined) {
									discs = Discounts[pt][pst]
						
					for(ind=0; ind<discs.length; ind++) {
						if(discs[ind]['type'] == 'sum') {
							if(sum_for_discounts[pt][pst] >= discs[ind]['from'] && sum_for_discounts[pt][pst] <= discs[ind]['to']) {								//alert("count = " + (count*price) +" from= " + discs[ind]['from'] + " to = " + discs[ind]['to'] + " disc =" + discs[ind]['discount']);
								discount = discs[ind]['discount'];
								//alert(1);

								if(sum_discounts[pt] == null) {
    								sum_discounts[pt] = [];
								}
								
								if(sum_discounts[pt][pst] == null) {
								    sum_discounts[pt][pst] = parseFloat(discs[ind]['discount']);
								} else {
								    if(discs[ind]['discount'] > sum_discounts[pt][pst]) {
								        sum_discounts[pt][pst] = parseFloat(discs[ind]['discount']);
								    }
								}
								break;
							}
						} else {
							if(count >= discs[ind]['from'] && count <= discs[ind]['to']) {
								//alert("count = " + count +" from= " + discs[ind]['from'] + " to = " + discs[ind]['to'] + " disc =" + discs[ind]['discount']);
								discount = discs[ind]['discount'];
								break;
							}
						}
					}
					
					discount = parseFloat(discount);
				}
				ssum = count*price - (discount/100)*count*price ;
				$('discount_'+id).update(discount.toFixed(1));
				}
				else {
				 ssum =0;
				}
			}
			else {
				ssum = count*price;
			}
			
			$('sum_'+id).update(ssum.toFixed(2));
			
			return ssum;
		}
		
		window.onload = function() {
			calc_cart(true);
		}
		