

/******************************for budget tool calculation and resul page (pie chart)*****************************///  **************************************************************************/				
				
				var passed = location.search.substring(1);
				var incomeB = parseFloat(getParm(passed,'incomeB')).toFixed(2);
						
				var homeExpB = getParm(passed,'homeExpB');				
				var transportB = getParm(passed,'transportB');
				var loanB = getParm(passed,'loanB');
				var insuranceB = getParm(passed,'insuranceB');				
				var savingsB = getParm(passed,'savingsB');				
				var obligationsB = getParm(passed,'obligationsB');				
				var subscriptionsB = getParm(passed,'subscriptionsB');				
				var foodDrinksB = getParm(passed,'foodDrinksB');				
				var lifestyleB = getParm(passed,'lifestyleB');				
				var charityGiftsB = getParm(passed,'charityGiftsB');				
				var eventsB = getParm(passed,'eventsB');				
				var childrenB = getParm(passed,'childrenB');								
				var healthB = getParm(passed,'healthB');				
				var educationB = getParm(passed,'educationB');				
				var miscellaneousB = getParm(passed,'miscellaneousB');
				
			
				
var totalB=0;

var totalB = totalB+parseFloat(homeExpB)+parseFloat(transportB)+parseFloat(loanB)+parseFloat(insuranceB)+parseFloat(savingsB)+parseFloat(obligationsB)+parseFloat(subscriptionsB)+parseFloat(foodDrinksB)+parseFloat(lifestyleB)+parseFloat(charityGiftsB)+parseFloat(eventsB)+parseFloat(childrenB)+parseFloat(healthB)+parseFloat(educationB)+parseFloat(miscellaneousB);

//calculation each pound hold portion
//var phomeExpB = parseFloat(homeExpB);

var perPoundAngleB= (360/totalB);
var perPoundPercentageB = (100/totalB);
//document.write("Unique"+perPoundAngle);

//phomeExpB, ptransportB, .. stores each expense fillup values
var phomeExpB= parseFloat(perPoundAngleB*homeExpB);
//document.write("Home Fills Up "+ phomeExpB);
var ptransportB= parseFloat(perPoundAngleB*transportB);
var ploanB= parseFloat(perPoundAngleB*loanB);
var pinsuranceB= parseFloat(perPoundAngleB*insuranceB);
var psavingsB= parseFloat(perPoundAngleB*savingsB);
var pobligationsB= parseFloat(perPoundAngleB*obligationsB);
var psubscriptionsB= parseFloat(perPoundAngleB*subscriptionsB);
var pfoodDrinksB= parseFloat(perPoundAngleB*foodDrinksB);
var plifestyleB= parseFloat(perPoundAngleB*lifestyleB);
var pcharityGiftsB= parseFloat(perPoundAngleB*charityGiftsB);
var peventsB= parseFloat(perPoundAngleB*eventsB);
var pchildrenB= parseFloat(perPoundAngleB*childrenB);
var phealthB= parseFloat(perPoundAngleB*healthB);
var peducationB= parseFloat(perPoundAngleB*educationB);
var pmiscellaneousB= parseFloat(perPoundAngleB*miscellaneousB);


	var expensesB =new  Array(15);
//stores all these values in array . The benifit of this array is we need to pass only the array address instead of all value separately.
	expensesB[0]= phomeExpB;	
	expensesB[1]= ptransportB;	
	expensesB[2]= ploanB;	
	expensesB[3]= pinsuranceB;
	expensesB[4]= psavingsB;
	expensesB[5]= pobligationsB;
	expensesB[6]= psubscriptionsB; 
	expensesB[7]=pfoodDrinksB ;
	expensesB[8]= plifestyleB;
	expensesB[9]=pcharityGiftsB; 
	expensesB[10]=peventsB;
	expensesB[11]=pchildrenB ; 
	expensesB[12]= phealthB; 
	expensesB[13]=peducationB; 
	expensesB[14]=pmiscellaneousB;
	
	
	var expensesDetails =new  Array(15);
//stores all these expense string in array.
	expensesDetails[0]="Home Expense";
	expensesDetails[1]="Getting Around";
	expensesDetails[2]="Loans";
	expensesDetails[3]="Insurance";
	expensesDetails[4]="Savings";	
	expensesDetails[5]="Obligations";
	expensesDetails[6]="Subscriptions";
	expensesDetails[7]="Food And Drink";
	expensesDetails[8]="Life Style";
	expensesDetails[9]="Charity Gifts";
	expensesDetails[10]="Events";
	expensesDetails[11]="Children";
	expensesDetails[12]="Health";
	expensesDetails[13]="Education";
	expensesDetails[14]="Miscellaneous";
	
var expensesPercentageB = new  Array(15);

 expensesPercentageB[0]= parseFloat(perPoundPercentageB*homeExpB);
 expensesPercentageB[1]= parseFloat(perPoundPercentageB*transportB);
 expensesPercentageB[2]= parseFloat(perPoundPercentageB*loanB);
 expensesPercentageB[3]= parseFloat(perPoundPercentageB*insuranceB);
 expensesPercentageB[4]= parseFloat(perPoundPercentageB*savingsB);
 expensesPercentageB[5]= parseFloat(perPoundPercentageB*obligationsB);
 expensesPercentageB[6]= parseFloat(perPoundPercentageB*subscriptionsB);
 expensesPercentageB[7]= parseFloat(perPoundPercentageB*foodDrinksB);
 expensesPercentageB[8]= parseFloat(perPoundPercentageB*lifestyleB);
 expensesPercentageB[9]= parseFloat(perPoundPercentageB*charityGiftsB);
 expensesPercentageB[10]= parseFloat(perPoundPercentageB*eventsB);
 expensesPercentageB[11]= parseFloat(perPoundPercentageB*childrenB);
 expensesPercentageB[12]= parseFloat(perPoundPercentageB*healthB);
 expensesPercentageB[13]= parseFloat(perPoundPercentageB*educationB);
 expensesPercentageB[14]= parseFloat(perPoundPercentageB*miscellaneousB);	



var categoryB= new Array(15)
	
	categoryB[0]='homeExpB';
	categoryB[1]='transportB';
	categoryB[2]='loanB';
	categoryB[3]='insuranceB';
	categoryB[4]='savingsB';
	categoryB[5]='obligationsB';
	categoryB[6]='subscriptionsB'; 
	categoryB[7]='foodDrinksB' ;
	categoryB[8]='lifestyleB';
	categoryB[9]='charityGiftsB';
	categoryB[10]='eventsB';
	categoryB[11]='childrenB' ;
	categoryB[12]='healthB'; 
	categoryB[13]='educationB';
	categoryB[14]='miscellaneousB';



/*****************************code for main category calculation ************************ ****************** ***********************************/
function calculatemain(cat,subcat)
{
var B=cat+"B";
var catVal = parseFloat(document.getElementById(B).value);
document.getElementById(B).value = catVal.toFixed(2);
for (i=0;i<15;i++)
  {
   if ((document.getElementById(categoryB[i]).value.length==0) || (document.getElementById(categoryB[i]).value==null))
      {document.getElementById(categoryB[i]).value='0';}
   }
     
for(i=1; i <= subcat;i++)
{
var subB = B+i;
document.getElementById(subB).value="";
}

totalMaincat();
}





function totalMaincat()
{
	
var grandTotalB =0;

grandTotalB = grandTotalB +parseFloat(document.getElementById('homeExpB').value) + parseFloat( document.getElementById('transportB').value)+parseFloat(document.getElementById('loanB').value)+ parseFloat(document.getElementById('insuranceB').value) + parseFloat( document.getElementById('savingsB').value) + parseFloat( document.getElementById('obligationsB').value) + parseFloat(document.getElementById('subscriptionsB').value) + parseFloat(document.getElementById('foodDrinksB').value) + parseFloat(document.getElementById('lifestyleB').value) + parseFloat(document.getElementById('charityGiftsB').value) + parseFloat(document.getElementById('eventsB').value) + parseFloat(document.getElementById('childrenB').value) + parseFloat(document.getElementById('healthB').value) + parseFloat(document.getElementById('educationB').value) + parseFloat(document.getElementById('miscellaneousB').value);

document.getElementById('grandTotalB').value=grandTotalB.toFixed(2);

var income=document.getElementById('incomeB').value;

document.getElementById('balance').value= (income-grandTotalB).toFixed(2);

}


/**********************************code for sub category calculation********************** ***************/

function setTextFieldValue(textField) {
	textField=document.getElementById(textField);
   if ((textField.value.length==0) || (textField.value==null)) {
	  return  0;
   }
   else { return textField.value; }
}


function calculate(cat, fldName,idSub, element){
	    
		getTotal(fldName,element);
		totalMaincat();
}



function getTotal(totalFldName,element){
	
		var total=0, fldName; 
		for (i=1;i<=element;i++){
			fieldName=totalFldName+i;
			total=total+parseFloat(setTextFieldValue(fieldName));
			if(setTextFieldValue(fieldName)!=0){
				document.getElementById(fieldName).value= parseFloat(setTextFieldValue(fieldName)).toFixed(2);
				}
			//document.getElementById(fieldName).value= parseFloat(setTextFieldValue(fieldName)).toFixed(2);
		}
		document.getElementById(totalFldName).value= total.toFixed(2);
		return total;
	
}


function numbersonly(myfield, e, dec)
{
var key;
var keychar;

if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
else
   return true;
keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) || 
    (key==9) || (key==13) || (key==27) || (key==46) )
   return true;

// numbers
else if ((("0123456789").indexOf(keychar) > -1))
   return true;

// decimal point jump
else if (dec && (keychar == "."))
   {
   myfield.form.elements[dec].focus();
   return false;
   }
else
   return false;
}
	
/*function numberofrows(tableID)
{
var table= document.getElementById(tableID);
var rowCount = table.rows.length;
return rowCount;
}*/

function getParm(string,parm) {
//this function is to separate the fieldname and value which are passed with url 
var passed = location.search.substring(1);
    // returns value of parm from string
    var startPos = string.indexOf(parm + "=");
    if (startPos > -1) {
        startPos = startPos + parm.length + 1;
        var endPos = string.indexOf("&",startPos);
        if (endPos == -1)
            endPos = string.length;
        return unescape(string.substring(startPos,endPos));
    }
    return '';
}



function b(){
 var  a= 0.00; 
      a=parseFloat(homeExpB)+ parseFloat(transportB)+ parseFloat(loanB)+ parseFloat(insuranceB)+
		parseFloat(savingsB)+ parseFloat(obligationsB)+ parseFloat(subscriptionsB)+parseFloat(foodDrinksB)+ 
		parseFloat(lifestyleB)+parseFloat(charityGiftsB)+parseFloat(eventsB)+parseFloat(childrenB)+ 
		parseFloat(healthB)+parseFloat(educationB)+parseFloat(miscellaneousB);
	
	 return a.toFixed(2);
	}


function allreset(){
 
 for(i=0; i<document.formCalculator.elements.length; i++)
 {
  	if(document.formCalculator.elements[i].type=="text")
	{
	document.formCalculator.elements[i].value=0;
	}
  }
  
}

/**************************** functions for pie chart*********************/


function myDrawFunctionB(expensesB,expensesDetails,expensesPercentageB)
{

var cnv = document.getElementById("myCanvas");
var jg = new jsGraphics(cnv);
//var jg2 = new jsGraphics("anotherCanvas"); //fillArc(X, Y, width, height, start-angle, end-angle);	
//home expense /Math.PI  //Math.abs(Math.cos(labelangle)))//Math.abs(Math.sin(labelangle)))
//Math.round(items[i] / pc * 10) / 10 + "%"; break;
var colors = ["#00a651", "#f66", "#00aeef", "#a67c52", "#ffcc00", "#662d91", "#8dc63f", "#92278f", "#f7941d", "#0054a6", "#ccc", "#f66", "#00aeef", "#a67c52", "#000000"];
for(i=0;i<15;i++){	
	if(i==0)
	{
	if(expensesB[i]>0)
		{
    jg.setColor(colors[i]);
	jg.fillArc(25,65,180,180,0,expensesB[i]);
	
	var x=110*Math.cos((360-expensesB[i]/2)*(Math.PI/180))+111;
	var y= 110*Math.sin((360-expensesB[i]/2)*(Math.PI/180))+145;
	
	//document.write("The value of X " + x);
	//document.write("The value of Y " + y);
	
	jg.setFont("Arial","10px",Font.BOLD);
	jg.setColor(colors[i]);
	jg.drawString(Math.floor(expensesPercentageB[i])+"%",x,y);
	 
    	}
	}
	else{
		 
	if(expensesB[i]!=0)
		  {
			  var startAngle=0, endAngle=0;
			  for(j=0;j<i+1;j++)
			  {
				if(j<i)
				startAngle = startAngle+expensesB[j];
				
				if(j==i)
				endAngle = startAngle+expensesB[j];				
			  }
			  //document.write(startAngle+"<br>");
			  //document.write(endAngle);
		  jg.setColor(colors[i]);	
		  jg.fillArc(25,65,180,180,startAngle,endAngle);
	
	var midAngle = 360-(startAngle+endAngle)/2;
	//var midAngle = 360-endAngle;
	
		var x= 110*Math.cos(midAngle*(Math.PI/180))+111;
    	var y= 110*Math.sin(midAngle*(Math.PI/180))+145;
	
	
	//document.write("Value of X" + x);
	//document.write("Value of Y" + y);
	jg.setFont("Arial","10px",Font.BOLD);
	jg.setColor(colors[i]);
	jg.drawString(Math.floor(expensesPercentageB[i])+"%",x,y);
		  }
		}
	}  
	
  //drawRect(X, Y, width, height);
  //jg.setColor("Green");
  //jg.drawRect(300,10,270,270);
  var j=0;
   jg.setColor("black");
  jg.setFont("Arial","10px",Font.BOLD);
  for(i=0;i<15;i++)
  {
	  j=j+17;
	  jg.setColor(colors[i]);
	  //fillRect(X, Y, width, height);  
	  jg.fillRect(320,j,6,6);
	  //jg.drawString("Some Text",20,50);
	  jg.drawString(expensesDetails[i],350,j-3);
	  jg.drawString(Math.floor(expensesPercentageB[i])+"%",450,j-3);
  }
    //programmer must call this function
  jg.paint();   // draws, in this case, directly into the document
  
}




