function round(value,precision) { var exp = Math.pow(10,precision); return Math.round(value*exp)/exp; } var activeForm = 1; function initialize() { document.chooseForm0.pizzaPrice.value = 35.50; document.chooseForm0.pizzaPieces.value = 1; document.chooseForm0.pizzaDiscount.value = 0; document.chooseForm0.pizzaType.value = 0; document.chooseForm0.pizzaSizeX.value=38; document.chooseForm0.pizzaSizeY.value=30; document.chooseForm1.pizzaPrice.value = 27; document.chooseForm1.pizzaPieces.value = 2; document.chooseForm1.pizzaDiscount.value = 10; document.chooseForm1.pizzaType.value=0; document.chooseForm1.pizzaSizeX.value=32; document.chooseForm1.pizzaSizeY.value=30; recalculate(document.chooseForm0.pizzaPrice,document.chooseForm0); recalculate(document.chooseForm1.pizzaPrice,document.chooseForm1); } function recalculate(field,form) { var formNum = form.name.substring(form.name.length-1); if(field.id == "pizzaType") { if(form.pizzaType.value == 0) { document.getElementById("pizzaSizeXLabel"+formNum).innerHTML = "Średnica"; document.getElementById("pizzaSizeYLabelDiv"+formNum).style.display = "none"; document.getElementById("pizzaSizeYInputDiv"+formNum).style.display = "none"; } if(form.pizzaType.value == 1) { document.getElementById("pizzaSizeXLabel"+formNum).innerHTML = "Rozmiar"; document.getElementById("pizzaSizeYLabelDiv"+formNum).style.display = "none"; document.getElementById("pizzaSizeYInputDiv"+formNum).style.display = "none"; } if(form.pizzaType.value == 2) { document.getElementById("pizzaSizeXLabel"+formNum).innerHTML = "Długość"; document.getElementById("pizzaSizeYLabelDiv"+formNum).style.removeProperty("display"); document.getElementById("pizzaSizeYInputDiv"+formNum).style.removeProperty("display"); } } if(field.type=="text") { 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(!form.pizzaPrice.value || !form.pizzaSizeX.value || (form.pizzaType.value && !form.pizzaSizeY.value)) { form.resultPricePerUnit.value = ""; form.resultToPay.value = ""; return; } if(form.pizzaDiscount.value>99.9) form.pizzaDiscount.value = 99.9; var pizzaPieces = 1; if(form.pizzaPieces.value) pizzaPieces = form.pizzaPieces.value; var pizzaDiscount = 0; if(form.pizzaDiscount.value) pizzaDiscount = form.pizzaDiscount.value; var pizzaArea; if(form.pizzaType.value == 0) pizzaArea = Math.PI * Math.pow(parseFloat(form.pizzaSizeX.value)/2, 2); else if(form.pizzaType.value == 1) pizzaArea = Math.pow(parseFloat(form.pizzaSizeX.value),2); else if(form.pizzaType.value == 2) pizzaArea = parseFloat(form.pizzaSizeX.value) * parseFloat(form.pizzaSizeY.value); var pizzaPrice = form.pizzaPrice.value * (1 - pizzaDiscount / 100); form.resultPricePerUnit.value = round((pizzaPrice / pizzaArea) * 100 * 100,0); form.resultToPay.value = (pizzaPrice * pizzaPieces).toMoney(2,'.',' '); form.resultArea.value = pizzaArea*pizzaPieces; var cheapest = -1; for(var i = 0; i<=activeForm; i++) { if(cheapest<0 && document.forms[i].resultPricePerUnit.value) { cheapest = i; continue; } if(!document.forms[i].resultPricePerUnit.value) continue; if(parseFloat(document.forms[i].resultPricePerUnit.value) < parseFloat(document.forms[cheapest].resultPricePerUnit.value)) cheapest = i; } for(var i = 0; i<=activeForm; i++) { var info; var compareArea = round((parseFloat(document.forms[i].resultArea.value) - parseFloat(document.forms[cheapest].resultArea.value))/parseFloat(document.forms[cheapest].resultArea.value)*100,0); var compareToPay = round((parseFloat(document.forms[i].resultToPay.value) - parseFloat(document.forms[cheapest].resultToPay.value))/parseFloat(document.forms[cheapest].resultToPay.value)*100,0); if(Number.isNaN(compareArea) || Number.isNaN(compareToPay)) info = ""; else if(i == cheapest || (compareArea == compareToPay)) info = "Ta pizza jest najtańsza!" else { if(compareToPay<0) { info = "Za tę zapłacisz "+ (-compareToPay) + "% mniej"; if(compareArea<0) info += " i jest o "+ (-compareArea) + "% mniejsza"; } else if(compareToPay==0) { info = "Za tę zapłacisz tyle samo"; if(compareArea<0) info += ", ale jest o " + (-compareArea) +"% mniejsza"; } else { info = "Za tę zapłacisz o "+compareToPay+"% więcej"; if(compareArea<0) info += " i jest o "+(-compareArea) + "% mniejsza"; else if(compareArea==0) info += " a ma taki sam rozmiar."; else info += " a jest tylko o "+compareArea + "% większa"; } } document.getElementById("resultLabel"+i).innerHTML = info; } } function activateForm() { activeForm++; document.getElementById("comparable_view_"+activeForm).style.removeProperty("display"); document.forms[activeForm].pizzaPrice.value = document.forms[activeForm-1].pizzaPrice.value; document.forms[activeForm].pizzaPieces.value = document.forms[activeForm-1].pizzaPieces.value; document.forms[activeForm].pizzaDiscount.value = document.forms[activeForm-1].pizzaDiscount.value; document.forms[activeForm].pizzaType.value = document.forms[activeForm-1].pizzaType.value; document.forms[activeForm].pizzaSizeX.value = document.forms[activeForm-1].pizzaSizeX.value; document.forms[activeForm].pizzaSizeY.value = document.forms[activeForm-1].pizzaSizeY.value; recalculate(document.forms[activeForm].pizzaPrice,document.forms[activeForm]); if(activeForm==document.forms.length-1) { document.getElementById("comparable_view_activation").style.display = "none"; } return false; } function selectInput(field) { addClass(field,"input_selected"); for(var i = 0; i < field.form.elements.length; i++) { var currentElement = field.form.elements[i]; 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) : ''); }