function round(value,precision) { var exp = Math.pow(10,precision); return Math.round(value*exp)/exp; } function initialize() { document.chooseForm.wordsAmount.value="1 235,05"; recalculate(document.chooseForm.wordsAmount); } function recalculate(field) { var form = field.form; var resultDiv = document.getElementById("wordsAmountResult"); var result = ""; var wordsAmount = form.wordsAmount.value; var numberRegExp = new RegExp("^\\s*[0-9]{1,3}([\\s\\.]*[0-9]{3})*(,[0-9]{1,2})?\\s*$"); if(!numberRegExp.test(wordsAmount)) { resultDiv.innerHTML = "Wprowadź prawidłową kwotę."; return; } wordsAmount = wordsAmount.replace(/[\s\.]*/ig,''); if(field.id=="wordsButtonAddVat") { wordsAmount = round(parseFloat(wordsAmount.replace(",","."))*1.23,2); form.wordsAmount.value = wordsAmount.toMoney(2,',',' '); wordsAmount = wordsAmount.toString().replace(".",","); } if(field.id=="wordsButtonSubstractVat") { wordsAmount = round(parseFloat(wordsAmount.replace(",","."))/1.23,2); form.wordsAmount.value = wordsAmount.toMoney(2,',',' '); wordsAmount = wordsAmount.toString().replace(".",","); } if(wordsAmount.indexOf(',')>0) { var rest = wordsAmount.substring(wordsAmount.indexOf(',')+1); if(rest.length<2) rest = rest + "0"; result = translatePart(rest,0); wordsAmount = wordsAmount.substring(0,wordsAmount.indexOf(',')); } var scale = 1; while(wordsAmount.length>3) { result = translatePart(wordsAmount.substring(wordsAmount.length-3,wordsAmount.length), scale) + " " + result; wordsAmount = wordsAmount.substring(0,wordsAmount.length-3); scale++; if(scale>6) { resultDiv.innerHTML = "Za dużo! Nikt na pewno nie ma tyle kasy??? :)"; return; } } result = translatePart(wordsAmount.toString(), scale) + " " + result; resultDiv.innerHTML = ""+result+""; } function translatePart(part, scale) { var result = ""; while(part.length<3) part = "0"+part; var wordFlexion = 2; switch(part[0]) { case '0': break; case '1': result += "sto"; break; case '2': result += "dwieście"; break; case '3': result += "trzysta"; break; case '4': result += "czterysta"; break; case '5': result += "pięćset"; break; case '6': result += "sześćset"; break; case '7': result += "siedemset"; break; case '8': result += "osiemset"; break; case '9': result += "dziewięćset"; break; } switch(part[1]) { case '0': break; case '1': switch(part[2]) { case '0': result += " dziesięć"; break; case '1': result += " jedenaście"; break; case '2': result += " dwanaście"; break; case '3': result += " trzynaście"; break; case '4': result += " czternaście"; break; case '5': result += " piętnaście"; break; case '6': result += " szesnaście"; break; case '7': result += " siedemnaście"; break; case '8': result += " osiemnaście"; break; case '9': result += " dziewiętnaście"; break; } break; case '2': result += " dwadzieścia"; break; case '3': result += " trzydzieści"; break; case '4': result += " czterdzieści"; break; case '5': result += " pięćdziesiąt"; break; case '6': result += " sześćdziesiąt"; break; case '7': result += " siedemdziesiąt"; break; case '8': result += " osiemdziesiąt"; break; case '9': result += " dziewięćdziesiąt"; break; } if(!(part[1]=='1')) { switch(part[2]) { case '0': break; case '1': result += " jeden"; if(part[0]=='0' && part[1]=='0') wordFlexion = 0; break; case '2': result += " dwa"; wordFlexion = 1; break; case '3': result += " trzy"; wordFlexion = 1; break; case '4': result += " cztery"; wordFlexion = 1; break; case '5': result += " pięć"; break; case '6': result += " sześć"; break; case '7': result += " siedem"; break; case '8': result += " osiem"; break; case '9': result += " dziewięć"; break; } } if(result.length>0) { switch(scale) { case 0: switch(wordFlexion) { case 0: result += " grosz"; break; case 1: result += " grosze"; break; case 2: result += " groszy"; break; } break; case 1: switch(wordFlexion) { case 0: result += " złoty"; break; case 1: result += " złote"; break; case 2: result += " złotych"; break; } break; case 2: switch(wordFlexion) { case 0: result += " tysiąc"; break; case 1: result += " tysiące"; break; case 2: result += " tysięcy"; break; } break; case 3: switch(wordFlexion) { case 0: result += " milion"; break; case 1: result += " miliony"; break; case 2: result += " milionów"; break; } break; case 4: switch(wordFlexion) { case 0: result += " miliard"; break; case 1: result += " miliardy"; break; case 2: result += " miliardów"; break; } break; case 5: switch(wordFlexion) { case 0: result += " bilion"; break; case 1: result += " biliony"; break; case 2: result += " bilionów"; break; } break; case 6: switch(wordFlexion) { case 0: result += " biliard"; break; case 1: result += " biliardy"; break; case 2: result += " biliardów"; break; } break; case 7: switch(wordFlexion) { case 0: result += " trylion"; break; case 1: result += " tryliony"; break; case 2: result += " trylionów"; break; } break; case 8: switch(wordFlexion) { case 0: result += " tryliard"; break; case 1: result += " tryliardy"; break; case 2: result += " tryliardów"; break; } break; case 9: switch(wordFlexion) { case 0: result += " kwadrylion"; break; case 1: result += " kwadryliony"; break; case 2: result += " kwadrylionów"; break; } break; } } return result; } 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; };