function currencyFormat(n, currencySign, currencySignPosition, decimalDivider, thousandsDivider, notForField) {
   if (!isNaN(n)) {
		if (!currencySign) {currencySign = false;}
		if (!currencySignPosition) {currencySignPosition = false;}
		if (!decimalDivider) {decimalDivider = ".";}
		if (!thousandsDivider) {thousandsDivider = "";}
		if (!notForField) {notForField = false;}
	
      n = Math.round(n*10)/10;
      n = n.toString();

		nPart = n.split(".");
		
		var x = nPart[0].substr(0, nPart[0].length%3);
		for (var i = 0; i < Math.floor(nPart[0].length/3); i++) {
			if ((nPart[0].length%3 != 0) || (i > 0)) {
				x += thousandsDivider;
			}
			x += nPart[0].substr((nPart[0].length%3) + (i*3), 3);
		}
		
		if (!nPart[1]) {nPart[1] = "00";}
		if (nPart[1].length == 1) {nPart[1] += "0";}

      n = x + decimalDivider + nPart[1];
		if (currencySign) {
			n = (currencySignPosition) ? currencySign + n : n + currencySign;
		}
		if (notForField) {
			while (n.indexOf(" ") != -1) {
				n = n.replace(" ", "&nbsp;");
			}
		}
   }
   return n;
}

function formatNumber(number){

	var decimalPos;
	var leftPart = number.toString();
	var orgLeftPart = "";
	var digitCount = 0;
	var digitChar = "";
	var decimalPart = "";
	
	decimalPos = leftPart.indexOf(".");
	decimalPart = leftPart.substring(decimalPos);
	leftPart = leftPart.substring(0,decimalPos);
	
	decimalPart = decimalPart.substring(0,3);
	
	orgLeftPart = leftPart;
	leftPart="";
	for (var x=orgLeftPart.length-1;x!=-1;x--) {
	
		digitCount = digitCount + 1;
		digitChar = orgLeftPart.substring(x,x+1);
		if (digitCount==3) {
			digitCount=0;
			digitChar = "," + digitChar;
		}
		leftPart = digitChar + leftPart;
	
	}
	if (leftPart.substring(0,1)==",") {leftPart=leftPart.substring(1);}
	
	return(leftPart + decimalPart);

}

function v_number(number){
	var digits="0123456789.£";
	if (number=="£") {return false;}
	if (number.length==0) {return false;}
	for (var i=0;i<number.length;i++){if (digits.indexOf(number.substring(i,i+1))==-1 && number.substring(i,i+1)!="."){return false;}}
	if (number<0) {return false;}
	return true;
}


function calculateTax(){

	//load values from form into variables

	var frm=document.taxcalc;
	var vGrossPay=frm.GrossPay.value;
	var vTaxPaid=frm.TaxPaid.value;
	var vYear=frm.Year.options[frm.Year.selectedIndex].value;
	
	//validate inputs
	
	var errorMessage="";
	
	if (!v_number(vGrossPay)) {errorMessage+="Pensje roczne\n";}
	if (!v_number(vTaxPaid)) {errorMessage+="Zaplacony podatek\n";}
	
	if (errorMessage.length!=0) {alert("WPROWADZ POPRAWNE DANE:\n\n"+errorMessage+"\nNIE WPISUJ CYFR PO PRZECINKU");return false;}
	
	if (vGrossPay.substring(0,1)=="£") vGrossPay=vGrossPay.substring(1);
	if (vTaxPaid.substring(0,1)=="£") vTaxPaid=vTaxPaid.substring(1);

	
	//initialise those variables for calculation
	
	var Tax=0;
	var Gross;
	var Taxable;
	var TaxToPaid=0;
	var TaxToReturn=0;
	var Q1, P1, Q2, P2, Q3, P3, Q4, P4;

	//calculate

	switch(vYear){
		case '2004/2005': {
			Q1 = 4745;
			P1 = 0.1;
			Q2 = 2020;
			P2 = 0.22;
			Q3 = 31400;
			P3 = 0.4;
		break;
		}
		case '2005/2006': {
			Q1 = 4895;
			P1 = 0.1;
			Q2 = 2090;
			P2 = 0.22;
			Q3 = 32400;
			P3 = 0.4;
		break;
		}
		case '2006/2007': {
			Q1 = 5035;
			P1 = 0.1;
			Q2 = 2150;
			P2 = 0.22;
			Q3 = 33300;
			P3 = 0.4;
		break;
		}
		case '2007/2008': {
			Q1 = 5225;
			P1 = 0.1;
			Q2 = 2230;
			P2 = 0.22;
			Q3 = 34600;
			P3 = 0.4;
		break;
		}
		case '2008/2009': {
			Q1 = 6035;
			P1 = 0;
			Q2 = 0;
			P2 = 0.2;
			Q3 = 34800;
			P3 = 0.4;
		break;
		}
		case '2009/2010': {
			Q1 = 6475;
			P1 = 0;
			Q2 = 0;
			P2 = 0.2;
			Q3 = 37400;
			P3 = 0.4;
		break;
		}		
			case '2010/2011': {
			Q1 = 6475;
			P1 = 0;
			Q2 = 0;
			P2 = 0.2;
			Q3 = 37400;
			P3 = 0.4;
			Q4 = 150000;
			P4 = 0.5;
		break;
		}
			case '2011/2012': {
			Q1 = 7475;
			P1 = 0;
			Q2 = 0;
			P2 = 0.2;
			Q3 = 35000;
			P3 = 0.4;
			Q4 = 150000;
			P4 = 0.5;
		break;
		}						
	}

	Gross = vGrossPay - Q1;
	Taxable = Gross > 0 ? Gross : 0;

	if(Gross > Q4){
	 Tax += (Gross - Q4) * P4;
	 Tax += (Q4 - Q3) * P3;
	 Tax += (Q3 - Q2) * P2;
	 Tax += Q2 * P1;
	}
	else if(Gross > Q3){
	 Tax += (Gross - Q3) * P3;
	 Tax += (Q3 - Q2) * P2;
	 Tax += Q2 * P1;
	}
	else if(Gross > Q2){
	 Tax += (Gross - Q2) * P2;
	 Tax += Q2 * P1;
	}
	else if(Gross > 0){
	 Tax += Gross * P1;
	}

	TaxToPaid = Tax - vTaxPaid;
	if(TaxToPaid < 0) TaxToReturn = TaxToPaid * -1;

	
	//load text boxes with results
	
		frm.v1.value = currencyFormat(Q1, '£', true, '.', ',');
		frm.v2.value = currencyFormat(Taxable, '£', true, '.', ',');
		frm.v3.value = currencyFormat(Tax, '£', true, '.', ',');
	if(TaxToReturn) {
		document.getElementById("tax-to-return").innerHTML = "Tax to return:";
		frm.v4.value = currencyFormat(TaxToReturn, '£', true, '.', ',');
	} else {
		document.getElementById("tax-to-return").innerHTML = "Tax to pay:";
		frm.v4.value = currencyFormat(TaxToPaid, '£', true, '.', ',');
	}

	return false;
}

