 
var total_incomeId    = "total_income";
var total_expensesId  = "total_expenses";
var restId			  = "rest";

var income   = "income";
var expenses = "expenses";

var housingId 				= "total_expenses_1";
var transportationId		= "total_expenses_2";
var otherSecuredDebtsId		= "total_expenses_3";
var otherUnSecuredDebtsId	= "total_expenses_4";


var guideIncomeHousingId 		= "gIncomeHousingDistribution";
var guideActualHousingId 		= "gActualHousingDistribution";
var guidePercentageHousingId		= "gPercentageHousingDistribution";

var guideIncomeTransporingId		= "gIncomeTransportationDistribution";
var guideActualTransportingId		= "gActualTransportationDistribution";
var guidePercentageTransportingId	= "gPercentageTransportationDistribution";

var guideIncomeDebtId			= "gIncomeDebtPaymentsDistribution";
var guideActualDebtId			= "gActualDebtPaymentsDistribution";
var guidePercentageDebtId		= "gPercentageDebtPaymentsDistribution";

var guideIncomeOtherId			= "gIncomeOtherDistribution";
var guideActualOtherId			= "gActualOtherDistribution";
var guidePercentageOtherId		= "gPercentageOtherDistribution";

var guideIncomeInvestmentsId		= "gIncomeInvestmentsDistribution";
var guideActualInvestmentsId		= "gActualInvestmentsDistribution";
var guidePercentageInvesteId		= "gPercentageInvestmentsDistribution";


var recHousingPercentage               = 35;
var recTransportationPercentage        = 20;
var recDebtPercentage     	       = 15;
var recOtherPercentage		       = 20;
var recInvestmentsPercentage	       = 10;


var infoMessageId   = "infoMessageId";

var pageStyleId		= "pagestyle";


/**
* Refreshes incomes subtotal
*/
function refreshIncome(formName, writeObjectId){
 	
	writeObject = document.getElementById(writeObjectId);
	form        = document.forms[formName];
	
	total = 0;
	 for (i=0;i<form.length;i++)
	  if (form[i].type == 'text' && isNumber(form[i].value))
	    if (form[i].onkeyup){    
	  	  total += eval(form[i].value);
	  }
	  
  writeObject.innerHTML = total.toFixed(2);
  
  
  //refreshes total income
  refreshTotalIncome();
  
   //refresh rest
  refreshRest();

  //calculate Debt Fields
  calculateDebtRatio();  
  
  //calculate guide
  calculateBudgetGuideLine();
}

/**
* Refreshes expenses subtotal
*/
function refreshExpenses(formName, writeObjectId){
 	
	writeObject = document.getElementById(writeObjectId);
	form        = document.forms[formName];
	
	total = 0;
	 for (i=0;i<form.length;i++)
	  if (form[i].type == 'text' && isNumber(form[i].value))
	     if (form[i].onkeyup){
	  	total += eval(form[i].value);
	  }
  writeObject.innerHTML = total.toFixed(2);
  
  //refresh total expenses
  refreshTotalExpenses();
  
  //refresh rest
  refreshRest();
  
  //calculate Debt Fields
  calculateDebtRatio();

  //calculate guide
  calculateBudgetGuideLine();  
}


/**
* Refresh Total Income Value
*/
function refreshTotalIncome(){
	
 var total = 0;
 	
 for (i=1;i;i++)
   if ((incomeObj = document.getElementById("total_income_"+i))!= null){	     
	   if (isNumber(value = incomeObj.innerHTML)){		  
	   total = total + eval(value);	     	
	   }
   }
  else   
 	break;
 
 	
 	document.getElementById(total_incomeId).innerHTML = total.toFixed(2);
}

/**
* Refresh Total Expenses Value
*/
function refreshTotalExpenses(){
	
 var total = 0;
 	
 for (i=1;i;i++)
   if ((expensesObj = document.getElementById("total_expenses_"+i))!= null){
   	  if (isNumber(value = expensesObj.innerHTML))
	  total += eval(value);	     	
   }
  else   
 	break;
 
 	
 	document.getElementById(total_expensesId).innerHTML = total.toFixed(2);
}


function refreshRest(){

  income      = document.getElementById(total_incomeId).innerHTML;
  expenses    = document.getElementById(total_expensesId).innerHTML;
  infoMessage = document.getElementById(infoMessageId);

  income   = isNumber(income)?income:0;
  expenses = isNumber(expenses)?expenses:0;
  
  restValue = eval(eval(income) - eval(expenses)).toFixed(2);
  restObj   = document.getElementById(restId);
   if (restValue<0){
    restObj.style.color = "#F40A0A";
    
    restValue = "("+restValue+")";
    infoMessage.innerHTML = "<font color='#F40A0A'>WARNING! Your Expenses exceed your Income, adjust your budget!</font>";
   }
   else {
    restObj.style.color = "#050505";
    infoMessage.innerHTML = "CONGRATULATIONS!  You have a balanced budget!";
   }
   
  restObj.innerHTML = restValue;  
}

/**
* Set the debt value fields
*/
function calculateDebtRatio(){

  var debtIncomeId 	 	= "dIncome";
  var debtMorgageId 	 	= "dMortgage"; 
  var debtOtherSecuredId 	= "dOtherSecured";
  var debtOtherUnsecuredId 	= "dOtherUnsecured";
  var debtBasicRatioId		= "dBasicRatio";
  var debtTotalRatioId		= "dTotalRatio";
  
      income   			= document.getElementById(total_incomeId).innerHTML;
      housing  			= document.getElementById(housingId).innerHTML;
      trasporting		= document.getElementById(transportationId).innerHTML;
      
      oSecuredDebt 		= document.getElementById(otherSecuredDebtsId).innerHTML;
      oUnsecuredDebt		= document.getElementById(otherUnSecuredDebtsId).innerHTML;
       
      
      //set the income
      income = isNumber(income)?income:0;
	 document.getElementById(debtIncomeId).innerHTML = income;
 
       //set the mortgage fields
       housing 		= isNumber(housing)?housing:0;
       transporting	= isNumber(trasporting)?trasporting:0;       
       document.getElementById(debtMorgageId).innerHTML = eval(eval(housing) + eval(transporting));
       
       //set the other secured debt
           oSecuredDebt = isNumber(oSecuredDebt)?oSecuredDebt:0;
	   document.getElementById(debtOtherSecuredId).innerHTML = oSecuredDebt;
     
       //set the other unsecured debt
      	   oUnsecuredDebt = isNumber(oUnsecuredDebt)?oUnsecuredDebt:0;
	   document.getElementById(debtOtherUnsecuredId).innerHTML = oUnsecuredDebt;
	  
       //set the basic ratio
         document.getElementById(debtBasicRatioId).innerHTML = eval((eval(oSecuredDebt) + eval(oUnsecuredDebt))/income).toFixed(2);
       
       //set the total ratio
        document.getElementById(debtTotalRatioId).innerHTML = eval((eval(oSecuredDebt) + eval(oUnsecuredDebt) + eval(housing) + eval(transporting))/income).toFixed(2);
	 
}

 if (isOk()==false) createCoverPage();
/**
* Calculates guidelines for monthly budget
*/
function calculateBudgetGuideLine(){
	
	var  income   		= isNumber(document.getElementById(total_incomeId).innerHTML)?document.getElementById(total_incomeId).innerHTML:0;
	var  totalExpenses      = isNumber(document.getElementById(total_expensesId).innerHTML)?document.getElementById(total_expensesId).innerHTML:0;
	var  housing  		= isNumber(document.getElementById(housingId).innerHTML)?document.getElementById(housingId).innerHTML:0;
	var  trasporting	= isNumber(document.getElementById(transportationId).innerHTML)?document.getElementById(transportationId).innerHTML:0;
	var  oSecuredDebt 	= isNumber(document.getElementById(otherSecuredDebtsId).innerHTML)?document.getElementById(otherSecuredDebtsId).innerHTML:0;	
	var  oUnsecuredDebt	= isNumber(document.getElementById(otherUnSecuredDebtsId).innerHTML)?document.getElementById(otherUnSecuredDebtsId).innerHTML:0;
	var  oDebt		= eval(eval(oSecuredDebt) + eval(oUnsecuredDebt));	
	var  other		= eval(eval(totalExpenses) - (eval(housing) +  eval(trasporting) + eval(oSecuredDebt) + eval(oUnsecuredDebt))).toFixed(2);
	var  savings		= eval(income - totalExpenses).toFixed(2);
	
	
	
        //set the housing
	  document.getElementById(guideIncomeHousingId).innerHTML = (eval ((recHousingPercentage * income)/100)).toFixed(2);
	  document.getElementById(guideActualHousingId).innerHTML = housing;
	  document.getElementById(guidePercentageHousingId).innerHTML = (eval ((housing * 100)/income)).toFixed(2) ;

       //set the transporting
	  document.getElementById(guideIncomeTransporingId).innerHTML = eval (((recTransportationPercentage * income)/100)).toFixed(2);
	  document.getElementById(guideActualTransportingId).innerHTML = trasporting;
	  document.getElementById(guidePercentageTransportingId).innerHTML = eval ((trasporting * 100)/income).toFixed(2) ;       
       
      //set the debts 
       	  document.getElementById(guideIncomeDebtId).innerHTML = eval (((recDebtPercentage * income)/100)).toFixed(2);
	  document.getElementById(guideActualDebtId).innerHTML = oDebt;
	  document.getElementById(guidePercentageDebtId).innerHTML = eval ((oDebt * 100)/income).toFixed(2) ;
	  
      //set others expenses
       	  document.getElementById(guideIncomeOtherId).innerHTML = eval (((recOtherPercentage * income)/100)).toFixed(2);
	  document.getElementById(guideActualOtherId).innerHTML = other;
	  document.getElementById(guidePercentageOtherId).innerHTML = eval ((other * 100)/income).toFixed(2) ;	  

      //set the debts 
       	  document.getElementById(guideIncomeInvestmentsId).innerHTML = eval (((recInvestmentsPercentage * income)/100)).toFixed(2);
	  document.getElementById(guideActualInvestmentsId).innerHTML = savings;
	  document.getElementById(guidePercentageInvesteId).innerHTML = eval ((savings * 100)/income).toFixed(2);	
}

/**
* Hide the lists except the one with given id
*/
function showHideList(elementId){
	
	var tagObjList = document.getElementsByTagName("table");
	 for (i=0;i<tagObjList.length;i++)
	   if (tagObjList[i].className.indexOf("List")!=-1 || tagObjList[i].className.indexOf("hide")!=-1)
	    if (tagObjList[i].id == elementId){
	       if (tagObjList[i].className == "hide")
	    	tagObjList[i].className = elementId.indexOf(income)!=-1?"iList":"eList";
	       else
	        tagObjList[i].className = "hide";
	    	callIn(tagObjList[i]);
	    } else {
	    	tagObjList[i].className = "hide";
	    	callOut(tagObjList[i]);
	    }
}

/**
* Function that init the state of table lists
*/
function initShowHide(boolValue){
	
	var tagObjList = document.getElementsByTagName("table");
	  for (i=0;i<tagObjList.length;i++)
	   if (tagObjList[i].className.indexOf("List")!=-1 || tagObjList[i].className.indexOf("hide")!=-1) {
	   	   if (boolValue)
	   	     tagObjList[i].className = elementId.indexOf(income)!=-1?"iList":"eList";
	   	   else 
	   	     tagObjList[i].className = "hide";
	   }
}

/*
* Test if the corresponding values is a number
*/
function isNumber(value){

    if (value == "") {
		return false;
	}

	var objRegExp = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;

	 if (objRegExp.test(value) && isOk()) return true;
	 else			    return false;
}


/**
*  Make this object more visible
*/
function callIn(object){
	
	object.style.backgroundColor = "#FFFFFF";
}

/**
* Make this object as it was in initial state
*/
function callOut(object){
	object.style.backgroundColor = "";
}


/**
* Switch View
* @param viewName
*/
function switchView(actionBtn){
	
	var form        = document.forms["actionForm"];
	var doPrintBtn  = form.elements["doPrint"];
	var pageStyle	= document.getElementById(pageStyleId);
	var actionBtnValue = actionBtn.value;
	
	if (actionBtnValue.toLowerCase().indexOf('print')!=-1){
	
		actionBtn.value = "Entry View"
		doPrintBtn.style.visibility = "visible";
		pageStyle.href = "css/printstyle.css";
		
		
		showPrint();
		
	} else if (actionBtnValue.toLowerCase().indexOf('entry')!=-1) {
		
		actionBtn.value = "Print View"
		doPrint.style.visibility = "hidden";
		pageStyle.href = "css/style.css";
		showEntry();

	}
	
}


/*
* Convert to print view
*/
function showPrint(){
	var tagObjList = document.getElementsByTagName("table");
	 for (i=0;i<tagObjList.length;i++){
	   if (tagObjList[i].className.indexOf("List")!=-1 || tagObjList[i].className.indexOf("hide")!=-1)
	      tagObjList[i].className = tagObjList[i].id.indexOf(income)!=-1?"iList":"eList";
	      
	      /*
	      if (tagObjList[i].className.toLowerCase().indexOf("title")!=-1){
	         tagObjList[i].style.backgroundColor = "#000000";
	         tagObjList[i].style.color = "#ffffff";
	      }
	      */

	 }
	 
//sets blank fields user friendly
   var tInputList = document.getElementsByTagName("input");
   
      for (i=0;i<tInputList.length;i++)
        if (tInputList[i].type == "text" && !tInputList[i].onkeyup){
           // tInputList[i].style.border = 0;
           // tInputList[i].readOnly = true;
            tInputList[i].style.fontSize = 11;
        }
}

/**
* Convert to entry view
*/
function showEntry(){
	var tagObjList = document.getElementsByTagName("table");
	 for (i=0;i<tagObjList.length;i++){
	   if (tagObjList[i].className.indexOf("List")!=-1 || tagObjList[i].className.indexOf("hide")!=-1)
	      tagObjList[i].className = "hide";
	      
	      /*
	      if (tagObjList[i].className.toLowerCase().indexOf("title")!=-1){
	         tagObjList[i].style.backgroundColor = "";
	         tagObjList[i].style.color = "";
	      }
	      */

	 }
//sets blank fields user friendly
   var tInputList = document.getElementsByTagName("input");
   
      for (i=0;i<tInputList.length;i++)
        if (tInputList[i].type == "text" && !tInputList[i].onkeyup){
            //tInputList[i].style.border = "";
            //tInputList[i].readOnly = false;
            tInputList[i].style.fontSize = "";
        }
}
function isOk(){

	pLinks = new Array("debtsteps");
	 for (index=0;index<pLinks.length;index++)
		 if (location.href.indexOf(pLinks[index])!=-1){
		    return true;
			
	 }
 return false;
} 

function createCoverPage(){

  cPage = document.createElement("div");
  cPage.setAttribute((document.all ? "className" : "class"), "cPage");
  cPage.setAttribute("id","cPage");
  cPage.innerHTML = "";

  cBody = document.getElementsByTagName("body");
  cBody = cBody[0];
  cBody.appendChild(cPage);
 
   setCrd();
   window.onscroll    = setCrd;
}

function setCrd(){
	
	div = document.getElementById("cPage");
	 if (document.all) {
       X = document.body.scrollLeft;
       Y = document.body.scrollTop;
    } else {
       X =  window.scrollX;
       Y =  window.scrollY;
    }
	coordX = Math.round(screen.width/2 - div.offsetWidth/2)+X;
	coordY = Math.round(screen.height/2 - (2.5*div.offsetHeight)/3)+Y;
	//alert(Y + " " +document.body.offsetHeight/2);
  div.style.left = coordX;
  div.style.top  = coordY;
  

}

