Virtonomica:Снабжение

Добавление расширенной функциональности вкладки Снабжение

// ==UserScript==
// @name           Virtonomica:Снабжение
// @namespace      virtonomica
// @version        1.893
// @description    Добавление расширенной функциональности вкладки Снабжение
// @author         UnclWish
// @include        http*://*virtonomic*.*/*/main/unit/view/*
// @include        http*://*virtonomic*.*/*/main/unit/view/*/supply
// ==/UserScript==

(function() {
	var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window);
	var $ = win.$;
	var timeout;
	var delay = 325;//задержка в милисекундах обновления показателей во время ввода
	var txt = [],
		ko = [],
		scl = [],
		txt1 = [],
		//prc = 0;
		i = 0,
		j = 0,
		closespan = '<span r="windkol" class="closeform" style="float:right;margin-right:10px;color:#f00;font-size:14pt;cursor:pointer;">&#215;</span>',
		p1 = -1,
		p2 = -1,
		form = false;

	//---------------------------------------------------------------------
	// работа с локальным хранилищем
	//---------------------------------------------------------------------
	/**
	* записать данные в локальнео хранилище, с проверкой ошибок
	*/
	function ToStorage(name, val)
	{
	    try {
	       window.localStorage.setItem(name, JSON.stringify(val));
	    } catch(e) {
	       var out = "Ошибка добавления в локальное хранилище";
	       console.log(out);
	    }
	}

	//---------------------------------------------------------------------
	// end of работа с локальным хранилищем
	//---------------------------------------------------------------------

	// Проверяем, нужная ли страница
	//var title=$('#wrapper > div.metro_header > div > div.picture').attr('class');
    //var title=$('#wrapper > div.metro_header > div.headern.office > div.content > div.bg-image').attr('class');
    var title=$('#wrapper > div.metro_header > div.headern.office > div.picture').attr('class');
    //console.log (title);
	var a1=$('div.title').text().trim();
	var href = location.href;
    if ((href).slice(-1)=="#") href = (href).slice(0,-1);
    if ((href).slice(-3)=="old") href = (href).slice(0,-4);
	var a2=(href).slice(-4);

	//console.log(a1);
	if (a1.indexOf("Офис") == -1) return; //Выход если главная страница не нашей компании.
	//	if ((href.indexOf('sale') > 0) & (title.search('unit-header-warehouse') == -1)) return
	//	if ((href.indexOf('sale') == -1) & (title.search('unit-header-warehouse') == -1)) return};

	//console.log(a2);
	if (isNaN(a2) & a2 != "pply") return; //Выход если не главная страница или продажа

	$(document).ready(function() {

	var wc_info = $("<div id=v_info></div>");

	// Идентификатор подразделения
	var id_shop = /(\d+)/.exec(location.href)[0];
	// Ссылки
	var realm = href.replace('https://virtonomica.ru/','');
	realm = realm.substr(0,4);
	var vl_info_link = `https://virtonomica.ru/${realm}/main/industry/unit_type/info/2011/volume`;
	var tm_info_link = `https://virtonomica.ru/${realm}/window/globalreport/tm/info`;
	var link_api = `https://virtonomica.ru/api/${realm}/main/unit/summary?id=${id_shop}`;
	//console.log(link_api);

	//if ((title.search('unit-header-shop') != -1) || (title.search('unit-header-fuel') != -1))
	function getUnitSizeMain() {
		if (title.search('fuel')!=-1) {
		var size = parseInt($("td.title:contains('Размер') ~ td > div").text().replace(/ /g,'').replace('колонок',''));
		var sizename = $("td.title:contains('Размер') ~ td > div").text();}
		if (title.search('bgunit-shop')!=-1) {
		size = parseInt($("td:contains('Торговая площадь')").next().text().replace(/ /g,'').replace('м','').slice(0,-1));}
		//console.log(size);
		unit_sizes_array[id_shop] = new Object();
		unit_sizes_array[id_shop].size = size;
		//console.log(unit_sizes_array[id_shop].size);

		ToStorage('unit_sizes_array', unit_sizes_array);
		}

	if (!(isNaN(a2))) {
		if ((title.search('bgunit-shop') != -1) || (title.search('bgunit-fuel') != -1)) {
		//$.get(new_url, function (sizedata) {
		var unit_sizes_array = JSON.parse(window.localStorage.getItem('unit_sizes_array'));
	  	if (unit_sizes_array == null) unit_sizes_array = new Object();
		getUnitSizeMain();
		return;
		}}

	function getUnitSize() {
		$.ajax({
		url: link_api,
	    cache: false,
		async: false, //то самое плохое место с синхронными запросами. Зато работает без дополнительных проверок. Но лучше избегать, конечно.
		success: function(unitsummarydata) {
			unit_sizes_array[id_shop] = new Object();
			unit_sizes_array[id_shop].size = unitsummarydata.trading_square;

			ToStorage('unit_sizes_array', unit_sizes_array);
		},
		//ajaxError:
		//$("#v_info").append("<br>" + np + " - нет данных по объемам хранения. Если товар не ТМ, сохраните данные на странице по <a href=https://virtonomica.ru/"+realm+"/main/industry/unit_type/info/2011/volume>ссылке</a>").css('color', 'red')
		});
	}

	function getValsArray() {
		var vals_array = new Object();
		$.ajax({
		url: vl_info_link,
		async: false, //то самое плохое место с синхронными запросами. Зато работает без дополнительных проверок. Но лучше избегать, конечно.
		success: function(data){
			var table = $("tbody", data);
			//console.log('table = ' + table.length);
            //console.log(table);
			//alert ('table = ' + table.length);
			var tr = $("tr", table);
			//console.log('tr = ' + tr.length);
			for (var i=0; i<tr.length; i++){
				var th = $("td>span[class='item volume-cont']>button>span>i", tr.eq(i) );
                //console.log(th);
				var td = $("td>span[class='item volume-cont']>span", tr.eq(i) );
				//var img = $("a", tr.eq(i) );
				//var src = img.attr('href');
                var src = $("td>span[class='item volume-cont']>button", tr.eq(i) );
                //console.log(src);
				for(var j=0; j< td.length; j++){
                    //src.slice(0,src.lastIndexOf('&'));
                    var srca = src.eq(j).attr('data-link');
                    var srcb = srca.split('&');
					var code = srcb[0].replace('https://virtonomica.ru/api/'+realm+'/main/product/info?id=','');
					var name = th.eq(j).attr('data-content');
					var vals = td.eq(j).text();
					//vals = parseFloat(vals.replace('$', '').replace(' ', '').replace(' ', '').replace(' ', ''));
                    vals = parseFloat(vals.replace(/\u00A0/g, ''));
                    vals_array[name] = new Object();
					vals_array[code] = new Object();
					vals_array[name].name = name;
					vals_array[code].code = code;
					vals_array[name].vals = vals;
					vals_array[code].vals = vals;
				}
			}
			ToStorage('vals_array', vals_array);
		},
		//ajaxError:
		//$("#v_info").append("<br>" + np + " - нет данных по объемам хранения. Если товар не ТМ, сохраните данные на странице по <a href=https://virtonomica.ru/"+realm+"/main/industry/unit_type/info/2011/volume>ссылке</a>").css('color', 'red')
		});
	}

	function UpdateValsStorage() {
		// удаляем данные по объемам хранения и обновляем страницу
		window.localStorage.removeItem('vals_array');
		getValsArray();
		//location.reload();
	}

//----------------------------------------------------------------

	function num(num, x){
		num = num.toFixed(2);
		var parts = num.split('.');
		    parts[0] = parts[0].substr(0, parts[0].length%3)+parts[0].substr(parts[0].length%3).replace(/(\d{3})/g,' \$1');
            if (parts[0].length%4 === 0) parts[0] = parts[0].slice(1);
            if (x) return parts.join('.');
		else return parts[0];
		}
	function Calculate1(n){
		$('.divtemp').text('');
		var c = parseInt($('#sc').val()),
			c1 = parseInt($('#sc1').val()),
			x1 = 0,
			x2 = 0,
			k = parseFloat($('#sk').val()),
			k1 = parseFloat($('#sk1').val()),
			k2 = parseFloat($('#sk2').val()),
			k3 = parseFloat($('#sk3').val()),
			cn1 = 0,
			cn2 = parseFloat($('#scn2').val()),
			cn3 = parseFloat($('#scn3').val());
		x1 = Math.round(f1(c, c1, k, k1, k2, k3));
		x2 = Math.round(f1(c, c1, k, k1, k3, k2));
		cn1 = f3(c, c1, x1, x2, cn2, cn3).toFixed(2);

		if($('#svo').attr('checked')){
			if(x1 > txt[p1].max){
				x1 = txt[p1].max;
				c1 = Math.round(f2(c, x1, k, k1, k2, k3));
				x2 = Math.round(f1(c, c1, k, k1, k3, k2));
				cn1 = f3(c, c1, x1, x2, cn2, cn3).toFixed(2);
			}
			if(x2 > txt[p2].max){
				x2 = txt[p2].max;
				c1 = Math.round(f2(c, x2, k, k1, k3, k2));
				x1 = Math.round(f1(c, c1, k, k1, k2, k3));
				cn1 = f3(c, c1, x1, x2, cn2, cn3).toFixed(2);
			}
			$('#sc1').val(c1);
		}

		$('#sx1').val(x1);
		$('#sx2').val(x2);
		$('#scn1').val(cn1);

		$('#cenacach').text((cn1 / k1).toFixed(2));
		$('#cenacach1').text((cn2 / k2).toFixed(2));
		$('#cenacach2').text((cn3 / k3).toFixed(2));
		$('#divtemp'+p1).html('<a class="aaddsp1" href="#">_+_</a> <a class="aadds1" href="#">'+x1+'</a>');
		$('#divtemp'+p2).html('<a class="aaddsp2" href="#">_+_</a> <a class="aadds2" href="#">'+x2+'</a>');
		$('.aadds1').unbind('click').click(function(){
			var col = $(this).text();
            if (col > txt[p1].max) col = txt[p1].max;
            if ($(this).closest('tr').attr('class').substr(0,3)=="odd")
            var name = $(this).closest('tr').attr('class').substr(4,4);
            else
                if ($(this).closest('tr').attr('class').substr(0,3)=='eve')
					name = $(this).closest('tr').attr('class').substr(5,4);
			$(this).parent().next().val(col);
			if(n === 0) updatetable(8);
			if(n == 1) updatetablepr(7);
			if(n == 2) updatetablesk(name);
			return false;
		});
		$('.aadds2').unbind('click').click(function(){
			var col = $(this).text();
            if (col > txt[p2].max) col = txt[p2].max;
            if ($(this).closest('tr').attr('class').substr(0,3)=="odd")
            var name = $(this).closest('tr').attr('class').substr(4,4);
            else
                if ($(this).closest('tr').attr('class').substr(0,3)=='eve')
                name = $(this).closest('tr').attr('class').substr(5,4);
			$(this).parent().next().val(col);
			if(n === 0) updatetable(8);
			if(n == 1) updatetablepr(7);
			if(n == 2) updatetablesk(name);
			return false;
		});

		$('.aaddsp1').unbind('click').click(function(){
			var col = parseInt($(this).next().text());
			var col1 = parseInt($(this).parent().next().val());
			var colo = parseInt(col + col1);
            if (colo > txt[p1].max) colo = txt[p1].max;
            if ($(this).closest('tr').attr('class').substr(0,3)=="odd")
            var name = $(this).closest('tr').attr('class').substr(4,4);
            else
                if ($(this).closest('tr').attr('class').substr(0,3)=='eve')
                name = $(this).closest('tr').attr('class').substr(5,4);
			$(this).parent().next().val(colo);
			if(n === 0) updatetable(8);
			if(n == 1) updatetablepr(7);
			if(n == 2) updatetablesk(name);
			return false;
		});
		$('.aaddsp2').unbind('click').click(function(){
			var col = parseInt($(this).next().text());
			var col1 = parseInt($(this).parent().next().val());
			var colo = parseInt(col + col1);
            if (colo > txt[p2].max) colo = txt[p2].max;
            if ($(this).closest('tr').attr('class').substr(0,3)=="odd")
            var name = $(this).closest('tr').attr('class').substr(4,4);
            else
                if ($(this).closest('tr').attr('class').substr(0,3)=='eve')
                name = $(this).closest('tr').attr('class').substr(5,4);
			$(this).parent().next().val(colo);
			if(n === 0) updatetable(8);
			if(n == 1) updatetablepr(7);
			if(n == 2) updatetablesk(name);
			return false;
		});
	}
	function fillArray( summ, cach, max ) {
		this.summ = summ;
		this.cach = cach;
		this.max = max;
	}
	function add(id,prod,ar){
		if(prod==1){
			$('#sk2').val(ar[id].cach);
			$('#scn2').val(ar[id].summ);
			p1 = id;
		}
		if(prod==2){
			$('#sk3').val(ar[id].cach);
			$('#scn3').val(ar[id].summ);
			p2 = id;
		}
	}
	function print_r(arr, level) {
		var print_red_text = "";
		if(!level) level = 0;
		var level_padding = "";
		for(var j=0; j<level+1; j++) level_padding += "    ";
		if(typeof(arr) == 'object') {
			for(var item in arr) {
				var value = arr[item];
				if(typeof(value) == 'object') {
					print_red_text += level_padding + "'" + item + "' :\n";
					print_red_text += print_r(value,level+1);
			}
				else
					print_red_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}

		else  print_red_text = "===>"+arr+"<===("+typeof(arr)+")";
		return print_red_text;
	}
	function f1(c, c1, k, k1, k2, k3){
			var x1 = (c1 * (k1 - k3) - c * (k - k3)) / (k2 - k3);
		return x1;
	}
	function f2(c, x1, k, k1, k2, k3){
			var c1 = (x1 * (k2 - k3) + c * (k1 - k3)) / (k1 - k3);
		return c1;
	}
	function f3(c, c1, x1, x2, s1, s2){
			var s = (s1 * x1 + s2 * x2) / (c1 - c);
		return s;
	}
	function addar(col, summ, cach, brend, max, sc, name, id ) {
		this.col = col;
		this.summ = summ;
		this.cach = cach;
		this.brend = brend;
		this.max = max;
		this.ck = parseFloat((this.summ / this.cach).toFixed(2));
		this.sc = parseFloat(sc) || 0;
		this.name = name || '';
		this.id = id || 0;
	}
	function nullpr(x){
		if(isNaN(x)) x = 0;
		return x;
	}

	if (title.search('bgunit-shop')!=-1 || title.search('fuel')!=-1){
		//console.log(title);
		form = true;

		var addtablemax = function (ar, table, t){
			var cf=0, kf=0, cnf=0, cnkf=0, bf=0, b=false;
			for(i=0; i<ar.length; i++){
                if(ar[i].col > ar[i].max){
					cf += parseInt(ar[i].max);
                    if(ar[i].col>0) b = true;}
                else
					cf += parseInt(ar[i].col);
			}
			if(cf !== 0){
				for(i=0; i<ar.length; i++){
					if(ar[i].col > ar[i].max){
						kf += parseFloat(ar[i].cach * ( ar[i].max / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].max / cf ));
						bf += parseFloat(ar[i].brend * ( ar[i].max / cf ));
						b = true;
					}else{
						kf += parseFloat(ar[i].cach * ( ar[i].col / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].col / cf ));
						bf += parseFloat(ar[i].brend * ( ar[i].col / cf ));
					}
				}
                cnkf = cnf / kf;
				if(isNaN(kf)){
					kf = 0;
					cnf = 0;
					bf = 0;
					cnkf = 0;
					}
			}
            //if((kf===0) || (isNaN(kf))) kf=1;
            if(b){
				table.closest('td').css('background-color','#fee');
				var n = 0;
				$('tr', table).each( function() {
					var cels = $('td', this);
					//if(n == 0)	$(cels[1]).append(num(cf, false));
					//if(n == 1)	$(cels[1]).append(kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К) с учетом запасов">($'+cnkf.toFixed(2)+')</span>');
					//if(n == 2 && t == 0)	$(cels[1]).append(bf.toFixed(2));
					//if(n == 3 && t == 0)	$(cels[1]).append('$'+num(cnf, true));
					//if(n == 2 && t == 1)	$(cels[1]).append('$'+num(cnf, true));
                    switch (n) {
                        case 1:	$(cels[1]).append(kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К) с учетом запасов">(©'+cnkf.toFixed(2)+')</span>');
                        break;
                        case 2:	if(t === 0)	$(cels[1]).append(bf.toFixed(2));
                           else if(t == 1)	$(cels[1]).append('©'+num(cnf, true));
                        break;
                        case 3:	if(t === 0)	$(cels[1]).append('©'+num(cnf, true));
                        break;
                        default:$(cels[1]).append(num(cf, false));
                        break;
                    }
					n++;
				});
			}
		};
		var createtable = function (ar, i, t){
			if(ar.length>0){
				var cf=0, kf=0, cnf=0, cnkf=0, bf=0;
				for(i=0; i<ar.length; i++){
					cf += parseInt(ar[i].col);
				}
				if(cf > 0){
					for(i=0; i<ar.length; i++){
						kf += parseFloat(ar[i].cach * ( ar[i].col / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].col / cf ));
						bf += parseFloat(ar[i].brend * ( ar[i].col / cf ));
					}
					if(kf!==0) cnkf = cnf / kf;
					if(isNaN(kf)){
						kf = 0;
						cnf = 0;
						bf = 0;
					    cnkf = 0;
					    }
				}else{
					kf = 0;
					cnf = 0;
					bf = 0;
					cnkf = 0;
					}
                if((kf===0) || (isNaN(kf))) kf=1;
				if(t === 0){
					var table = $('<table width="100%" style="margin-top:-17px;margin-bottom:60px;" class="noborder"><tr><td class="zcol" align="right">'+num(cf, false)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К)">(©'+cnkf.toFixed(2)+')</span></td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+bf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr><td align="right">©'+num(cnf, true)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
				//	var table = $('<table width="100%" style="margin-top:-17px" class="noborder"><tr><td class="zcol" align="right">'+cf.toFixed(0)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'('+cnkf.toFixed(2)+')</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+bf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr><td align="right">$'+cnf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
                    }
				if (t == 1) table = $('<table cellpadding="0" cellspacing="0" width="100%" class="noborder"><tr><td align="right">'+num(cf, false)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К)">(©'+cnkf.toFixed(2)+')</span></td><td align="right" style="color:#f00;"></td></tr><td align="right">©'+num(cnf, true)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
                //if(t == 1) var table = $('<table cellpadding="0" cellspacing="0" width="100%" class="noborder"><tr><td align="right">'+cf.toFixed(0)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'('+cnkf.toFixed(2)+')</td><td align="right" style="color:#f00;"></td></tr><td align="right">$'+cnf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
                $(cel).html('').append(table).css('background-color','#efe');
				addtablemax(ar, table, t);
				return 0;
			}
			return i;
		};
		var updatetable = function (n){
			var ar = [], i=0, j=0;
			$(".list tr").each( function() {
				if($(this).hasClass('sub_row') || $(this).hasClass('product_row')){
					var cels = $('td', this),
						c = 0,
						k = 0,
						cn = 0,
						br = 0,
						sv = 0,
						max = 0,
						ck = 0;
					var but_1 = $('<input type="button" rel="'+j+'" value="+1п" />').unbind('click').click(function() { add($(this).attr('rel'),1,txt); });
					var but_2 = $('<input type="button" rel="'+j+'" value="+2п" />').unbind('click').click(function() { add($(this).attr('rel'),2,txt); });
					if($(this).hasClass('sub_row')){

						c = parseInt($('input', cels[1]).val().replace(/ /g, ''));
						cn = parseFloat($(cels[6]).text().replace('©', '').replace(/ /g, ''));
						k = parseFloat($(cels[8]).text().replace(/ /g, ''));
						br = parseFloat($(cels[10]).text().replace(/ /g, ''));
						sv = parseInt($(cels[17]).text().replace(/ /g, ''));
						max = parseInt($('span', cels[1]).text().replace('Max: ', '').replace(/ /g, ''));
					    if(k!==0) ck = cn / k;
                        if(isNaN(k)) ck = 0;
                        if((k===0) || (isNaN(k))) k =1;
						if(n===0){
							$(cels[3]).append('<span style="display:block;color:#f00;">$<span title="Цена за единицу качества (Ц/К)">'+ck.toFixed(2)+'</span></span>');
							$(cels[0]).prepend('<br />').prepend(but_2).prepend(but_1);
							$(cels[1]).prepend('<div class="divtemp" id="divtemp'+j+'" style="color:green"></div>');
                        }
                        $(cels[17]).unbind('click').click(function(){
                            var name = $(this).parent().parent().parent().parent().parent().attr('id').substr(16).split('-');
                            //alert (name[0]);
                            if(isNaN(max)) max = sv;
					        if(sv < max) max = sv;
                            $('input', cels[1]).val(max);
                            updatetable2(8, name[0]);
                            });
                            $(cels[16]).unbind('click').click(function(){
                            var name = $(this).parent().parent().parent().parent().parent().attr('id').substr(16).split('-');
                            if(isNaN(max)) max = sv;
					        if(sv < max) max = sv;
                            $('input', cels[1]).val(max);
                            updatetable2(8, name[0]);
                            });
                        $('span', cels[1]).unbind('click').click(function(){
                            var name = $(this).parent().parent().attr('id').substr(16).split('-');
                            //alert (name[0]);
                            if(isNaN(max)) max = sv;
					        if(sv < max) max = sv;
                            $('input', cels[1]).val(max);
                            updatetable2(8, name[0]);
                            });
                        k = nullpr(k);
						br = nullpr(br);
                    }
					if($(this).hasClass('product_row')){
						i = createtable(ar, i, 0);
						ar = [];
						cel = cels[14];
						c = parseInt($('input', cels[n+17]).val().replace(/ /g, ''));
						cn = parseFloat($(cels[n+22]).text().replace('©', '').replace(/ /g, ''));
						k = parseFloat($(cels[n+24]).text().replace(/ /g, ''));
						br = parseFloat($(cels[n+26]).text().replace(/ /g, ''));
						sv = parseInt($(cels[n+33]).text().replace(/ /g, ''));
						max = parseInt($('span', cels[n+17]).text().replace('Max: ', '').replace(/ /g, ''));
					    if(k!==0) ck = cn / k;
                        if(isNaN(k)) ck = 0;
                        if((k===0) || (isNaN(k))) k =1;
						if(n===0){
							$(cels[19]).append('<span style="display:block;color:#f00;"><span title="Цена за единицу качества (Ц/К)">©'+ck.toFixed(2)+'</span></span>');
					        $(cels[16]).prepend('<br />').prepend(but_2).prepend(but_1);
							$(cels[17]).prepend('<div class="divtemp" id="divtemp'+j+'" style="color:green"></div>');
						}
                        $(cels[n+33]).unbind('click').click(function(){
                            var name = $(this).parent().parent().parent().parent().parent().attr('id').substr(12).split('-');
                            //alert (name[0]);
                            if(isNaN(max)) max = sv;
					        if(sv < max) max = sv;
                            $('input', cels[n+17]).val(max);
                            updatetable2(8, name[0]);
                            });
                        $(cels[n+32]).unbind('click').click(function(){
                            var name = $(this).parent().parent().parent().parent().parent().attr('id').substr(12).split('-');
                            //alert (name[0]);
                            if(isNaN(max)) max = sv;
					        if(sv < max) max = sv;
                            $('input', cels[n+17]).val(max);
                            updatetable2(8, name[0]);
                            });
                        $('span', cels[n+17]).unbind('click').click(function(){
                            var name = $(this).parent().parent().attr('id').substr(12).split('-');
                            //alert (name[0]);
                            if(isNaN(max)) max = sv;
					        if(sv < max) max = sv;
                            $('input', cels[n+17]).val(max);
                            updatetable2(8, name[0]);
                            });
						k = nullpr(k);
						br = nullpr(br);
					}
					if(isNaN(max)) max = sv;
					if(sv < max) max = sv;
                    if(isNaN(c)) c = 0;
					ar[i] = new addar(c, cn, k, br, max);
					i++;
					if(n === 0){
						$(this).attr('ids',j);
						txt[j] = new fillArray( cn, k, max );
						j++;
					}
				}

				if(!$(this).hasClass('sub_row') || !$(this).hasClass('product_row') && i > 0){
					createtable(ar, i, 0);
				}
			});
		};
		var updatetable2 = function (n, name){
			var ar = [], i=0, j=0;
			$('.list tr[id*="'+name+'"]').each( function() {
				if($(this).hasClass('sub_row') || $(this).hasClass('product_row')){
					var cels = $('td', this),
						c = 0,
						k = 0,
						cn = 0,
						br = 0,
						sv = 0,
						max = 0,
						ck = 0;
					var but_1 = $('<input type="button" rel="'+j+'" value="+1п" />').unbind('click').click(function() { add($(this).attr('rel'),1,txt); });
					var but_2 = $('<input type="button" rel="'+j+'" value="+2п" />').unbind('click').click(function() { add($(this).attr('rel'),2,txt); });
					if($(this).hasClass('sub_row')){

						c = parseInt($('input', cels[1]).val().replace(/ /g, ''));
						cn = parseFloat($(cels[6]).text().replace('©', '').replace(/ /g, ''));
						k = parseFloat($(cels[8]).text().replace(/ /g, ''));
						br = parseFloat($(cels[10]).text().replace(/ /g, ''));
						sv = parseInt($(cels[17]).text().replace(/ /g, ''));
						max = parseInt($('span', cels[1]).text().replace('Max: ', '').replace(/ /g, ''));
					    if(k!==0) ck = cn / k;
                        if(isNaN(k)) ck = 0;
                        if((k===0) || (isNaN(k))) k =1;
						//if(n===0){
						//	$(cels[3]).append('<span style="display:block;color:#f00;">$<span title="Цена за единицу качества (Ц/К)">'+ck.toFixed(2)+'</span></span>');
						//	$(cels[0]).prepend('<br />').prepend(but_2).prepend(but_1);
						//	$(cels[1]).prepend('<div class="divtemp" id="divtemp'+j+'" style="color:green"></div>');
                        //}
                        k = nullpr(k);
						br = nullpr(br);
                    }
					if($(this).hasClass('product_row')){
						i = createtable(ar, i, 0);
						ar = [];
						cel = cels[14];
						c = parseInt($('input', cels[n+17]).val().replace(/ /g, ''));
						cn = parseFloat($(cels[n+22]).text().replace('©', '').replace(/ /g, ''));
						k = parseFloat($(cels[n+24]).text().replace(/ /g, ''));
						br = parseFloat($(cels[n+26]).text().replace(/ /g, ''));
						sv = parseInt($(cels[n+33]).text().replace(/ /g, ''));
						max = parseInt($('span', cels[n+17]).text().replace('Max: ', '').replace(/ /g, ''));
					    if(k!==0) ck = cn / k;
                        if(isNaN(k)) ck = 0;
                        if((k===0) || (isNaN(k))) k =1;
						//if(n===0){
						//	$(cels[19]).append('<span style="display:block;color:#f00;"><span title="Цена за единицу качества (Ц/К)">©'+ck.toFixed(2)+'</span></span>');
					    //    $(cels[16]).prepend('<br />').prepend(but_2).prepend(but_1);
						//	$(cels[17]).prepend('<div class="divtemp" id="divtemp'+j+'" style="color:green"></div>');
						//}
						k = nullpr(k);
						br = nullpr(br);
					}
					if(isNaN(max)) max = sv;
					if(sv < max) max = sv;
                    if(isNaN(c)) c = 0;
					ar[i] = new addar(c, cn, k, br, max);
					i++;
					//if(n === 0){
					//	$(this).attr('ids',j);
					//	txt[j] = new fillArray( cn, k, max );
					//	j++;
					//}
				}

				if(!$(this).hasClass('sub_row') || !$(this).hasClass('product_row') && i > 0){
					createtable(ar, i, 0);
				}
			});
		};
        var statusz = function (x,help){
			var x1 = x;
			var color = '#86EF75';
			if(x > 100){
				x1 = 100;
				color = '#F47981';
			}
			if(x < 0){
				x1 = 0;
			}
			var s = '<div title="'+help+'" style="margin-top:3px;border:solid 1px gray;height:15px;"><div style="background-color:'+color+';width:'+x1.toFixed(2)+'%;height:15px;"><span style="position:absolute;margin-left:10px;">'+x.toFixed(2)+'%</span></div></div>';
			return s;
		};

		//var new_url=(location.href).replace('/supply','');
		var size = null;
		var unit_sizes_array = JSON.parse(window.localStorage.getItem('unit_sizes_array'));
	  		if (unit_sizes_array == null) {
				var unit_sizes_array = new Object();
				getUnitSize();
				unit_sizes_array = JSON.parse(window.localStorage.getItem('unit_sizes_array'));
				}
			if (unit_sizes_array[id_shop] == null) {
		  		getUnitSize();
		  		unit_sizes_array = JSON.parse(window.localStorage.getItem('unit_sizes_array'));
				};
		size = unit_sizes_array[id_shop].size;

		var vals_array = JSON.parse(window.localStorage.getItem('vals_array'));
	    if (vals_array == null) {
			getValsArray();
			vals_array = JSON.parse(window.localStorage.getItem('vals_array'));
		}

		var scladr = function () {
	    $("table.infoblock").after(wc_info);
	    //$("#v_info").html("Не удалось получить значения объемов хренения из локального хранилища. Сохраните данные на странице по <a href=https://virtonomica.ru/"+realm+"/main/industry/unit_type/info/2011/volume>ссылке</a>").css('color', 'red');
	    var prc = 0;
		var prc1 = 0;
		var prc2 = 0;
		$(".list tr").each( function() {
			var cels = $('td', this);
			if($(this).hasClass('product_row')) {
				var cel1 = cels[3];
				$('.scl',cel1).remove();
				$('.scl1',cel1).remove();
				$('.scl2',cel1).remove();
				$(cel1).append('<div class="scl"></div>').append('<div class="scl1"></div>').append('<div class="scl2"></div>');
				var col = parseInt($('table td:contains(Количество)',cel1).next().text().replace(/ /g,''));
				var index = parseInt($(cel1).closest('tr').attr('id').replace(/product_row_/g,'').replace(/-([0-9]+)/g,''));
				var name = $('img', this).attr('alt');
                console.log (index);
			  	if (vals_array[index] == null) {
					  getValsArray();
					  vals_array = JSON.parse(window.localStorage.getItem('vals_array'));
		              $("#v_info").append("<br>" + name + " - нет данных по объемам хранения. Обновите страницу или нажмите кнопку обновления ниже. Просмотр объемов хранения <a href=https://virtonomica.ru/"+realm+"/main/industry/unit_type/info/2011/volume>ссылке</a>").css('color', 'red');
				}//index=2556}
				//$('.allsclad select') = size;
				//size = size * 1.05;
				//console.log ($('.allsclad select').val());
				//console.log (vals_array[370077]['vals']);
	                //else var proc=vp*1000/(vals_array[np]['vals']*vs);
				//var scl1 = (col * 100 / scl[index]) * 1000 / $('.list .allsclad select').val();
				//var scl1 = (col * 100 * $('.allsclad select').val()) / scl[index];
                //var scl1 = col / (vals_array[index]['vals'] / $('.allsclad select').val());
				var scl1 = col / vals_array[index].vals / ($('.allsclad select').val() / 1000) * 100;
				$('.scl',cel1).html(statusz(scl1,'В данный момент на складе.'));
				prc += scl1;

				var colprod = parseInt($('table td:contains(Продано)',cel1).next().text().replace(/ /g,''));
				var colzac = parseInt($('.zcol',$(cel1).next()).text().replace(/ /g,''));

				//var scl2 = ((colzac + col) * 100 / scl[index]) * 1000 / $('.list .allsclad select').val();
				//var scl2 = (colzac + col) / (vals_array[index]['vals'] / $('.allsclad select').val());
				var scl2 = (colzac + col) / vals_array[index].vals / ($('.allsclad select').val() / 1000) * 100;
				$('.scl1',cel1).html(statusz(scl2,'После закупки без продаж.'));
				prc1 += scl2;
				//var scl3 = ((colzac + col - colprod) * 100 / scl[index]) * 1000 / $('.list .allsclad select').val();
				//var scl3 = (colzac + col - colprod) / (vals_array[index]['vals'] / $('.allsclad select').val());
				var scl3 = (colzac + col - colprod) / vals_array[index].vals / ($('.allsclad select').val() / 1000) * 100;
				$('.scl2',cel1).html(statusz(scl3,'После закупки с такими же продажами.'));
				prc2 += scl3;
				}
			});
		if(prc > 0 || prc1 > 0 || prc2 > 0){
			$('.allsclad .cc').html(statusz(prc,'В данный момент на складе.')+statusz(prc1,'После закупки без продаж.')+statusz(prc2,'После закупки с такими же продажами.'));
			}
		};
		$('#menutop li ul').width(1100);
		$('#wrapper').width(1100);
		//var i = 0;
			//UpdateValsStorage();
			//});
		var valsinfo = $('.list tr:first').next().next();
				if (title.search('bgunit-shop')!=-1) $(valsinfo).before('<tr><td></td><td class="allsclad"><label>Размер склада магазина<select><option value="'+size/4+'">'+size/4+'</option><option value="'+size/2+'">'+size/2+'</option><option selected value="'+size+'">'+size+'</option><option value="'+size*2+'">'+size*2+'</option><option value="'+size*4+'">'+size*4+'</option></select> м<sup>2</sup></label> <a href="#">?</a></div><div class="cc"></div></td><td colspan="9"><div id=links style="color:blue">Просмотр <a href='+vl_info_link+'>объемов хранения</a> и <a href='+tm_info_link+'>списка ТМ</a>. Вы можете обновить значения объемов хренения, если они изменились </div><div class="helpsn" style="display:none;">Расчет заполняемости склада идет только по товару, находящемуся на данной страннице снабжения. (Если на складе присутствует товар, по которому в данный момент нет поставщика, то данный товар не считается)</div></td></tr>');
                else $(valsinfo).before('<tr><td></td><td class="allsclad"><label>Размер заправки<select><option value="'+size*500/4+'">'+size/4+'</option><option value="'+size*500/2+'">'+size/2+'</option><option selected value="'+size*500+'">'+size+'</option><option value="'+size*1000+'">'+size*2+'</option><option value="'+size*2000+'">'+size*4+'</option></select> колонок</label> <a href="#">?</a></div><div class="cc"></div></td><td colspan="9"><div id=links style="color:blue">Просмотр <a href='+vl_info_link+'>объемов хранения</a> и <a href='+tm_info_link+'>списка ТМ</a>. Вы можете обновить значения объемов хренения, если они изменились </div><div class="helpsn" style="display:none;">Расчет заполняемости склада идет только по товару, находящемуся на данной страннице снабжения. (Если на складе присутствует товар, по которому в данный момент нет поставщика, то данный товар не считается)</div></td></tr>');
				//$('#links').append(UpdateVals);

		// Неоптимальный перебор для нахождения всего одного объекта. Заменен простым селектором выше.
		/*$(".list tr").each( function() {
			var cels = $('td', this);
			if(i === 0 && $(cels[0]).hasClass('title')){
				//$(this).before('<tr><td></td><td class="allsclad"><label>Размер склада<select><option value="1050">100</option><option value="210">500</option><option selected value="105">1000</option><option value="10.5">10000</option><option value="1.05">100000</option></select></label> <a href="#">?</a></div><div class="cc"></div></td><td colspan="9"><div class="helpsn" style="display:none;">Расчет заполняемости склада идет только по товару находящимуся на данной страннице снабжения. (Если на складе присутствует товар по которому в данный момент нет поставщика, то данный товар не считается)</div></td></tr>');
				//if (title.search('shop')!=-1) $(this).before('<tr><td></td><td class="allsclad"><label>Размер склада магазина<select><option value="1050">100</option><option value="210">500</option><option selected value="'+size/952.4+'">'+sizename+'</option><option value="10.5">10000</option><option value="1.05">100000</option></select></label> <a href="#">?</a></div><div class="cc"></div></td><td colspan="9"><div class="helpsn" style="display:none;">Расчет заполняемости склада идет только по товару находящимуся на данной страннице снабжения. (Если на складе присутствует товар по которому в данный момент нет поставщика, то данный товар не считается)</div></td></tr>');
                //else $(this).before('<tr><td></td><td class="allsclad"><label>Размер заправки<select><option value="210">Малая городская АЗС</option><option value="70">Средняя городская АЗС</option><option selected value="'+size*13.1+'">'+sizename+'</option><option value="7">Пригородная сеть АЗС</option><option value="2.1">Областная сеть АЗС</option></select></label> <a href="#">?</a></div><div class="cc"></div></td><td colspan="9"><div class="helpsn" style="display:none;">Расчет заполняемости склада идет только по товару находящимуся на данной страннице снабжения. (Если на складе присутствует товар по которому в данный момент нет поставщика, то данный товар не считается)</div></td></tr>');
				if (title.search('unit-header-shop')!=-1) $(this).before('<tr><td></td><td class="allsclad"><label>Размер склада магазина<select><option value="'+size/4+'">'+size/4+'</option><option value="'+size/2+'">'+size/2+'</option><option selected value="'+size+'">'+size+'</option><option value="'+size*2+'">'+size*2+'</option><option value="'+size*4+'">'+size*4+'</option></select> м<sup>2</sup></label> <a href="#">?</a></div><div class="cc"></div></td><td colspan="9"><div id=links style="color:blue">Просмотр <a href='+vl_info_link+'>объемов хранения</a> и <a href='+tm_info_link+'>списка ТМ</a>. Вы можете обновить значения объемов хренения, если они изменились </div><div class="helpsn" style="display:none;">Расчет заполняемости склада идет только по товару, находящемуся на данной страннице снабжения. (Если на складе присутствует товар, по которому в данный момент нет поставщика, то данный товар не считается)</div></td></tr>');
                else $(this).before('<tr><td></td><td class="allsclad"><label>Размер заправки<select><option value="'+size*500/4+'">'+size/4+'</option><option value="'+size*500/2+'">'+size/2+'</option><option selected value="'+size*500+'">'+size+'</option><option value="'+size*1000+'">'+size*2+'</option><option value="'+size*2000+'">'+size*4+'</option></select> колонок</label> <a href="#">?</a></div><div class="cc"></div></td><td colspan="9"><div id=links style="color:blue">Просмотр <a href='+vl_info_link+'>объемов хранения</a> и <a href='+tm_info_link+'>списка ТМ</a>. Вы можете обновить значения объемов хренения, если они изменились </div><div class="helpsn" style="display:none;">Расчет заполняемости склада идет только по товару, находящемуся на данной страннице снабжения. (Если на складе присутствует товар, по которому в данный момент нет поставщика, то данный товар не считается)</div></td></tr>');
				$('#links').append(UpdateVals);
                i++;
			}
		});*/
		//$('.allsclad').after("Если размер подразделения не верен, то перейдите на его главную страницу ивернитесь обратно");
		$('.allsclad a').unbind('click').click(function() {
			if($('.helpsn').is(':visible'))
				$('.helpsn').hide();
			else
				$('.helpsn').show();
			return false;
		});

		$('input[name*=party_quantity]').unbind('keyup').keyup(function(e) {
			if (timeout) clearTimeout(timeout);
            if ($(this).parent().parent().attr('id').substr(8,3)=="sub")
                var name = $(this).parent().parent().attr('id').substr(16).split('-');
            else if ($(this).parent().parent().attr('id').substr(8,3)=="row")
                name = $(this).parent().parent().attr('id').substr(12).split('-');
			timeout = setTimeout(function() {
			updatetable2(8, name[0]);
			scladr();
			if (e.keyCode == 13) return;
			}, delay);});

		$('.allsclad select').change(function() {
			updatetable(8);
			scladr();
		});

		updatetable(0);
		scladr();
		//});

		var but_ras = $('<input type="button" value="Расчет" />').unbind('click').click(function() { Calculate1(0); });
		var UpdateVals = $('<input type="button" value="Обновить" />').unbind('click').click(function() {
			UpdateValsStorage();
			updatetable(8);
			scladr();
		});
		$('#links').append(UpdateVals);
		$('#links').prepend('<br><div id=links style="color:blue">Если размер подразделения определился неверно, то перейдите на главную вкладку и вернитесь обратно</div>');
	}

	if (title.search('repair')!=-1 || title.search('restaurant')!=-1 || title.search('medicine')!=-1 || title.search('educational')!=-1 || title.search('kindergarten')!=-1){
		form = true;
		//console.log(title);

		addtablemax = function (ar, table, t){
			var cf=0, kf=0, cnf=0, cnkf=0, bf=0, b=false;
			for(i=0; i<ar.length; i++){
                if(ar[i].col > ar[i].max){
					cf += parseInt(ar[i].max);
                    if(ar[i].col>0) b = true;}
                else
					cf += parseInt(ar[i].col);
			}
			if(cf !== 0){
				for(i=0; i<ar.length; i++){
					if(ar[i].col > ar[i].max){
						kf += parseFloat(ar[i].cach * ( ar[i].max / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].max / cf ));
						bf += parseFloat(ar[i].brend * ( ar[i].max / cf ));
						b = true;
					}else{
						kf += parseFloat(ar[i].cach * ( ar[i].col / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].col / cf ));
						bf += parseFloat(ar[i].brend * ( ar[i].col / cf ));
					}
				}
                cnkf = cnf / kf;
				if(isNaN(kf)){
					kf = 0;
					cnf = 0;
					bf = 0;
					cnkf = 0;
					}
			}
            //if((kf===0) || (isNaN(kf))) kf=1;
            if(b){
				table.closest('td').css('background-color','#fee');
				var n = 0;
				$('tr', table).each( function() {
					var cels = $('td', this);
					//if(n == 0)	$(cels[1]).append(num(cf, false));
					//if(n == 1)	$(cels[1]).append(kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К) с учетом запасов">($'+cnkf.toFixed(2)+')</span>');
					//if(n == 2 && t == 0)	$(cels[1]).append(bf.toFixed(2));
					//if(n == 3 && t == 0)	$(cels[1]).append('$'+num(cnf, true));
					//if(n == 2 && t == 1)	$(cels[1]).append('$'+num(cnf, true));
                    switch (n) {
                        case 1:	$(cels[1]).append(kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К) с учетом запасов">(©'+cnkf.toFixed(2)+')</span>');
                        break;
                        case 2:	if(t === 0)	$(cels[1]).append(bf.toFixed(2));
                           else if(t == 1)	$(cels[1]).append('©'+num(cnf, true));
                        break;
                        case 3:	if(t === 0)	$(cels[1]).append('©'+num(cnf, true));
                        break;
                        default:$(cels[1]).append(num(cf, false));
                        break;
                    }
					n++;
				});
			}
		};
		createtable = function (ar, i, t){
			if(ar.length>0){
				var cf=0, kf=0, cnf=0, cnkf=0, bf=0;
				for(i=0; i<ar.length; i++){
					cf += parseInt(ar[i].col);
				}
				if(cf > 0){
					for(i=0; i<ar.length; i++){
						kf += parseFloat(ar[i].cach * ( ar[i].col / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].col / cf ));
						bf += parseFloat(ar[i].brend * ( ar[i].col / cf ));
					}
					if(kf!==0) cnkf = cnf / kf;
					if(isNaN(kf)){
						kf = 0;
						cnf = 0;
						bf = 0;
					    cnkf = 0;
					    }
				}else{
					kf = 0;
					cnf = 0;
					bf = 0;
					cnkf = 0;
					}
                //if((kf===0) || (isNaN(kf))) kf=1;
				if(t === 0){
					var table = $('<table width="100%" style="margin-top:-17px;margin-bottom:60px;" class="noborder"><tr><td class="zcol" align="right">'+num(cf, false)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К)">(©'+cnkf.toFixed(2)+')</span></td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+bf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr><td align="right">©'+num(cnf, true)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
				//	var table = $('<table width="100%" style="margin-top:-17px" class="noborder"><tr><td class="zcol" align="right">'+cf.toFixed(0)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'('+cnkf.toFixed(2)+')</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+bf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr><td align="right">$'+cnf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
                    }
				if(t == 1) table = $('<table cellpadding="0" cellspacing="0" width="100%" class="noborder"><tr><td align="right">'+num(cf, false)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К)">(©'+cnkf.toFixed(2)+')</span></td><td align="right" style="color:#f00;"></td></tr><td align="right">©'+num(cnf, true)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
                //if(t == 1) var table = $('<table cellpadding="0" cellspacing="0" width="100%" class="noborder"><tr><td align="right">'+cf.toFixed(0)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'('+cnkf.toFixed(2)+')</td><td align="right" style="color:#f00;"></td></tr><td align="right">$'+cnf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
                $(cel).html('').append(table).css('background-color','#efe');
				addtablemax(ar, table, t);
				return 0;
			}
			return i;
		};
		var newtype = function (id, title, subrow){
			this.id = id;
			this.title = title;
			this.subrow = subrow;
		};
		var addarr = function (item,n,id){
			var ar = [],c = 0,k = 0,cn = 0,br = 0,sv = 0,max = 0;
			$(item).each( function() {
				var cels = $('td', this);
					c = parseInt($('input', cels[20+n]).val().replace(/ /g, ''));
					k = parseFloat($(cels[30+n]).text().replace(/ /g, ''));
					cn = parseFloat($(cels[25+n]).text().replace('©', '').replace(/ /g, ''));
					br = 0;
					sv = parseInt($(cels[38+n]).text().replace(/ /g, ''));
					max = parseInt($('span', cels[20+n]).text().replace('Max: ', '').replace(/ /g, ''));
					k = nullpr(k);
                $(cels[38+n]).unbind('click').click(function(){
                    if(isNaN(max)) max = sv;
				    if(sv < max) max = sv;
                    $('input', cels[20+n]).val(max);
                    updatetablepr(7);
                    });
                $(cels[37+n]).unbind('click').click(function(){
                    if(isNaN(max)) max = sv;
				    if(sv < max) max = sv;
                    $('input', cels[20+n]).val(max);
                    updatetablepr(7);
                    });
                if(!isNaN(max)) {$('span', cels[20+n]).unbind('click').click(function(){
                    if(isNaN(max)) max = sv;
				    if(sv < max) max = sv;
                    $('input', cels[20+n]).val(max);
                    updatetablepr(7);
                    });}
			});
			if(isNaN(max)) max = sv;
			if(sv < max) max = sv;
            if(isNaN(c)) c = 0;
			ar = new addar(c, cn, k, br, max);
			return ar;
		};
		var type=[], k=0;
		i = 0;
		$('.list th:contains(Поставки)').before('<th rowspan="2">Заказ</th>');
		var updatetablepr = function (m){
		//console.log(a2);
		if (a2 == "pply") {
			//if (typeof gaMaterialProduct !== "undefined") {
			for(var item in gaMaterialProduct) {
				var t = $('#product_row_'+item+' th [rowspan=2] img').attr('alt'),
					subrow = gaMaterialProduct[item].subRowCount,
					ar = [],
					n = 0;
				type[i] = new newtype(item,t,subrow);
				i++;

				ar[n] = addarr('#product_row_'+item,m,k);
				n++;

				if(m === 0){
					var kk = 0,cn = 0,ck = 0;
					$('#product_row_'+item).each( function() {
				    var cels = $('td', this);
					kk = parseFloat($(cels[30+m]).text().replace(/ /g, ''));
					cn = parseFloat($(cels[25+m]).text().replace('©', '').replace(/ /g, ''));
					if(kk!==0) ck = cn /kk;
                    if(isNaN(kk)) ck = 0;
					$('#product_row_'+item+' #name_'+item+'_0').next().next().append('<span style="display:block;color:#f00;"><span title="Цена за единицу качества (Ц/К)">©'+ck.toFixed(2)+'</span></span>');
                    var but_1 = $('<input type="button" rel="'+k+'" value="+1п" />').unbind('click').click(function() { add($(this).attr('rel'),1,txt); });
					var but_2 = $('<input type="button" rel="'+k+'" value="+2п" />').unbind('click').click(function() { add($(this).attr('rel'),2,txt); });
					$('#product_row_'+item+' #name_'+item+'_0').prepend('<br />').prepend(but_2).prepend(but_1);
					$('#product_row_'+item+' #name_'+item+'_0').next().prepend('<div class="divtemp" id="divtemp'+k+'" style="color:green"></div>');
                    });}
				txt[k] = addarr('#product_row_'+item,m,k);
				k++;

                for(j=1; j<subrow; j++){
					ar[n] = addarr('#product_sub_row_'+item+'_'+j,-19,k);
					n++;
					if(m === 0){
						kk = 0;
						cn = 0;
						ck = 0;
						$('#product_sub_row_'+item+'_'+j).each( function() {
				    	var cels = $('td', this);
						kk = parseFloat($(cels[11+m]).text().replace(/ /g, ''));
                    	cn = parseFloat($(cels[6+m]).text().replace('©', '').replace(/ /g, ''));
						if(kk!==0) ck = cn /kk;
                        if(isNaN(kk)) ck = 0;
						$('#product_sub_row_'+item+'_'+j+' #name_'+item+'_'+j).next().next().append('<span style="display:block;color:#f00;"><span title="Цена за единицу качества (Ц/К)">©'+ck.toFixed(2)+'</span></span>');
                        var but_1 = $('<input type="button" rel="'+k+'" value="+1п" />').unbind('click').click(function() { add($(this).attr('rel'),1,txt); });
						var but_2 = $('<input type="button" rel="'+k+'" value="+2п" />').unbind('click').click(function() { add($(this).attr('rel'),2,txt); });
						$('#product_sub_row_'+item+'_'+j+' #name_'+item+'_'+j).prepend('<br />').prepend(but_2).prepend(but_1);
						$('#product_sub_row_'+item+'_'+j+' #name_'+item+'_'+j).next().prepend('<div class="divtemp" id="divtemp'+k+'" style="color:green"></div>');
                    });}
					txt[k] = addarr('#product_sub_row_'+item+'_'+j,-19,k);
					k++;
				}

				if( m>0 )
					$('#product_row_'+item+' #name_'+item+'_0').prev().remove();

				cel = $('<td width="100" class="temp'+item+'" rowspan="'+subrow+'"></td>');
				$('#product_row_'+item+' #name_'+item+'_0').before(cel);

				if(ar.length>0){
					var cf=0, kf=0, cnf=0, cnkf=0;
					for(j=0; j<ar.length; j++){
						cf += parseInt(ar[j].col);
					}
					if(cf > 0){
						for(j=0; j<ar.length; j++){
                            if((ar[j].cach===0) || (isNaN(ar[j].cach))) ar[j].cach = 1;
							kf += parseFloat(ar[j].cach * ( ar[j].col / cf ));
							cnf += parseFloat(ar[j].summ * ( ar[j].col / cf ));
						}
					    if(kf!==0) cnkf = cnf / kf;
						if(isNaN(kf)){
							kf = 1;
							cnf = 0;
					        cnkf = 0;
						}
					}else{
						kf = 1;
						cnf = 0;
					    cnkf = 0;
					    var b = true;
					}
                    if((kf===0) || (isNaN(kf))) kf=1;
					var table = $('<table cellpadding="0" cellspacing="0" width="100%" class="noborder"><tr><td style="word-wrap:normal" align="right">'+num(cf, false)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К)">(©'+cnkf.toFixed(2)+')</span></td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">©'+num(cnf, true)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
					$(cel).html('').append(table).css('background-color','#efe');
					addtablemax(ar, table, 1);
				}
				$('temp'+item).remove();
				$('#product_row_'+item+' #name_'+item+'_0').before(cel);
			}
		};
		};
		updatetablepr(0);
		//};
		$('input[name*=supplyContractData]').unbind('keyup').keyup(function(e){
			if (timeout) clearTimeout(timeout);
			timeout = setTimeout(function() {
			updatetablepr(7);
			if (e.keyCode == 13) return;
			}, delay);});
		but_ras = $('<input type="button" value="Расчет" />').unbind('click').click(function() { Calculate1(1); });
	}

	if (title.search('animalfarm')!=-1 || title.search('power')!=-1 || title.search('mill')!=-1 || title.search('workshop')!=-1 || title.search('apiary')!=-1) {
		form = true;
		//console.log (title);
		//console.log ($('#mDestroy > input[type="hidden"]').length);
		var supinterface = $('#mDestroy > input[type="hidden"]').length;
		switch (supinterface){
		case 1:
		//break;
		addtablemax = function (ar, table, t){
			var cf=0, kf=0, cnf=0, cnkf=0, bf=0, b=false;
			for(i=0; i<ar.length; i++){
                if(ar[i].col > ar[i].max){
					cf += parseInt(ar[i].max);
                    if(ar[i].col>0) b = true;}
                else
					cf += parseInt(ar[i].col);
			}
			if(cf !== 0){
				for(i=0; i<ar.length; i++){
					if(ar[i].col > ar[i].max){
						kf += parseFloat(ar[i].cach * ( ar[i].max / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].max / cf ));
						bf += parseFloat(ar[i].brend * ( ar[i].max / cf ));
						b = true;
					}else{
						kf += parseFloat(ar[i].cach * ( ar[i].col / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].col / cf ));
						bf += parseFloat(ar[i].brend * ( ar[i].col / cf ));
					}
				}
                cnkf = cnf / kf;
				if(isNaN(kf)){
					kf = 0;
					cnf = 0;
					bf = 0;
					cnkf = 0;
					}
			}
            //if((kf === 0) || (isNaN(kf))) kf = 1;
            if(b){
				table.closest('td').css('background-color','#fee');
				var n = 0;
				$('tr', table).each( function() {
					var cels = $('td', this);
					//if(n == 0)	$(cels[1]).append(num(cf, false));
					//if(n == 1)	$(cels[1]).append(kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К) с учетом запасов">($'+cnkf.toFixed(2)+')</span>');
					//if(n == 2 && t == 0)	$(cels[1]).append(bf.toFixed(2));
					//if(n == 3 && t == 0)	$(cels[1]).append('$'+num(cnf, true));
					//if(n == 2 && t == 1)	$(cels[1]).append('$'+num(cnf, true));
                    switch (n) {
                        case 1:	$(cels[1]).append(kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К) с учетом запасов">(©'+cnkf.toFixed(2)+')</span>');
                        break;
                        case 2:	if(t === 0)	$(cels[1]).append(bf.toFixed(2));
                           else if(t == 1)	$(cels[1]).append('©'+num(cnf, true));
                        break;
                        case 3:	if(t === 0)	$(cels[1]).append('©'+num(cnf, true));
                        break;
                        default:$(cels[1]).append(num(cf, false));
                        break;
                    }
					n++;
				});
			}
		};
		createtable = function (ar, i, t){
			if(ar.length>0){
				var cf=0, kf=0, cnf=0, cnkf=0, bf=0;
				for(i=0; i<ar.length; i++){
					cf += parseInt(ar[i].col);
				}
				if(cf > 0){
					for(i=0; i<ar.length; i++){
						kf += parseFloat(ar[i].cach * ( ar[i].col / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].col / cf ));
						bf += parseFloat(ar[i].brend * ( ar[i].col / cf ));
					}
					if(kf!==0) cnkf = cnf / kf;
					if(isNaN(kf)){
						kf = 0;
						cnf = 0;
						bf = 0;
					    cnkf = 0;
					    }
				}else{
					kf = 0;
					cnf = 0;
					bf = 0;
					cnkf = 0;
					}
                //if((kf===0) || (isNaN(kf))) kf=1;
                if(t === 0){
					var table = $('<table width="100%" style="margin-top:-17px;margin-bottom:60px;" class="noborder"><tr><td class="zcol" align="right">'+num(cf, false)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К)">(©'+cnkf.toFixed(2)+')</span></td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+bf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr><td align="right">©'+num(cnf, true)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
				//	var table = $('<table width="100%" style="margin-top:-17px" class="noborder"><tr><td class="zcol" align="right">'+cf.toFixed(0)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'('+cnkf.toFixed(2)+')</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+bf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr><td align="right">$'+cnf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
                    }
				if(t == 1) table = $('<table cellpadding="0" cellspacing="0" width="100%" class="noborder"><tr><td align="right">'+num(cf, false)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К)">(©'+cnkf.toFixed(2)+')</span></td><td align="right" style="color:#f00;"></td></tr><td align="right">©'+num(cnf, true)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
                //if(t == 1) var table = $('<table cellpadding="0" cellspacing="0" width="100%" class="noborder"><tr><td align="right">'+cf.toFixed(0)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'('+cnkf.toFixed(2)+')</td><td align="right" style="color:#f00;"></td></tr><td align="right">$'+cnf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
                $(cel).html('').append(table).css('background-color','#efe');
				addtablemax(ar, table, t);
				return 0;
			}
			return i;
		};
		newtype = function (id, title, subrow){
			this.id = id;
			this.title = title;
			this.subrow = subrow;
		};
		addarr = function (item, n, id){
			var ar = [],c = 0,k = 0,cn = 0,br = 0,sv = 0,max = 0;
			//item = $(item).parent();
			//console.log(item, n);
			$(item).each( function() {
				var cels = $('td', this);
				//console.log($('input',cels[30+n]));
					c = parseInt($('input', cels[30+n]).val().replace(/ /g, ''));
					k = parseFloat($(cels[27+n]).text().replace(/ /g, ''));
					cn = parseFloat($(cels[24+n]).text().replace('©', '').replace(/ /g, ''));
					br = 0;
					sv = parseInt($(cels[29+n]).text().replace(/ /g, ''));
					max = parseInt($('span', cels[30+n]).text().replace('макс: ', '').replace(/ /g, ''));
					k = nullpr(k);
                $(cels[29+n]).unbind('click').click(function(){
                    if(isNaN(max)) max = sv;
				    if(sv < max) max = sv;
                    $('input', cels[30+n]).val(max);
                    updatetablepr(7);
                    });
                $(cels[29+n]).unbind('click').click(function(){
                    if(isNaN(max)) max = sv;
				    if(sv < max) max = sv;
                    $('input', cels[30+n]).val(max);
                    updatetablepr(7);
                    });
                if(!isNaN(max)) {$('span', cels[30+n]).unbind('click').click(function(){
                    if(isNaN(max)) max = sv;
				    if(sv < max) max = sv;
                    $('input', cels[30+n]).val(max);
                    updatetablepr(7);
                    });}
			});
			if(isNaN(max)) max = sv;
			if(sv < max) max = sv;
            if(isNaN(c)) c = 0;
			ar = new addar(c, cn, k, br, max);
			return ar;
		};
		type=[];
		i=0;
		k=0;
		var subrow = 0;
		document.querySelector('#mDestroy > table > thead > tr:nth-child(1) > th:nth-child(1)').setAttribute('colspan','5');
		$('.list th:contains(На складе)').after('<th>Заказ</th>');
		//console.log($('tr[id] td[valign=middle][title]').length);
				//var sel = $('tr[id] td[valign=middle][title="Медный колчедан"]').next();
				//console.log(sel.length);
				//for (var ii=0; ii<sel.length; ii++) {
						//console.log(sel[ii].textContent.length);
						//var sel2 = sel[ii].textContent.length;
						//if (sel2 == 0) {
						//console.log(sel[ii]);
						//var cels2 = $(sel[ii]).parent();
				    //var cels = $('td', cels2);
					//console.log(cels.length);
					//kk = parseFloat($(cels[10]).text().replace(/ /g, ''));
					//console.log(kk);
					//cn = parseFloat($(cels[7]).text().replace('$', '').replace(/ /g, ''));
					//console.log(cn);}}
					//console.log(cels2);}}
		for (var c_i in contracts) {
			if (contracts[c_i].length != -1) subrow = subrow + 1};

		updatetablepr = function (m){
					var ar = [],
					n = 0;
			for (var c_i in contracts) {
				var t = $('tr[id=r'+c_i+'] td[valign=middle][title]').attr('title');
					//subrow = gaMaterialProduct[item].subRowCount,
					//ar = [],
					//n = 0;
				var item = contracts[c_i].product_id;
				//console.log(t, item);
				type[i] = new newtype(item,t,subrow);
				i++;

				var sel = $('tr[id=r'+c_i+'] td[valign=middle][title="'+t+'"]').next();
				var cels2 = $(sel).parent();

				//if(m === 0){
					//var kk = 0,cn = 0,ck = 0;
					//console.log($('tr[id=r'+c_i+'] td[valign=middle][title="'+t+'"]').length);
					//console.log(sel.text())
					//for (var ii=0; ii<sel.length; ii++) {
				if (sel.text().length != 0) {
					$('tr[id=r'+c_i+'] td[valign=middle][title="'+t+'"]').attr('title',''+t+'_0');
					ar[n] = addarr(cels2,m,k);
					n++;
				if(m === 0){
					var kk = 0,cn = 0,ck = 0;
					var cels = $('td', cels2);
					kk = parseFloat($(cels[27+m]).text().replace(/ /g, ''));
					//console.log(kk);
					cn = parseFloat($(cels[24+m]).text().replace('©', '').replace(/ /g, ''));
					//console.log(cn);
					if(kk!==0) ck = cn /kk;
                    if(isNaN(kk)) ck = 0;
					$('tr[id=r'+c_i+'] > td:nth-child(6) > div:nth-child(4)').append('<span style="display:block;color:#f00;"><span title="Цена за единицу качества (Ц/К)">©'+ck.toFixed(2)+'</span></span>');
                    var but_1 = $('<input type="button" rel="'+k+'" value="+1п" />').unbind('click').click(function() { add($(this).attr('rel'),1,txt); });
					var but_2 = $('<input type="button" rel="'+k+'" value="+2п" />').unbind('click').click(function() { add($(this).attr('rel'),2,txt); });
					$('tr[id=r'+c_i+'] > td:nth-child(7)').append(but_1).append(but_2);
					$('tr[id=r'+c_i+'] > td:nth-child(6)').prepend('<div class="divtemp" id="divtemp'+k+'" style="color:green"></div>');
				}
				txt[k] = addarr(cels2,m,k);
				k++;
				}
				//var sel = $('tr[id] td[valign=middle][title="'+t+'"]').next();
				//console.log($(sel[1]).parent());
				//for(j=1; j<subrow; j++) {
				//var sel = $('tr[id=r'+c_i+'] td[valign=middle][title="'+t+'"]').next();
				//for (ii=0; ii<sel.length; ii++) {
				if (sel.text().length == 0) {
					ar[n] = addarr(cels2,-17,k);
					n++;
					if(m === 0){
						kk = 0;
						cn = 0;
						ck = 0;
						//$('tr[id='+c_i+'] td[valign=middle][title="'+item+'"]_'+j).each( function() {
					//console.log($('tr[id] td[valign=middle][title]').length);
						//for (var ii=0; ii<sel.length; ii++) {
						//$('tr[id=r'+c_i+'] td[valign=middle][title="'+t+'"]').attr('title',''+t+'_'+ii);
						//$(sel).prev().attr('title',''+t+'_'+j);
						var cels2 = $(sel).parent();
				    	var cels = $('td', cels2);
						kk = parseFloat($(cels[10+m]).text().replace(/ /g, ''));
						//console.log(kk);
                    	cn = parseFloat($(cels[7+m]).text().replace('©', '').replace(/ /g, ''));
						if(kk!==0) ck = cn /kk;
                        if(isNaN(kk)) ck = 0;
						$('tr[id=r'+c_i+'] > td:nth-child(5) > div:nth-child(4)').append('<span style="display:block;color:#f00;"><span title="Цена за единицу качества (Ц/К)">©'+ck.toFixed(2)+'</span></span>');
                        var but_1 = $('<input type="button" rel="'+k+'" value="+1п" />').unbind('click').click(function() { add($(this).attr('rel'),1,txt); });
						var but_2 = $('<input type="button" rel="'+k+'" value="+2п" />').unbind('click').click(function() { add($(this).attr('rel'),2,txt); });
						$('tr[id=r'+c_i+'] > td:nth-child(6)').append(but_1).append(but_2);
						$('tr[id=r'+c_i+'] > td:nth-child(5)').prepend('<div class="divtemp" id="divtemp'+k+'" style="color:green"></div>');
					}
					txt[k] = addarr(cels2,-17,k);
					k++;
				}

				if( m>0 )
					$('tr[id=r'+c_i+'] td[valign=middle][title="'+t+'_0"]').next().next().next().next().remove();
				//cel = $('<td width="100" class="temp'+t+'" rowspan="'+subrow+'"></td>');
				cel = $('<td width="100" class="temp'+t+'" rowspan="'+subrow+'"></td>');
				$('tr[id=r'+c_i+'] td[valign=middle][title="'+t+'_0"]').next().next().next().after(cel);

				if(ar.length>0){
					var cf=0, kf=0, cnf=0, cnkf=0;
					for(j=0; j<ar.length; j++){
						cf += parseInt(ar[j].col);
					}
					if(cf > 0){
						for(j=0; j<ar.length; j++){
							kf += parseFloat(ar[j].cach * ( ar[j].col / cf ));
							cnf += parseFloat(ar[j].summ * ( ar[j].col / cf ));
						}
					    if(kf!==0) cnkf = cnf / kf;
						if(isNaN(kf)){
							kf = 0;
							cnf = 0;
					        cnkf = 0;
						}
					}else{
						kf = 0;
						cnf = 0;
					    cnkf = 0;
					    var b = true;
					}
					var table = $('<table cellpadding="0" cellspacing="0" width="100%" class="noborder"><tr><td style="word-wrap:normal" align="right">'+num(cf, false)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К)">(©'+cnkf.toFixed(2)+')</span></td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">©'+num(cnf, true)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
					$(cel).html('').append(table).css('background-color','#efe');
					addtablemax(ar, table, 1);
				}
				$('temp'+t).remove();
				$('tr[id=r'+c_i+'] td[valign=middle][title="'+t+'_0"]').next().next().next().after(cel);
			}
		};
		updatetablepr(0);
		$('input[class*="quickchange"]').unbind('keyup').keyup(function(e){
			if (timeout) clearTimeout(timeout);
			timeout = setTimeout(function() {
			updatetablepr(7);
			if (e.keyCode == 13) return;
			}, delay);});
		but_ras = $('<input type="button" value="Расчет" />').unbind('click').click(function() { Calculate1(1); });

		break;

		case 0:
		addtablemax = function (ar, table, t){
			var cf=0, kf=0, cnf=0, cnkf=0, bf=0, b=false;
			for(i=0; i<ar.length; i++){
                if(ar[i].col > ar[i].max){
					cf += parseInt(ar[i].max);
                    if(ar[i].col>0) b = true;}
                else
					cf += parseInt(ar[i].col);
			}
			if(cf !== 0){
				for(i=0; i<ar.length; i++){
					if(ar[i].col > ar[i].max){
						kf += parseFloat(ar[i].cach * ( ar[i].max / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].max / cf ));
                        //if((kf===0) || (isNaN(kf))) kf = 1;
						bf += parseFloat(ar[i].brend * ( ar[i].max / cf ));
						b = true;
					}else{
						kf += parseFloat(ar[i].cach * ( ar[i].col / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].col / cf ));
                        //if((kf===0) || (isNaN(kf))) kf = 1;
						bf += parseFloat(ar[i].brend * ( ar[i].col / cf ));
					}
				}
                cnkf = cnf / kf;
				if(isNaN(kf)){
					kf = 0;
					cnf = 0;
					bf = 0;
					cnkf = 0;
					}
			}
            //if((kf===0) || (isNaN(kf))) kf = 1;
            if(b){
				table.closest('td').css('background-color','#fee');
				var n = 0;
				$('tr', table).each( function() {
					var cels = $('td', this);
					//if(n == 0)	$(cels[1]).append(num(cf, false));
					//if(n == 1)	$(cels[1]).append(kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К) с учетом запасов">($'+cnkf.toFixed(2)+')</span>');
					//if(n == 2 && t == 0)	$(cels[1]).append(bf.toFixed(2));
					//if(n == 3 && t == 0)	$(cels[1]).append('$'+num(cnf, true));
					//if(n == 2 && t == 1)	$(cels[1]).append('$'+num(cnf, true));
                    switch (n) {
                        case 1:	$(cels[1]).append(kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К) с учетом запасов">(©'+cnkf.toFixed(2)+')</span>');
                        break;
                        case 2:	if(t === 0)	$(cels[1]).append(bf.toFixed(2));
                           else if(t == 1)	$(cels[1]).append('©'+num(cnf, true));
                        break;
                        case 3:	if(t === 0)	$(cels[1]).append('©'+num(cnf, true));
                        break;
                        default:$(cels[1]).append(num(cf, false));
                        break;
                    }
					n++;
				});
			}
		};
		createtable = function (ar, i, t){
			if(ar.length>0){
				var cf=0, kf=0, cnf=0, cnkf=0, bf=0;
				for(i=0; i<ar.length; i++){
					cf += parseInt(ar[i].col);
				}
				if(cf > 0){
					for(i=0; i<ar.length; i++){
                        //if((kf===0) || (isNaN(kf))) kf = 1;
						kf += parseFloat(ar[i].cach * ( ar[i].col / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].col / cf ));
						bf += parseFloat(ar[i].brend * ( ar[i].col / cf ));
					}
					if(kf!==0) cnkf = cnf / kf;
					if(isNaN(kf)){
						kf = 0;
						cnf = 0;
						bf = 0;
					    cnkf = 0;
					    }
				}else{
					kf = 0;
					cnf = 0;
					bf = 0;
					cnkf = 0;
					}
                if(t === 0){
					var table = $('<table width="100%" style="margin-top:-17px;margin-bottom:60px;" class="noborder"><tr><td class="zcol" align="right">'+num(cf, false)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К)">(©'+cnkf.toFixed(2)+')</span></td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+bf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr><td align="right">©'+num(cnf, true)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
				//	var table = $('<table width="100%" style="margin-top:-17px" class="noborder"><tr><td class="zcol" align="right">'+cf.toFixed(0)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'('+cnkf.toFixed(2)+')</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+bf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr><td align="right">$'+cnf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
                    }
				if(t == 1) table = $('<table cellpadding="0" cellspacing="0" width="100%" class="noborder"><tr><td align="right">'+num(cf, false)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К)">(©'+cnkf.toFixed(2)+')</span></td><td align="right" style="color:#f00;"></td></tr><td align="right">©'+num(cnf, true)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
                //if(t == 1) var table = $('<table cellpadding="0" cellspacing="0" width="100%" class="noborder"><tr><td align="right">'+cf.toFixed(0)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'('+cnkf.toFixed(2)+')</td><td align="right" style="color:#f00;"></td></tr><td align="right">$'+cnf.toFixed(2)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
                $(cel).html('').append(table).css('background-color','#efe');
				addtablemax(ar, table, t);
				return 0;
			}
			return i;
		};
		newtype = function (id, title, subrow){
			this.id = id;
			this.title = title;
			this.subrow = subrow;
		};
		addarr = function (item, n, id){
			var ar = [],c = 0,k = 0,cn = 0,br = 0,sv = 0,max = 0;
			$(item).each( function() {
				var cels = $('td', this);
					c = parseInt($('input', cels[18+n]).val().replace(/ /g, ''));
					k = parseFloat($(cels[28+n]).text().replace(/ /g, ''));
					cn = parseFloat($(cels[23+n]).text().replace('©', '').replace(/ /g, ''));
					br = 0;
					sv = parseInt($(cels[36+n]).text().replace(/ /g, ''));
					max = parseInt($('span', cels[18+n]).text().replace('Max: ', '').replace(/ /g, ''));
					k = nullpr(k);
                $(cels[36+n]).unbind('click').click(function(){
                    if(isNaN(max)) max = sv;
				    if(sv < max) max = sv;
                    $('input', cels[18+n]).val(max);
                    updatetablepr(7);
                    });
                $(cels[35+n]).unbind('click').click(function(){
                    if(isNaN(max)) max = sv;
				    if(sv < max) max = sv;
                    $('input', cels[18+n]).val(max);
                    updatetablepr(7);
                    });
                if(!isNaN(max)) {$('span', cels[18+n]).unbind('click').click(function(){
                    if(isNaN(max)) max = sv;
				    if(sv < max) max = sv;
                    $('input', cels[18+n]).val(max);
                    updatetablepr(7);
                    });}
			});
			if(isNaN(max)) max = sv;
			if(sv < max) max = sv;
            if(isNaN(c)) c = 0;
			ar = new addar(c, cn, k, br, max);
			return ar;
		};
		type=[];
		i=0;
		k=0;
		$('.list th:contains(Поставки)').before('<th rowspan="2">Заказ</th>');
		//console.log (a2);
		//if (a2 == "pply") {
		//if (typeof gaMaterialProduct !== "undefined") {
		updatetablepr = function (m){
		if (a2 == "pply") {
		//if (typeof gaMaterialProduct !== "undefined") {
			for (var item in gaMaterialProduct) {
				var t = $('#product_row_'+item+' th [rowspan=2] img').attr('alt'),
					subrow = gaMaterialProduct[item].subRowCount,
					ar = [],
					n = 0;
				type[i] = new newtype(item,t,subrow);
				i++;

				ar[n] = addarr('#product_row_'+item,m,k);
				n++;

				if(m === 0){
					var kk = 0,cn = 0,ck = 0;
					$('#product_row_'+item).each( function() {
				    var cels = $('td', this);
					kk = parseFloat($(cels[28+m]).text().replace(/ /g, ''));
					cn = parseFloat($(cels[23+m]).text().replace('©', '').replace(/ /g, ''));
					if(kk!==0) ck = cn /kk;
                    if(isNaN(kk)) ck = 0;
					$('#product_row_'+item+' #name_'+item+'_0').next().next().append('<span style="display:block;color:#f00;"><span title="Цена за единицу качества (Ц/К)">©'+ck.toFixed(2)+'</span></span>');
                    var but_1 = $('<input type="button" rel="'+k+'" value="+1п" />').unbind('click').click(function() { add($(this).attr('rel'),1,txt); });
					var but_2 = $('<input type="button" rel="'+k+'" value="+2п" />').unbind('click').click(function() { add($(this).attr('rel'),2,txt); });
					$('#product_row_'+item+' #name_'+item+'_0').prepend('<br />').prepend(but_2).prepend(but_1);
					$('#product_row_'+item+' #name_'+item+'_0').next().prepend('<div class="divtemp" id="divtemp'+k+'" style="color:green"></div>');
                    });}
				txt[k] = addarr('#product_row_'+item,m,k);
				k++;

                for(j=1; j<subrow; j++){
					ar[n] = addarr('#product_sub_row_'+item+'_'+j,-17,k);
					n++;
					if(m === 0){
						kk = 0;
						cn = 0;
						ck = 0;
						$('#product_sub_row_'+item+'_'+j).each( function() {
				    	var cels = $('td', this);
						kk = parseFloat($(cels[11+m]).text().replace(/ /g, ''));
                    	cn = parseFloat($(cels[6+m]).text().replace('©', '').replace(/ /g, ''));
						if(kk!==0) ck = cn /kk;
                        if(isNaN(kk)) ck = 0;
						$('#product_sub_row_'+item+'_'+j+' #name_'+item+'_'+j).next().next().append('<span style="display:block;color:#f00;"><span title="Цена за единицу качества (Ц/К)">©'+ck.toFixed(2)+'</span></span>');
                        var but_1 = $('<input type="button" rel="'+k+'" value="+1п" />').unbind('click').click(function() { add($(this).attr('rel'),1,txt); });
						var but_2 = $('<input type="button" rel="'+k+'" value="+2п" />').unbind('click').click(function() { add($(this).attr('rel'),2,txt); });
						$('#product_sub_row_'+item+'_'+j+' #name_'+item+'_'+j).prepend('<br />').prepend(but_2).prepend(but_1);
						$('#product_sub_row_'+item+'_'+j+' #name_'+item+'_'+j).next().prepend('<div class="divtemp" id="divtemp'+k+'" style="color:green"></div>');
                    });}
					txt[k] = addarr('#product_sub_row_'+item+'_'+j,-17,k);
					k++;
				}

				if( m>0 )
					$('#product_row_'+item+' #name_'+item+'_0').prev().remove();

				cel = $('<td width="100" class="temp'+item+'" rowspan="'+subrow+'"></td>');
				$('#product_row_'+item+' #name_'+item+'_0').before(cel);

				if(ar.length>0){
					var cf=0, kf=0, cnf=0, cnkf=0;
					for(j=0; j<ar.length; j++){
						cf += parseInt(ar[j].col);
					}
					if(cf > 0){
						for(j=0; j<ar.length; j++){
                            if((ar[j].cach===0) || (isNaN(ar[j].cach))) ar[j].cach = 1;
							kf += parseFloat(ar[j].cach * ( ar[j].col / cf ));
                            //if((kf===0) || (isNaN(kf))) kf += 1;
                            //console.log(kf);
							cnf += parseFloat(ar[j].summ * ( ar[j].col / cf ));
						}
					    if(kf!==0) cnkf = cnf / kf;
						if(isNaN(kf)){
							kf = 0;
							cnf = 0;
					        cnkf = 0;
						}
					}else{
						kf = 0;
						cnf = 0;
					    cnkf = 0;
					    var b = true;
					}
                    //if((kf===0) || (isNaN(kf))) kf = 1;
                    var table = $('<table cellpadding="0" cellspacing="0" width="100%" class="noborder"><tr><td style="word-wrap:normal" align="right">'+num(cf, false)+'</td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">'+kf.toFixed(2)+'<span title="Цена за единицу качества (Ц/К)">(©'+cnkf.toFixed(2)+')</span></td><td align="right" style="color:#f00;"></td></tr><tr><td align="right">©'+num(cnf, true)+'</td><td align="right" style="color:#f00;"></td></tr></table>');
					$(cel).html('').append(table).css('background-color','#efe');
					addtablemax(ar, table, 1);
				}
				$('temp'+item).remove();
				$('#product_row_'+item+' #name_'+item+'_0').before(cel);
			}
		};
		};
		updatetablepr(0);
		//};
		$('input[name*=supplyContractData]').unbind('keyup').keyup(function(e){
			if (timeout) clearTimeout(timeout);
			timeout = setTimeout(function() {
			updatetablepr(7);
			if (e.keyCode == 13) return;
			}, delay);});
		but_ras = $('<input type="button" value="Расчет" />').unbind('click').click(function() { Calculate1(1); });
	}
	}

	if(title.search('warehouse')!=-1){
		//var nasklade = [];
		//console.log(title);

		var sortzak = function (){
			var i = 0, j = 0, n = 0;
			for(n = 0; n < txt1.length; n++){
				var ar1 = [], ar2 = [];
				for(i = 0; i < txt1[n].length; i++){
					if(txt1[n][i].sc > txt1[n][i].cach){
						ar1.push(txt1[n][i]);
					}else{
						ar2.push(txt1[n][i]);
					}
				}
				ar1.sort(function(obj1, obj2) {
					return obj2.ck - obj1.ck;
				});
				ar2.sort(function(obj1, obj2) {
					return obj1.ck - obj2.ck;
				});
				txt1[n] = [];
				txt1[n] = txt1[n].concat(ar1,ar2);
				var div = $('<div>');
				for(i = txt1[n].length-1; i >= 0; i--){
					//console.log(i);
					$('.'+txt1[n][i].name).after($('.'+txt1[n][i].name+txt1[n][i].id));
					//$('.'+txt1[n][i].name+txt1[n][i].id).hide()
				}
			}
		};
		var randWD = function (n){  // [ 2 ] random words and digits
			return Math.random().toString(36).slice(2, 2 + Math.max(1, Math.min(n, 10)) );
		};
		var ssred = function (cel,ar,t) {
			var cf=0, kf=0, cnf=0, cnkf=0, b = false;
			for(i=0; i<ar.length; i++){
				if(ar[i].col <= ar[i].max || t)
                    cf += parseInt(ar[i].col);
                else {
                    cf += parseInt(ar[i].max);
                    if(ar[i].col>0) b = true;}
			}
			if(cf > 0){
				for(i=0; i<ar.length; i++){
					if(ar[i].col <= ar[i].max || t){
						kf += parseFloat(ar[i].cach * ( ar[i].col / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].col / cf ));
					}else{
						kf += parseFloat(ar[i].cach * ( ar[i].max / cf ));
						cnf += parseFloat(ar[i].summ * ( ar[i].max / cf ));
						b = true;
					}
				}
				if(kf !== 0) cnkf = cnf / kf;
				if(isNaN(kf)){
					kf = 0;
					cnf = 0;
					cnkf = 0;
				}
			} else {
				kf = 0;
				cnf = 0;
				cnkf = 0;
				}
            //if((kf===0) || (isNaN(kf))) kf = 1;
			if(t) {
				$('.cf',cel).text(num(cf, false)).unbind('click').click(function(){$('#sc').val(cf); $('#sk').val(kf.toFixed(2));});//updatetablesk(false,falsee);});
				$('.cnf',cel).text('©'+num(cnf, true));
				$('.kf',cel).text(kf.toFixed(2)+'(©'+cnkf.toFixed(2)+')');
				$(cel).css({'background-color':'#efe'});
				if(cf!==0) ssred(cel,ar,false);
			}
			if(b) {
				$(cel).css({'background-color':'#fee'});
				$('.cf',cel).append('<div style="color:#f00;">'+num(cf, false)+'</div>').unbind('click').click(function(){$('#sc').val(cf); $('#sk').val(kf.toFixed(2));});//updatetablesk(false,true);});
				$('.cnf',cel).append('<div style="color:#f00">©'+num(cnf, true)+'</div>');
				$('.kf',cel).append('<div style="color:#f00">'+kf.toFixed(2)+'(©'+cnkf.toFixed(2)+')</div>');
			}
		};

   var createtablesk = function (t, sort) {
			sort = sort || false;
			var ar = [], cel, n=0;
			var txt2 = [];
			var name = '';
			j = 0;
			form = true;
			$('table.list tr').each( function() {
				var cels = $('td',this);
                if($(this).hasClass('p_title')) {
   					name = 'q'+randWD(3);
					$(this).addClass(name);
					if(t) {
						ko[j] = parseFloat($(cels[4]).text());
						var skach = $('<input>', {'type':'text', 'class':'skach','style':'display:block;','ids':j}).val(ko[j]).unbind('keyup').keyup(function(e){
							if (timeout) clearTimeout(timeout);
							timeout = setTimeout(function() {
							createtablesk(false, true);
							if (e.keyCode == 13) return;
							}, delay);});
						$('.p_title_l', this).prepend(skach);

						if($('.p_title_l div table',$(this)).html().length < 25){
                            var cn = parseFloat($(cels[3]).text().replace(/\s+/g, '').replace(/\$/g, '')),
                                k = parseFloat($(cels[5]).text().replace(/ /g, '')),
                                cf = parseInt($(cels[1]).text().replace(/ /g, '')),
                                naskl = parseInt($('.'+name+' div table tr td:contains("На складе:")').next().text().replace(/ /g, '')),
                                nasklpp = parseInt($('.'+name+' div table tr td:contains("Отгрузки")').next().text().replace(/ /g, '')),
                                cnk = 0;
                            cnk = cn / k;
							if(isNaN(cnk)) cnk=0;
                            if((k===0) || (isNaN(k))) k=1;
							if (cf>0 || (!isNaN(naskl) && !isNaN(nasklpp) && (naskl > nasklpp)))
                            $('.p_title_l div table',$(this))
        							.after('<tr><td>Качество/Себестоимость:</td><td><strong style="display:block;" class="ccf1"></strong></td></tr>')
        							.after('<tr><td>На складе:</td><td><strong style="display:block;" class="ccf"></strong></td></tr>')
        							.after('<tr><td colspan="2"><strong>После пересчета</strong></td></tr>');
                            if(cf>0&&k>0) $(cels[1]).append('<strong style="display:block" class="cf"></strong>');
                            else $(cels[1]).html('').append('<strong style="display:block" class="cf"></strong>');
							$(cels[3]).append('<strong style="display:block" class="cnf"></strong>');
                            if(cnk!==0) $(cels[5]).html('<b>'+parseFloat($(cels[5]).text()).toFixed(2)+'</b>').append('<b>(©'+cnk.toFixed(2)+')</b><strong style="display:block" class="kf"></strong>');
                            else $(cels[5]).append('<strong style="display:block" class="kf"></strong>');
						}else{
						    if($('.p_title_l div table',$(this)).html().length < 128){
                                cn = parseFloat($(cels[5]).text().replace(/\s+/g, '').replace(/\$/g, ''));
                                k = parseFloat($(cels[7]).text().replace(/ /g, ''));
								cf = parseInt($(cels[3]).text().replace(/ /g, ''));
                                naskl = parseInt($('.'+name+' div table tr td:contains("На складе:")').next().text().replace(/ /g, ''));
                                nasklpp = parseInt($('.'+name+' div table tr td:contains("Отгрузки")').next().text().replace(/ /g, ''));
                                cnk = 0;
                            cnk = cn / k;
					        if(isNaN(cnk)) cnk=0;
                            if((k===0) || (isNaN(k))) k=1;
                            if (cf>0 || (!isNaN(naskl) && !isNaN(nasklpp) && (naskl > nasklpp)))
                            $('.p_title_l div table',$(this))
        						    .append('<tr><td colspan="2"><strong>После пересчета</strong></td></tr>')
                                    .append('<tr><td>На складе:</td><td><strong style="display:block;" class="ccf"></strong></td></tr>')
                                    .append('<tr><td>Качество/Себестоимость:</td><td><strong style="display:block;" class="ccf1"></strong></td></tr>');
                            if(cf>0&&k>0) $(cels[3]).append('<strong style="display:block" class="cf"></strong>');
                            else $(cels[3]).html('').append('<strong style="display:block" class="cf"></strong>');
							$(cels[5]).append('<strong style="display:block" class="cnf"></strong>');
                            if(cnk!==0) $(cels[7]).html('<b>'+parseFloat($(cels[7]).text()).toFixed(2)+'</b>').append('<b>(©'+cnk.toFixed(2)+')</b><strong style="display:block" class="kf"></strong>');
                            else $(cels[7]).append('<strong style="display:block" class="kf"></strong>');
                            }else{
       						    if($('.p_title_l div table',$(this)).html().length < 250){
					            cn = parseFloat($(cels[7]).text().replace(/\s+/g, '').replace(/\$/g, ''));
                                k = parseFloat($(cels[9]).text().replace(/ /g, ''));
								cf = parseInt($(cels[5]).text().replace(/ /g, ''));
                                naskl = parseInt($('.'+name+' div table tr td:contains("На складе:")').next().text().replace(/ /g, ''));
                                nasklpp = parseInt($('.'+name+' div table tr td:contains("Отгрузки")').next().text().replace(/ /g, ''));
                                cnk = 0;
                                cnk = cn / k;
					 			if(isNaN(cnk)) cnk=0;
                                if((k===0) || (isNaN(k))) k=1;
                                if (cf>0 || (!isNaN(naskl) && !isNaN(nasklpp) && (naskl > nasklpp)))
                                $('.p_title_l div table',$(this))
        							.after('<tr><td>Качество/Себестоимость:</td><td><strong style="display:block;" class="ccf1"></strong></td></tr>')
        							.after('<tr><td>На складе:</td><td><strong style="display:block;" class="ccf"></strong></td></tr>')
        							.after('<tr><td colspan="2"><strong>После пересчета</strong></td></tr>');
                                if(cf>0&&k>0) $(cels[5]).append('<strong style="display:block" class="cf"></strong>');
                                else $(cels[5]).html('').append('<strong style="display:block" class="cf"></strong>');
							    $(cels[7]).append('<strong style="display:block" class="cnf"></strong>');
                                if(cnk!==0) $(cels[9]).html('<b>'+parseFloat($(cels[9]).text()).toFixed(2)+'</b>').append('<b>(©'+cnk.toFixed(2)+')</b><strong style="display:block" class="kf"></strong>');
                                else $(cels[9]).append('<strong style="display:block" class="kf"></strong>');
                                }else{
                                    cn = parseFloat($(cels[9]).text().replace(/\s+/g, '').replace(/\$/g, ''));
                                    k = parseFloat($(cels[11]).text().replace(/ /g, ''));
									cf = parseInt($(cels[7]).text().replace(/ /g, ''));
                                    naskl = parseInt($('.'+name+' div table tr td:contains("На складе:")').next().text().replace(/ /g, ''));
                                    nasklpp = parseInt($('.'+name+' div table tr td:contains("Отгрузки")').next().text().replace(/ /g, ''));
                                    cnk = 0;
                                    cnk = cn / k;
									if(isNaN(cnk)) cnk=0;
                                    if((k===0) || (isNaN(k))) k=1;
                                    if (cf>0 || (!isNaN(naskl) && !isNaN(nasklpp) && (naskl > nasklpp)))
                                    $('.p_title_l div table',$(this))
                                    	.after('<tr><td>Качество/Себестоимость:</td><td><strong style="display:block;" class="ccf1"></strong></td></tr>')
        								.after('<tr><td>На складе:</td><td><strong style="display:block;" class="ccf"></strong></td></tr>')
        								.after('<tr><td colspan="2"><strong>После пересчета</strong></td></tr>');
        							if(cf>0&&k>0) $(cels[7]).append('<strong style="display:block" class="cf"></strong>');
                                    else $(cels[7]).html('').append('<strong style="display:block" class="cf"></strong>');
        							$(cels[9]).append('<strong style="display:block" class="cnf"></strong>');
                                    if(cnk!==0) $(cels[11]).html('<b>'+parseFloat($(cels[11]).text()).toFixed(2)+'</b>').append('<b>(©'+cnk.toFixed(2)+')</b><strong style="display:block" class="kf"></strong>');
                                    else $(cels[11]).append('<strong style="display:block" class="kf"></strong>');
                                    }
					            }
						     }
					     }

					//name = 'q'+randWD(3);
					//$(this).addClass(name);
                    //alert (name);
					if(txt2.length > 0){
						txt1[j-1] = [];
						txt1[j-1] = txt2;
					}

					j++;
					if(i > 0){
						ssred(cel,ar,true);
					}
					cel = this;
					ar = [];
					txt2 = [];
					i = 0;
                }
				if($(this).hasClass('odd') || $(this).hasClass('even')){
					var c = parseInt($('input[name*=supplyContractData]',cels[1]).val().replace(/ /g, '')),
						max = parseInt($(cels[8]).text().replace(/ /g, '')),
                        str = $(cels[8]).html(),
                        ck = 0,
                        sv = 0,
                        vsego = 0;
						cn = parseFloat($(cels[3]).text().replace('©', '').replace(/ /g, ''));
						k = parseFloat($(cels[5]).text().replace(/ /g, ''));

                        if(str.indexOf('из') > -1)
                        str = str.substring( (str.indexOf('из') + 2), str.length);
                        sv = parseInt(str.replace(/ /g, ''));
                        vsego = parseInt(str.substring( (str.indexOf('>') + 1), str.length).replace(/ /g, ''));
                        if(isNaN(max)) max = 10000000000000000;
                        if(sv < max)
                        max = sv;

                        if(k!==0) ck = cn / k;
                        if(isNaN(k)) ck = 0;
                        if(isNaN(c)) c = 0;
                        k = nullpr(k);
                        if((k===0) || (isNaN(k))) k = 1;

						txt2[i] = new addar(c, cn, k, 0, max, $('.skach[ids='+(j-1)+']').val(), name, i );

						if(c == max){
							$(cels[8]).css('background-color','#EFE');
							$('span', cels[8]).css('color','#000');
						}
						else {if(max===0&&k===0){
							 $(cels[8]).css('background-color','#EFE');
							 $('span', cels[8]).css('color','red');
						     }
                             else {if(c > max){
							      $(cels[8]).css('background-color','#FEE');
							      $('span', cels[8]).css('color','red');
                                  }
                                  else {if(c < max){
							           $(cels[8]).css('background-color','#EFE');
							           $('span', cels[8]).css('color','#000');
						               }}}}
						ar[i] = new addar(c, cn, k, 0, max );


						if($('.skach[ids='+(j-1)+']').val() < k)
							$(this).css('background-color','#E9E8FF');
						else
							$(this).css('background-color','#EAEAEA');
                        if(t){
						//	$(cels[8]).click(function(){
						//		var tr = $(this).closest('tr'),
						//			max = parseInt($(this).text().replace(/ /g, '')),
                        //          str = $(cels[8]).html(),
                        //            sv = 0;
                        //        if(str.indexOf('из') > -1)
                        //        str = str.substring( (str.indexOf('из') + 2), str.length);
                        //        sv = parseInt(str.replace(/ /g, ''));
                        //        if(isNaN(max)) max = 0;
                        //        if(sv < max)
                        //        max = sv;
						//		$('input[type=text]', tr).val(max);
						//		updatetablesk(false, name);
						//	});

							$(cels[5]).append('<span style="display:block;color:#f00;"><span title="Цена за единицу качества (Ц/К)">©'+ck.toFixed(2)+'</span>');
							var but_1 = $('<input type="button" rel="'+n+'" value="+1п" />').unbind('click').click(function() { add($(this).attr('rel'),1,txt); });
							var but_2 = $('<input type="button" rel="'+n+'" value="+2п" />').unbind('click').click(function() { add($(this).attr('rel'),2,txt); });
							$(cels[0]).prepend('<br />').prepend(but_2).prepend(but_1);
							$(cels[1]).prepend('<div class="divtemp" id="divtemp'+n+'"></div>');
							txt[n] = new addar(c, cn, k, 0, max );
							n++;
                        }
						$(this).addClass(name+i);
						i++;
				}
				if(!$(this).hasClass('odd') && !$(this).hasClass('even') && !$(this).hasClass('p_title') && i>0){
					if(txt2.length > 0){
						txt1[j-1] = [];
						txt1[j-1] = txt2;
					}
					ssred(cel,ar,true);
					if(sort) sortzak ();

					var nasklade = {};
					for(i = 0; i < txt1.length; i++){

						//if ($(" div table tr td:contains('На складе')").length) {
                        nasklade.nasklade = parseInt($('.'+ txt1[i][0].name +' div table tr td:contains("На складе")').next().text().replace(/ /g, ''));
                        //nasklade.nasklade = parseInt($('.p_title_l div table tr td:contains("На складе")').next().text().replace(/ /g, ''));
                        //nasklade.nasklade = parseInt(nasklade.nasklade.replace(/ /g, ''));
                        if(isNaN(nasklade.nasklade)) nasklade.nasklade = 0;
                        //alert (txt1[i][0].name);

						nasklade.naskladecach = $('.'+ txt1[i][0].name +' div table tr td:contains("Качество/Себестоимость")').next().text();
                        //nasklade.naskladecach = $('.p_title_l div table tr td:contains("Качество/Себестоимость")').next().text();
						nasklade.naskladecena = nasklade.naskladecach;
                        nasklade.naskladecach = parseFloat(nasklade.naskladecach.replace('©', '').replace(/ /g, ''));
                        if(isNaN(nasklade.naskladecach)) nasklade.naskladecach = 0;

						//nasklade.naskladecena = $('.'+ txt1[i][0].name +' div table tr td:contains("Качество/Себестоимость")').next().text();
						nasklade.naskladecena = parseFloat(nasklade.naskladecena.substr(nasklade.naskladecena.indexOf('©')).replace('©', '').replace(/ /g, ''));
                        if(isNaN(nasklade.naskladecena)) nasklade.naskladecena = 0;
                        // }else {
                        //if(isNaN(nasklade.nasklade)) nasklade.nasklade = 0;
                        //if(isNaN(nasklade.naskladecach)) nasklade.naskladecach = 0;
                        //if(isNaN(nasklade.naskladecena)) nasklade.naskladecena = 0;

						nasklade.otgruzki = parseInt($('.'+ txt1[i][0].name +' div table tr td:contains("Отгрузки")').next().text().replace(/ /g, ''));
						//nasklade.otgruzki = parseInt(nasklade.otgruzki.replace(/ /g, ''));
						if(isNaN(nasklade.otgruzki))
							nasklade.otgruzki = 0;

						var cf1 = nasklade.nasklade - nasklade.otgruzki;
						if(cf1 < 0)
						   cf1 = 0;

						cf = parseInt($('.'+ txt1[i][0].name +' .cf div').text().replace(/ /g, ''));
						if(isNaN(cf))
							cf = parseInt($('.'+ txt1[i][0].name +' .cf').text().replace(/ /g, ''));

						var col = nasklade.nasklade - nasklade.otgruzki;
						if(col < 0)
						   col = 0;
						if(isNaN(col)) col = 0;
						col += cf;
						if (col === 0) q1 = 0;
                        else var q1 = parseFloat( cf1 / col);
						if (col === 0) q2 = 0;
                        else var q2 = parseFloat( cf / col);

						var kf = parseFloat($('.'+ txt1[i][0].name +' .kf div').text().replace(/ /g, ''));
                        if(isNaN(kf))
							kf = parseFloat($('.'+ txt1[i][0].name +' .kf').text().replace(/ /g, ''));
						var cnf = parseFloat($('.'+ txt1[i][0].name +' .cnf div').text().replace('©', '').replace(/ /g, ''));
						if(isNaN(cnf))
							cnf = parseFloat($('.'+ txt1[i][0].name +' .cnf').text().replace('©', '').replace(/ /g, ''));
						var r1 = parseFloat(q1 * nasklade.naskladecach + q2 * kf);
                        var r2 = parseFloat(q1 * nasklade.naskladecena + q2 * cnf);

						$('.'+ txt1[i][0].name +' .ccf').text(num(col, false));
						$('.'+ txt1[i][0].name +' .ccf1').text(num(r1, true)+'/©'+num(r2, true));
                        //$('.p_title_l .ccf1').text(r1.toFixed(2)+'/$'+r2.toFixed(2));
                        //ssred(cel,ar,true);
					}}
                });

       			//if(sort)
				//   sortzak();
        //alert(n);
        //return txt1;
        };

    var updatetablesk = function (name) {
			//var sort = sort || false;
			var ar = [];
            var cel;
            var n=0;
			var txt2 = [];
            var txt1 = [];
            //alert (name);
            //name = name.substr(0,3);
			//j = 1;
			form = true;
			$('table.list tr[class*="'+name+'"]').each( function() {
            //$('table.list tr').each( function() {
                //$('table.list tr[class*="'+name+'"]').each( function() {
				var cels = $('td',this);
                if($(this).hasClass('p_title')){
                    //name = $(this).attr('class').substr(8);
   						//ko[j] = parseFloat($(cels[4]).text());
						//var skach = $('<input>', {'type':'text', 'class':'skach','style':'display:block;','ids':j}).val(ko[j]);//.unbind('keyup').keyup(function(){
						//	updatetablesk(true, name);
						//});
						//$('.p_title_l', this).prepend(skach);

                    //alert(name);
					//if(txt2.length > 0){
					//	txt1[j-1] = [];
					//	txt1[j-1] = txt2;
					//}
					//j++;
					//if(i > 0) {
					//	ssred(cel,ar,true);
					//}
					cel = this;
					//ar = [];
					//txt2 = [];
					i = 0;
                }

                if ($(this).hasClass('odd') || $(this).hasClass('even')) {
                    //alert ('2');
					var c = parseInt($('input[name*=supplyContractData]',cels[1]).val().replace(/ /g, '')),
						cn = parseFloat($(cels[3]).text().replace('©', '').replace(/ /g, '')),
						k = parseFloat($(cels[5]).text().replace(/ /g, '')),
						max = parseInt($(cels[8]).text().replace(/ /g, '')),
                        str = $(cels[8]).html(),
                        ck = 0,
                        sv = 0,
                        vsego = 0;

                        if(str.indexOf('из') > -1)
                        str = str.substring( (str.indexOf('из') + 2), str.length);
                        sv = parseInt(str.replace(/ /g, ''));
                        vsego = parseInt(str.substring( (str.indexOf('>') + 1), str.length).replace(/ /g, ''));
                        if(isNaN(max)) max = 10000000000000000;
                        if(sv < max) max = sv;

                        if(k!==0) ck = cn / k;
                        if(isNaN(k)) ck = 0;
                        if(isNaN(c)) c = 0;
                        k = nullpr(k);
                        if((k===0) || (isNaN(k))) k = 1;

						txt2[i] = new addar(c, cn, k, 0, max, name, i);

						if(c == max){
							$(cels[8]).css('background-color','#EFE');
							$('span', cels[8]).css('color','#000');
						}
						else {if(max===0&&k===0){
							 $(cels[8]).css('background-color','#EFE');
							 $('span', cels[8]).css('color','red');
						     }
                             else {if(c > max){
							      $(cels[8]).css('background-color','#FEE');
							      $('span', cels[8]).css('color','red');
                                  }
                                  else {if(c < max){
							           $(cels[8]).css('background-color','#EFE');
							           $('span', cels[8]).css('color','#000');
						               }}}}
						ar[i] = new addar (c, cn, k, 0, max );


						//if($('.skach[ids='+(j-1)+']').val() < k)
						//	$(this).css('background-color','#E9E8FF');
						//else
						//	$(this).css('background-color','#EAEAEA');

						//){
							//$(cels[5]).append('<span style="display:block;color:#f00;"><span title="Цена за единицу качества (Ц/К)">$'+ck.toFixed(2)+'</span>');
							var but_1 = $('<input type="button" rel="'+n+'" value="+1п" />').unbind('click').click(function() { add($(this).attr('rel'),1,txt);});
							var but_2 = $('<input type="button" rel="'+n+'" value="+2п" />').unbind('click').click(function() { add($(this).attr('rel'),2,txt);});
							//$(cels[0]).prepend('<br />').prepend(but_2).prepend(but_1);
							//$(cels[1]).prepend('<div class="divtemp" id="divtemp'+n+'"></div>');
							//txt[n] = new addar(c, cn, k, 0, max );
							//n++;
						//
						//$(this).addClass(name+i);
						i++;
                }});
				//if(!$(this).hasClass('odd') && !$(this).hasClass('even') && !$(this).hasClass('p_title') && i>0){
				    //if(txt2.length > 0){
                        //alert (txt2.length)
						//txt1[j-1] = [];
						//txt1 = txt2;
					//}
					ssred(cel,ar,true);
					//if(sort)
					//	sortzak();

					var nasklade = {};
					//for(i = 0; i < txt2.length; i++){
						//if ($(" div table tr td:contains('На складе')").length) {
                        if ($('.' + name +' div table tr td:contains("На складе")').parent().prev().text() == "После пересчета") nasklade.nasklade = 0;
                        else nasklade.nasklade = parseInt($('.' + name +' div table tr td:contains("На складе")').next().text().replace(/ /g, ''));
                        //nasklade.nasklade = parseInt($('.p_title_l div table tr td:contains("На складе")').next().text().replace(/ /g, ''));
                        //nasklade.nasklade = parseInt(nasklade.nasklade.replace(/ /g, ''));
                        if(isNaN(nasklade.nasklade)) nasklade.nasklade = 0;
                        //alert (txt1[i][0].name);

						nasklade.naskladecach = $('.' + name + ' div table tr td:contains("Качество/Себестоимость")').next().text();
						nasklade.naskladecena = nasklade.naskladecach;
                        nasklade.naskladecach = parseFloat(nasklade.naskladecach.replace('©', '').replace(/ /g, ''));
						if(isNaN(nasklade.naskladecach)) nasklade.naskladecach = 0;

						//nasklade.naskladecena = $('.'+ txt1[i][0].name +' div table tr td:contains("Качество/Себестоимость")').next().text();
						nasklade.naskladecena = parseFloat(nasklade.naskladecena.substr(nasklade.naskladecena.indexOf('©')).replace('©', '').replace(/ /g, ''));
                        if(isNaN(nasklade.naskladecena)) nasklade.naskladecena = 0;
                        // }else {
                        //if(isNaN(nasklade.nasklade)) nasklade.nasklade = 0;
                        //if(isNaN(nasklade.naskladecach)) nasklade.naskladecach = 0;
                        //if(isNaN(nasklade.naskladecena)) nasklade.naskladecena = 0;

						nasklade.otgruzki = parseInt($('.' + name +' div table tr td:contains("Отгрузки")').next().text().replace(/ /g, ''));
                        //nasklade.otgruzki = parseInt($('.p_title_l div table tr td:contains("Отгрузки")').next().text().replace(/ /g, ''));
						//nasklade.otgruzki = parseInt(nasklade.otgruzki.replace(/ /g, ''));
						if(isNaN(nasklade.otgruzki))
							nasklade.otgruzki = 0;

						var cf1 = nasklade.nasklade - nasklade.otgruzki;
						if(cf1 < 0)
						   cf1 = 0;

						var cf = parseInt($('.' + name +' .cf div').text().replace(/ /g, ''));
						if(isNaN(cf))
							cf = parseInt($('.' + name +' .cf').text().replace(/ /g, ''));

						var col = nasklade.nasklade - nasklade.otgruzki;
						if(col < 0)
						   col = 0;

						col += cf;
						if (col === 0) q1 = 0;
                        else var q1 = parseFloat( cf1 / col);
						if (col === 0) q2 = 0;
                        else var q2 = parseFloat(cf / col);

						var kf = parseFloat($('.' + name +' .kf div').text().replace(/ /g, ''));
						if(isNaN(kf))
							kf = parseFloat($('.' + name +' .kf').text().replace(/ /g, ''));
						var cnf = parseFloat($('.' + name +' .cnf div').text().replace('©', '').replace(/ /g, ''));
						if(isNaN(cnf))
							cnf = parseFloat($('.' + name +' .cnf').text().replace('©', '').replace(/ /g, ''));
						var r1 = parseFloat(q1 * nasklade.naskladecach + q2 * kf);
						var r2 = parseFloat(q1 * nasklade.naskladecena + q2 * cnf);

						$('.' + name +' .ccf').text(num(col, false));
						$('.' + name +' .ccf1').text(num(r1, true)+'/©'+num(r2, true));
                        //$('.p_title_l .ccf1').text(r1.toFixed(2)+'/$'+r2.toFixed(2));
                        //}
                //}
                //if($(this).hasClass('p_title') && !$(this).hasClass('p_title_l') && $(this).attr('class').substr(8) != name) {alert($(this).attr('class'));return false;};
           //}
        //);
				//if(sort)
				//   sortzak();
        //return ar;
        };

		//var ar =
        createtablesk(true, true);

        $('input[name*=supplyContractData]').unbind('keyup').keyup(function(){
			if (timeout) clearTimeout(timeout);
            //alert ($('tr:has(td):has(input)').prev().attr('class'));
            //var name = $('tr:has(td):has(input)').closest('tr').attr('class').substr(8);
            if ($(this).closest('tr').attr('class').substr(0,3)=="odd")
            var name = $(this).closest('tr').attr('class').substr(4,4);
            else
                if ($(this).closest('tr').attr('class').substr(0,3)=='eve')
                name = $(this).closest('tr').attr('class').substr(5,4);
            //alert (name);
			timeout = setTimeout(function() {
			updatetablesk(name);
        //createtablesk(false, false);
			if (e.keyCode == 13) return;
			}, delay);});
        $('table.list tr').each( function() {
            var cels = $('td',this);
		    if($(this).hasClass('odd')) {
                $(cels[8]).unbind('click').click(function(){
                    var name = $(this).closest('tr').attr('class').substr(4,4);
                    var tr = $(this).closest('tr'),
					max = parseInt($(this).text().replace(/ /g, '')),
                    str = $(cels[8]).html(),
                    sv = 0;
                    //alert (name);
                                if(str.indexOf('из') > -1)
                                str = str.substring( (str.indexOf('из') + 2), str.length);
                                sv = parseInt(str.replace(/ /g, ''));
                                if(isNaN(max)) max = 0;
                                if(sv < max) max = sv;
								$('input[type=text]', tr).val(max);
                    updatetablesk(name);});}
                    //createtablesk(false, false);});}
            if($(this).hasClass('even')) {
                $(cels[8]).unbind('click').click(function() {
                    var name = $(this).closest('tr').attr('class').substr(5,4);
                    var tr = $(this).closest('tr'),
					max = parseInt($(this).text().replace(/ /g, '')),
                    str = $(cels[8]).html(),
                    sv = 0;
                    //alert (name);
                                if(str.indexOf('из') > -1)
                                str = str.substring( (str.indexOf('из') + 2), str.length);
                                sv = parseInt(str.replace(/ /g, ''));
                                if(isNaN(max)) max = 0;
                                if(sv < max) max = sv;
								$('input[type=text]', tr).val(max);
                    updatetablesk(name);});}});
                    //createtablesk(false, false);});}});

  $('div#mainContent > form > table.list > tbody > tr:nth-child(1) > th:nth-child(1)').html('<div style="width:100%; text-align:center; color:blue; cursor:pointer"><strong name="showSeller"><span>Скрыть</span> поставщиков</strong></div>');
  $('strong[name=showSeller]').unbind('click').click(function() {
    var s = $(this).find('span');
    $('div#mainContent > form > table.list > tbody > tr[class]').each(function() {
      if( $(this).hasClass('odd') || $(this).hasClass('even') ) { // Строки покупки ресурсов
          if(s.html() == 'Скрыть') $(this).css('display', 'none');
          else $(this).removeAttr('style');
      }// end switch
    });
    var sButton = $('div#mainContent > form > table.list > tbody > tr > td[colspan=9] > input.button160').parent().parent();
    if( s.html() == 'Скрыть' ) {
      s.html('Показать');
      $(sButton).css('display', 'none');
    } else {
      s.html('Скрыть');
      $(sButton).removeAttr('style');
    }
  });

//		var hidep1 = true;
//		var hidep = $('<button>Скрыть поставщиков</button>').appendTo($('table.list th')[0]).unbind('click').click(function(){
//			if(hidep1){
//				$('table.list tr.odd, table.list tr.even').hide();
//				$(this).text('Показать поставщиков');
//			}else{
//				$('table.list tr.odd, table.list tr.even').show();
//				$(this).text('Скрыть поставщиков');
//			}
//			hidep1 = !hidep1;
//			return false;
//		});

		but_ras = $('<input type="button" value="Расчет" />').unbind('click').click(function() { Calculate1(2); });
	}

	if(form){
		$('#mainContent').after('<div id="mainformc" style="display:none; position:fixed; width:500px; background-color:#fff; border:solid 1px #000; z-index:1001; top:10px; left:10px;">'+closespan+'</div>');

		var but_show = $('<input type="button" value="Форма смеси" style="position:fixed; left:0px; top:0px;" />').unbind('click').click(function() { $('#mainformc').show(); });
		$('#mainContent').prepend(but_show);

		$('#mainformc').append('<table align="center" width="20%" border="0" class="grid"><tr class="odd" ><th></th><th >В наличии</th><th>Необходимо</th><th colspan=2 scope="col">Продукты</th></tr><tr align="right" class="odd"><th>Количество</th><td><input type=text id="sc" maxlength=11 value="0" size=10 tabindex=1></td><td><input type=text id="sc1" maxlength=11 value="0" size=10 tabindex=3></td><td><input style="background-color:#ddd;" readonly type=text id="sx1" maxlength=11 value="0" size=10></td><td><input style="background-color:#ddd;" readonly type=text id="sx2" maxlength=11 value="0" size=10></td></tr><tr align="right" class="even"><th>Качество</th><td><input type=text id="sk" maxlength=11 value="0" size=10 tabindex=2></td><td><input type=text id="sk1" maxlength=11 value="0" size=10 tabindex=4></td><td><input type=text id="sk2" maxlength=11 value="0" size=10 tabindex=5></td><td><input type=text id="sk3" maxlength=11 value="0" size=10 tabindex=7></td></tr><tr align="right" class="odd"><th>Цена</th><td></td><td ><div id="cenacach" style="color:#f00;"></div><input style="background-color:#ddd;" readonly type=text id="scn1" maxlength=11 value="0" size=10></td><td><div id="cenacach1" style="color:#f00;"></div><input type=text id="scn2" maxlength=11 value="0" size=10 tabindex=6></td><td><div id="cenacach2" style="color:#f00;"></div><input type=text id="scn3" maxlength=11 value="0" size=10 tabindex=8></td></tr></table>')
			.append(but_ras)
			.append('<label><input type="checkbox" id="svo" />Считать с кол-вом остатков</label>');

		$('#mainformc .closeform').unbind('click').click(function(){$('#mainformc').hide();});
	}
}
)})(window);

// Хак, что бы получить полноценный доступ к DOM >:]
var script = document.createElement("script");
//script.textContent = '(' + run.toString() + ')();';
//script.textContent = '( )();';
document.documentElement.appendChild(script);