function round(value,precision) { var exp = Math.pow(10,precision); return Math.round(value*exp)/exp; } function roundAutoPrecision(value) { var test = round(value,0).toString(); if(test>0) return round(value,3-test.length); return round(value,2); } var initialRecipe = false; var initialized = false; function initialize() { document.chooseForm.tinFromType.value=0; document.chooseForm.tinFromRoundDiameter.value = 25; document.chooseForm.tinFromSquareSize.value = 25; document.chooseForm.tinFromRectangleLength.value = 30; document.chooseForm.tinFromRectangleWidth.value = 22; document.chooseForm.tinToType.value=2; document.chooseForm.tinToRoundDiameter.value = 22; document.chooseForm.tinToSquareSize.value = 22; document.chooseForm.tinToRectangleLength.value = 23; document.chooseForm.tinToRectangleWidth.value = 32; document.chooseForm.tinRatio.value = 1.5; document.chooseForm.tinRecipe.value = "Idealne naleśniki:\r\n100ml śmietanki kremówki\r\n2 jajka\r\n125g mąki pszennej\r\n15 g cukru\r\n325 ml mleka\r\nszczypta soli"; //document.chooseForm.tinRecipe.value = testRecipe(); recalculate(document.chooseForm.tinRatio); recalculate(document.chooseForm.tinRecipe); document.chooseForm.tinRecipe.onpaste = handlePaste; initialRecipe = true; initialized = true; } var numberLabel = new Array(); var numberValue = new Array(); function addNumber(label,value) { var index = numberLabel.length; numberLabel[index] = label; numberValue[index] = value; } addNumber("1/2",0.5); addNumber("½",0.5); addNumber("1/3",0.333); addNumber("⅓",0.333); addNumber("2/3",0.666); addNumber("⅔",0.666); addNumber("1/4",0.25); addNumber("¼",0.25); addNumber("3/4",0.75); addNumber("1/8",0.125); addNumber("1½",1.5); addNumber("1.1/2",1.5); addNumber("1.1/4",1.25); addNumber("2.1/2",2.5); addNumber("2½",2.5); addNumber("pół",0.5); addNumber("połowa",0.5); addNumber("jedna",1); addNumber("jeden",1); addNumber("dwa",2); addNumber("dwie",2); addNumber("trzy",3); addNumber("cztery",4); addNumber("pięć",5); addNumber("sześć",6); addNumber("siedem",7); addNumber("osiem",8); addNumber("dziewięć",9); addNumber("dziesięć",10); addNumber("tuzin",12); var unitLabel = new Array(); var unitValue = new Array(); function addUnit(label,value) { var index = unitLabel.length; unitLabel[index] = label; unitValue[index] = value; } addUnit("g","g"); addUnit("gram","g"); addUnit("l","l"); addUnit("ml","ml"); addUnit("łyżki","łyżki"); addUnit("łyżka","łyżki"); addUnit("łyżeczka","łyżeczki"); addUnit("łyżeczki","łyżeczki"); addUnit("szklanka","szklanki"); addUnit("szklanki","szklanki"); addUnit("kulki","kulki"); addUnit("ziarna","ziarna"); addUnit("lb","lb"); addUnit("lbs","lb"); addUnit("pound","lb"); addUnit("pounds","lb"); addUnit("oz","oz"); addUnit("ounce","oz"); addUnit("ounces","oz"); addUnit("tsp","tsp"); addUnit("teaspoon","tsp"); addUnit("teaspoons","tsp"); addUnit("tbsp","tbsp"); addUnit("tablespoon","tbsp"); addUnit("tablespoons","tbsp"); addUnit("cup","cup"); addUnit("cups","cup"); var unitConvert = new Array(); function addUnitConvert(sourceUnit,targetUnit,ratio) { var index = unitConvert.length; var unit = new Object(); unit.sourceUnit = sourceUnit; unit.targetUnit = targetUnit; unit.ratio = ratio; unitConvert[index] = unit; } addUnitConvert("lb","kg",0.45359237); addUnitConvert("oz","g",28.3495231); var products = new Array(); function activateTinForms() { document.getElementById("tinFromHead").style.removeProperty("display"); var form = document.chooseForm; if(form.tinFromType.value==0) document.getElementById("tinFromRound").style.removeProperty("display"); else document.getElementById("tinFromRound").style.display = "none"; if(form.tinFromType.value==1) document.getElementById("tinFromSquare").style.removeProperty("display"); else document.getElementById("tinFromSquare").style.display = "none"; if(form.tinFromType.value==2) document.getElementById("tinFromRectangle").style.removeProperty("display"); else document.getElementById("tinFromRectangle").style.display = "none"; document.getElementById("tinToHead").style.removeProperty("display"); if(form.tinToType.value==0) document.getElementById("tinToRound").style.removeProperty("display"); else document.getElementById("tinToRound").style.display = "none"; if(form.tinToType.value==1) document.getElementById("tinToSquare").style.removeProperty("display"); else document.getElementById("tinToSquare").style.display = "none"; if(form.tinToType.value==2) document.getElementById("tinToRectangle").style.removeProperty("display"); else document.getElementById("tinToRectangle").style.display = "none"; document.getElementById("tinActivateForm").style.display = "none"; } function hideTinForms() { document.getElementById("tinFromHead").style.display = "none"; document.getElementById("tinFromRound").style.display = "none"; document.getElementById("tinFromSquare").style.display = "none"; document.getElementById("tinFromRectangle").style.display = "none"; document.getElementById("tinToHead").style.display = "none"; document.getElementById("tinToRound").style.display = "none"; document.getElementById("tinToSquare").style.display = "none"; document.getElementById("tinToRectangle").style.display = "none"; document.getElementById("tinActivateForm").style.removeProperty("display"); } function handlePaste(event) { setTimeout(() => { recalculate(document.chooseForm.tinRecipe); }, 200); } function recalculate(field) { var form = field.form; var tinFrom, tinTo, tinRatio; if(field.id=="tinRecipeResult") return; if(field.type=="text" && (field.id.startsWith("tinFrom") || field.id.startsWith("tinTo") || field.id=="tinRatio" || field.id=="tinProductAmount")) { if(field.value.indexOf(',')>0) field.value = field.value.replace(',','.'); var numberRegExp = new RegExp("^[0-9\.,]*$"); if(!numberRegExp.test(field.value)) field.value = field.value.replace(/[^0-9\.,]*/ig,''); //check for double decimal separator var firstSep = field.value.indexOf("."); var secondSep = firstSep>0?field.value.indexOf(".",firstSep+1):-1; if(firstSep>0 && secondSep>firstSep) { field.value = field.value.substring(0,secondSep); } if(field.value[field.value.length-1]=='.') return; } if(field.id.startsWith("tinFrom") || field.id.startsWith("tinTo")) { activateTinForms(); if(form.tinFromType.value==0) { var radius = parseFloat(form.tinFromRoundDiameter.value)/2; if(form.tinFromRoundDiameterUnit.value==1) radius *= 2.54; tinFrom = Math.PI * Math.pow(radius, 2); } if(form.tinFromType.value==1) { var size = parseFloat(form.tinFromSquareSize.value); if(form.tinFromSquareSizeUnit.value==1) size *= 2.54; tinFrom = Math.pow(size,2); } if(form.tinFromType.value==2) { var sizeLength = parseFloat(form.tinFromRectangleLength.value); if(form.tinFromRectangleLengthUnit.value==1) sizeLength *= 2.54; var sizeWidth = parseFloat(form.tinFromRectangleWidth.value); if(form.tinFromRectangleWidthUnit.value==1) sizeWidth *= 2.54; tinFrom = sizeLength * sizeWidth; } if(form.tinToType.value==0) { var radius = parseFloat(form.tinToRoundDiameter.value)/2; if(form.tinToRoundDiameterUnit.value==1) radius *= 2.54; tinTo = Math.PI * Math.pow(radius, 2); } if(form.tinToType.value==1) { var size = parseFloat(form.tinToSquareSize.value); if(form.tinToSquareSizeUnit.value==1) size *= 2.54; tinTo = Math.pow(size,2); } if(form.tinToType.value==2) { var sizeLength = parseFloat(form.tinToRectangleLength.value); if(form.tinToRectangleLengthUnit.value==1) sizeLength *= 2.54; var sizeWidth = parseFloat(form.tinToRectangleWidth.value); if(form.tinToRectangleWidthUnit.value==1) sizeWidth *= 2.54; tinTo = sizeLength * sizeWidth; } tinRatio = tinTo/tinFrom; } else if(field.id == "tinRatio" || field.id == "tinRecipe" || field.id == "tinRecipeConvertUnits") { tinRatio = parseFloat(document.chooseForm.tinRatio.value); hideTinForms(); } else { if(field.id == "tinProducts") { if(products[document.chooseForm.tinProducts.value].unit) document.getElementById("tinProductUnit").innerHTML = products[document.chooseForm.tinProducts.value].unit; else document.getElementById("tinProductUnit").innerHTML = ""; document.chooseForm.tinProductAmount.value = round(products[document.chooseForm.tinProducts.value].amount * document.chooseForm.tinRatio.value,2); } if(field.id == "tinProductAmount" || field.id == "tinProducts") tinRatio = document.chooseForm.tinProductAmount.value / products[document.chooseForm.tinProducts.value].amount; hideTinForms(); } if(!tinRatio || Number.isNaN(tinRatio)) return; document.chooseForm.tinRatio.value = round(tinRatio,2); if(field.id == "tinRecipe") { var recipe = document.chooseForm.tinRecipe.value; recipeLines = recipe.split(/[\r\n]+/); products = new Array(); for(var i = 0; i0) selectedProduct = productsSelect.options[productsSelect.selectedIndex].text.trim(); productsSelect.options.length = 0; for(var i=0; i < products.length; i++) { if(products[i].amount) productsSelect.options[productsSelect.options.length] = new Option(products[i].name,i); if(products[i].name == selectedProduct) { selectedIndex = productsSelect.options.length-1; productsSelect.options[selectedIndex].selected = true; } } if(productsSelect.options.length == 0) { document.getElementById("tinProductUnit").innerHTML = ""; document.chooseForm.tinProductAmount.value = ""; return; } if(products[productsSelect.options[selectedIndex].value].unit) document.getElementById("tinProductUnit").innerHTML = products[productsSelect.options[selectedIndex].value].unit; else document.getElementById("tinProductUnit").innerHTML = ""; document.chooseForm.tinProductAmount.value = round(products[productsSelect.options[selectedIndex].value].amount * document.chooseForm.tinRatio.value,2); } function clearInitialRecipe() { if(initialRecipe) { document.chooseForm.tinRecipe.value = ""; initialRecipe = false; } } function testRecipe() { var recipe = "To jest przepis\r\n"; recipe += "3 żółtka\r\n"; recipe += "30g cukru pudru\r\n"; recipe += "pół łyżeczki proszku do pieczenia\r\n"; recipe += "1 łyżeczka ekstraktu wanil. (lub około 8g cukru)\r\n"; recipe += "150 g mąki pszennej\r\n"; recipe += " 100 g masła\r\n"; recipe += "3,5 oz masła\r\n"; recipe += "3 duże jajka\r\n"; recipe += "3/4 szklanki mleka \r\n"; recipe += "1/2 szklanki mąki pszennej\r\n"; recipe += "1/4 łyżeczki soli\r\n"; recipe += "2 łyżki cukru wan (dom prod)\r\n"; recipe += "1,5 łyżeczki soku z cytryny\r\n"; recipe += "szczypta soli\r\n"; recipe += "Pół papryczki chili, drobno posiekanej \r\n"; recipe += "2lb chudej wołowiny (użyłam udźca )\r\n"; recipe += "2 kartoniki siekanych pomidorów(2 x 400 g)\r\n"; recipe += "3 kulki ziela angielskiego\r\n"; recipe += "pół łyżeczki mielonej kolendry\r\n"; recipe += "1 łyżeczka suszonego oregano\r\n"; recipe += "1/8 łyżeczki mielonego cynamonu\r\n"; recipe += "Sól do smaku\r\n"; recipe += "125 ml mleka kokosowego\r\n"; return recipe; } function selectInput(field) { addClass(field,"input_selected"); for(var i = 0; i < document.forms.length; i++) for(var j = 0; j < document.forms[i].elements.length; j++) { var currentElement = document.forms[i].elements[j]; if(currentElement == field) continue; removeClass(currentElement,"input_selected"); } } function addClass(item, classname) { var obj = item if (typeof item=="string") { obj = document.getElementById(item) } obj.className += " " + classname } function removeClass(item, classname) { var obj = item if (typeof item=="string") { obj = document.getElementById(item) } var classes = ""+obj.className while (classes.indexOf(classname)>-1) { classes = classes.replace (classname, "") } obj.className = classes } Number.prototype.toMoney = function(decimals, decimalSeparator, thousandsSeparator) { var n = this; c = isNaN(decimals) ? 2 : Math.abs(decimals); d = decimalSeparator || '.'; t = (typeof thousandsSeparator === 'undefined') ? ' ' : thousandsSeparator; sign = (n < 0) ? '-' : '', i = parseInt(n = Math.abs(n).toFixed(c)) + '', j = ((j = i.length) > 3) ? j % 3 : 0; return sign + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ''); } String.prototype.startsWith = function (str) { return this.indexOf(str) == 0; };