<script>
	var colors = [
				{g:'AADDEE',t:'агути'},
				{g:'AaDDEE',t:'агути НЧ'},
				{g:'AADdEE',t:'агути НГ'},
				{g:'AADDEe',t:'агути НП'},
				{g:'AaDdEE',t:'агути НЧ НГ'},
				{g:'AaDDEe',t:'агути НЧ НП'},
				{g:'AADdEe',t:'агути НГ НП'},
				{g:'AaDdEe',t:'агути НЧ НГ НП'},
				{g:'aaDDEE',t:'черный'},
				{g:'aaDdEE',t:'черный НГ'},
				{g:'aaDDEe',t:'черный НП'},
				{g:'aaDdEe',t:'черный НГ НП'},
				{g:'AAddEE',t:'голубой'},
				{g:'AaddEE',t:'голубой НЧ'},
				{g:'AAddEe',t:'голубой НП'},
				{g:'AaddEe',t:'голубой НЧ НП'},
				{g:'AADDee',t:'песок'},
				{g:'AaDDee',t:'песок НЧ'},
				{g:'AADdee',t:'песок НГ'},
				{g:'AaDdee',t:'песок НЧ НГ'},
				{g:'AAddee',t:'крем'},
				{g:'Aaddee',t:'крем НЧ'},
				{g:'aaddEE',t:'синий'},
				{g:'aaddEe',t:'синий НП'},
				{g:'aaDDee',t:'шоколад'},
				{g:'aaDdee',t:'шоколад НГ'},
				{g:'aaddee',t:'лиловый'},
	];
	var fenos = [
		{g:'A-D-E-',t:'агути'},
		{g:'aaD-E-',t:'черный'},
		{g:'A-ddE-',t:'голубой'},
		{g:'A-D-ee',t:'песок'},
		{g:'A-ddee',t:'крем'},
		{g:'aaddE-',t:'синий'},
		{g:'aaD-ee',t:'шоколад'},
		{g:'aaddee',t:'лиловый'},
	];
	var ns = [
		{g:'Aa----', t:'НЧ'},
		{g:'--Dd--', t:'НГ'},
		{g:'----Ee', t:'НП'},
	];
	function fnd (arr, i, add) {
		var a, len = arr.length;
		for (a=0;a<len;a++) if (arr[a].id == i) return a;
		if (add) {
			arr[len] = {id:i, val:0, feno:''};
			return len;
		}
		return -1;
	}
	function fnd2 (arr, i, add) {
		var a, len = arr.length;
		for (a=0;a<len;a++) if (arr[a].g == i) return a;
		if (add) {
			arr[len] = {id:i, val:0, feno:''};
			return len;
		}
		return -1;
	}
	function percent (x) {
//		var y = parseInt (x * 100 + 0.2, 10) / 100;
		var y = parseInt(Math.round(x * 100) + 0.02, 10) / 100
		return y;
	}
	function compaire (a, b) {
		if (a.prc < b.prc) return 1;
		if (a.prc > b.prc) return -1;
	}
	function alph (a, b) {
		if (a.t > b.t) return 1;
		if (a.t < b.t) return -1;
	}
	function order (a, b) {
		var m = -1, n = -1;
		var x, len = colors.length;
		for (x=0;x<len;x++) {
			if (coinside (colors[x].g, a.id)) m = x;
			if (coinside (colors[x].g, b.id)) n = x;
		}
		if (m > n) return 1;
		if (m < n) return -1;
	}
	function childGen (parent1, parent2) {
		var nom = 'AaDdEe';
		var p = [parent1, parent2];
		var arr = [], arr2 = [];
		var a, b, c, m, n, x, y, cell, feno, lt, lt2, dom, gen, ind, sym, ps, mx;
		var z = [];
		for (y = 0; y < 8; y++) {
			z[1] = y;
			for (x = 0; x < 8; x++) {
				z[0] = x;
				cell = '';
				lt2 = 4;
				for (lt=0;lt<6;lt+=2) {
					dom = 0;
					for (c=0;c<=1;c++) {
						gen = p[c];
						ind = lt;
						if (z[c] & lt2) ind += 1;
						sym = gen[ind];
						ps = nom.indexOf(sym);
						if ((ps & 1) == 0) dom++;
					}
					for (a=0;a<dom;a++) cell+=nom[lt];
					for (a=dom;a<2;a++) cell+=nom[lt+1];
					lt2 /= 2;
				}
				feno = '';
				for (c=0;c<6;c+=2) {
					m = nom.indexOf (cell[c]);
					if (m % 2) feno += cell[c] + cell[c]; else feno += cell[c] + '-';
				}
				c = fnd (arr, cell, true);
				arr[c].val++;
				arr[c].feno = feno;
				c = fnd (arr2, feno, true);
				arr2[c].val++;
			}
		}
		len = arr.length;
		len2 = arr2.length;
		for (a=0;a<len;a++) {
			mx = 64;
			for (b=0;b<len2;b++) {
				if (arr2[b].id == arr[a].feno) mx = arr2[b].val;
			}
			arr[a].prc = arr[a].val * 100 / mx; //percent (arr[a].val * 100 / mx);//Math.round (arr[a].val * 10000 / mx) / 100;
		}
		arr.sort(order); // compaire
		for (a=0;a<len2;a++) arr2[a].prc = arr2[a].val * 100 / 64;//percent(arr2[a].val * 100 / 64);//Math.round (arr2[a].val * 10000 / 64) / 100;
		arr2.sort(order); // compaire
		return {geno:arr, feno:arr2};
	}
	function coinside (s1, s2) {
		var ret = '';
		var a;
		for (a=0;a<6;a++) {
			if (s1[a] == '-') ret+=s2[a]; else
			if (s2[a] == '-') ret+=s1[a]; else
			if (s1[a] != s2[a]) return ''; else
			ret+=s1[a];
		}
		return ret;
	}
	function recount () {
		var arrs = childGen (combo1.value, combo2.value);
		var arr = arrs.geno;
		var arr2 = arrs.feno;
		var a, n, n2, len = arr.length;
		var ret = 'Генотип потомства:<br>', cpt, cpt2;
		for (a=0;a<len;a++) {
			n = fnd2 (colors, arr[a].id, false);
			cpt = colors[n].t;
			ret += cpt + ': ' + arr[a].prc + '%<br>';
		}
		var ret2 = 'Варианты окраса потомства:<br>';
		var ret3 = 'Генотип потомства:<br>';
		var tmp, c, d, sum, dvs;
		var len1 = arr.length;
		len = arr2.length;
		for (a=0;a<len;a++) {
			n = fnd2 (fenos, arr2[a].id, false);
			cpt = fenos[n].t;
			for (c=0;c<len1;c++) if (coinside (arr2[a].id, arr[c].id)) {
				n2 = fnd2 (colors, arr[c].id, false);
				cpt2 = colors[n2].t;
				ret2 += cpt2 + ' '+percent (arr[c].val*arr2[a].prc/arr2[a].val)+'%<br>'; // (Math.round(arr[c].val*arr2[a].prc*100/arr2[a].val))/100
			}
			ret2 += '<b>Итого ' + cpt + ': ' + percent(arr2[a].prc) + '%</b><br><br>';
			ret3 += cpt + '  ';
			for (c=0;c<=2;c++) {
				tmp = coinside (arr2[a].id, ns[c].g);
				if (!tmp) continue;
				sum = 0;
				for (d=0;d<len1;d++) {
					if (coinside (tmp, arr[d].id)) sum += arr[d].prc;
				}
				if (sum) {
					if (sum < 99) ret3 += percent(sum)+'%';
					ret3 += ns[c].t+' ';
				}
			}
			ret3 += '<br>';
		}
		fld_ret.innerHTML = ret3;
		fld_ret2.innerHTML = ret2;
	}
	function fill() {
		var cmb = '';
		var a, len = colors.length;
		var clrs = colors.slice (0,len);//.sort(alph);
		for (a=0;a<len;a++) {
			cmb += '<option value="'+clrs[a].g+'">'+clrs[a].t;
		}
		list1.innerHTML = '<select name="combo1" id="combo1" onchange="recount();">'+cmb+'</select>';
		list2.innerHTML = '<select name="combo2" id="combo2" onchange="recount();">'+cmb+'</select>';
		recount ();
	}
</script>
<table align="center">
<tr><th colspan="2">Калькулятор окрасов</th></tr>
<tr><td>Окрас первого родителя</td><td id="list1"></td></tr>
<tr><td>Окрас второго родителя</td><td id="list2"></td></tr>
<tr><td colspan="1" id="fld_ret2" style="vertical-align:top;">Генотип:</td>
<td colspan="1" id="fld_ret" style="text-align: right; vertical-align:top;">Фенотип:</td></tr>
</table>

<script>fill();</script>
{"id":2821,"date":"2018-04-11T21:16:07","date_gmt":"2018-04-11T18:16:07","guid":{"rendered":"http:\/\/degu.by\/site\/?page_id=2821"},"modified":"2018-04-11T21:16:07","modified_gmt":"2018-04-11T18:16:07","slug":"kalkulyator-okrasov","status":"publish","type":"page","link":"https:\/\/degu.by\/site\/kalkulyator-okrasov\/","title":{"rendered":"\u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043e\u043a\u0440\u0430\u0441\u043e\u0432 \u0434\u0435\u0433\u0443"},"content":{"rendered":"\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043e\u043a\u0440\u0430\u0441\u043e\u0432 \u0434\u0435\u0433\u0443 - DIA<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/degu.by\/site\/kalkulyator-okrasov\/\" \/>\n<meta property=\"og:locale\" content=\"ru_RU\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043e\u043a\u0440\u0430\u0441\u043e\u0432 \u0434\u0435\u0433\u0443 - DIA\" \/>\n<meta property=\"og:url\" content=\"http:\/\/degu.by\/site\/kalkulyator-okrasov\/\" \/>\n<meta property=\"og:site_name\" content=\"DIA\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/degu.by\/site\/kalkulyator-okrasov\/\",\"url\":\"http:\/\/degu.by\/site\/kalkulyator-okrasov\/\",\"name\":\"\u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043e\u043a\u0440\u0430\u0441\u043e\u0432 \u0434\u0435\u0433\u0443 - DIA\",\"isPartOf\":{\"@id\":\"http:\/\/degu.by\/site\/#website\"},\"datePublished\":\"2018-04-11T18:16:07+00:00\",\"dateModified\":\"2018-04-11T18:16:07+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/degu.by\/site\/kalkulyator-okrasov\/#breadcrumb\"},\"inLanguage\":\"ru-RU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/degu.by\/site\/kalkulyator-okrasov\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/degu.by\/site\/kalkulyator-okrasov\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u041c\u0438\u0440 \u0434\u0435\u0433\u0443\",\"item\":\"http:\/\/degu.by\/site\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043e\u043a\u0440\u0430\u0441\u043e\u0432 \u0434\u0435\u0433\u0443\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/degu.by\/site\/#website\",\"url\":\"http:\/\/degu.by\/site\/\",\"name\":\"DIA\",\"description\":\"\u041c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0435 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u00ab\u041c\u0438\u0440 \u0434\u0435\u0433\u0443\u00bb\",\"publisher\":{\"@id\":\"http:\/\/degu.by\/site\/#\/schema\/person\/7958acae2c1f87696d58df81840bf9c7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/degu.by\/site\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"ru-RU\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/degu.by\/site\/#\/schema\/person\/7958acae2c1f87696d58df81840bf9c7\",\"name\":\"\u0410\u043b\u0451\u043d\u0430\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ru-RU\",\"@id\":\"http:\/\/degu.by\/site\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6e81efbce64322ea3e342dba8ad4d887?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6e81efbce64322ea3e342dba8ad4d887?s=96&r=g\",\"caption\":\"\u0410\u043b\u0451\u043d\u0430\"},\"logo\":{\"@id\":\"http:\/\/degu.by\/site\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043e\u043a\u0440\u0430\u0441\u043e\u0432 \u0434\u0435\u0433\u0443 - DIA","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/degu.by\/site\/kalkulyator-okrasov\/","og_locale":"ru_RU","og_type":"article","og_title":"\u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043e\u043a\u0440\u0430\u0441\u043e\u0432 \u0434\u0435\u0433\u0443 - DIA","og_url":"http:\/\/degu.by\/site\/kalkulyator-okrasov\/","og_site_name":"DIA","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/degu.by\/site\/kalkulyator-okrasov\/","url":"http:\/\/degu.by\/site\/kalkulyator-okrasov\/","name":"\u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043e\u043a\u0440\u0430\u0441\u043e\u0432 \u0434\u0435\u0433\u0443 - DIA","isPartOf":{"@id":"http:\/\/degu.by\/site\/#website"},"datePublished":"2018-04-11T18:16:07+00:00","dateModified":"2018-04-11T18:16:07+00:00","breadcrumb":{"@id":"http:\/\/degu.by\/site\/kalkulyator-okrasov\/#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["http:\/\/degu.by\/site\/kalkulyator-okrasov\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/degu.by\/site\/kalkulyator-okrasov\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u041c\u0438\u0440 \u0434\u0435\u0433\u0443","item":"http:\/\/degu.by\/site\/"},{"@type":"ListItem","position":2,"name":"\u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043e\u043a\u0440\u0430\u0441\u043e\u0432 \u0434\u0435\u0433\u0443"}]},{"@type":"WebSite","@id":"http:\/\/degu.by\/site\/#website","url":"http:\/\/degu.by\/site\/","name":"DIA","description":"\u041c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0435 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u00ab\u041c\u0438\u0440 \u0434\u0435\u0433\u0443\u00bb","publisher":{"@id":"http:\/\/degu.by\/site\/#\/schema\/person\/7958acae2c1f87696d58df81840bf9c7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/degu.by\/site\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"ru-RU"},{"@type":["Person","Organization"],"@id":"http:\/\/degu.by\/site\/#\/schema\/person\/7958acae2c1f87696d58df81840bf9c7","name":"\u0410\u043b\u0451\u043d\u0430","image":{"@type":"ImageObject","inLanguage":"ru-RU","@id":"http:\/\/degu.by\/site\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6e81efbce64322ea3e342dba8ad4d887?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6e81efbce64322ea3e342dba8ad4d887?s=96&r=g","caption":"\u0410\u043b\u0451\u043d\u0430"},"logo":{"@id":"http:\/\/degu.by\/site\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/degu.by\/site\/wp-json\/wp\/v2\/pages\/2821"}],"collection":[{"href":"https:\/\/degu.by\/site\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/degu.by\/site\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/degu.by\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/degu.by\/site\/wp-json\/wp\/v2\/comments?post=2821"}],"version-history":[{"count":2,"href":"https:\/\/degu.by\/site\/wp-json\/wp\/v2\/pages\/2821\/revisions"}],"predecessor-version":[{"id":2824,"href":"https:\/\/degu.by\/site\/wp-json\/wp\/v2\/pages\/2821\/revisions\/2824"}],"wp:attachment":[{"href":"https:\/\/degu.by\/site\/wp-json\/wp\/v2\/media?parent=2821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}