function toggleBudget(id, labId) 
{

   divElement = document.getElementById(id);
   divLabel   = document.getElementById(labId);
   if(divElement.style.display == 'none')
   {
        divElement.style.display = 'block';
        divLabel.innerHTML = '<img src="/admin/images/collapse.png" border="0"/>';
   }
   else
   {
        divElement.style.display = 'none';
        divLabel.innerHTML = '<img src="/admin/images/expand.png" border="0"/>';
   }
}                                                                                                                                                   

function loadBudget(id) {
                var url = location.href;
                url = url.replace(/#\w+/,"");
                if(url.match(/worksheet\.go/)) {
                	   url = url.replace(/\/worksheet\.go/,"/generalbudget.go");
                }
                if(url.match(/delete_budget=\d+/)) {
                       url = url.replace(/delete_budget=\d+/, "");
                }
                                     
                if(url.match(/load_budget=\d+/)) {
                    url = url.replace(/load_budget=\d+/, "");
                }
                if(url.match(/&&/)) {
                	   url = url.replace(/&&/, "&");
                }
    			if(url.match(/&action=new/)) {
                    url = url.replace(/&action=new/, "");
                }
                window.location = url + "&load_budget=" + id;
}

function deleteBudget(id){
        if( confirm("Do you want to delete copy of this budget?") ) {
        var url = location.href;
        url = url.replace(/#\w+/,"");
    
        if(url.match(/worksheet\.go/)) {
            url = url.replace(/\/worksheet\.go/,"/generalbudget.go");
        }
        if(url.match(/&&/)) {
            url = url.replace(/&&/, "&");
        }
        if(url.match(/load_budget=\d+/)) {
            url = url.replace(/load_budget=\d+/, "");
        }
                    
        if(url.match(/delete_budget=\d+/)) {
            url = url.replace(/delete_budget=\d+/, "");
        }
        window.location = url + "&delete_budget=" + id;
        }
     }

function submitAndDisable(f,id) {
      document.getElementById(id).innerHTML = '<i>Saving...</i>';
      f.submit();
}


function stripCurrencyChars(num) {
    num = num.toString();

    num = num.replace(/\$/g, "");
    num = num.replace(/\,/g, "");
    num = num.replace(/\s/g, "");
    return num;
}

function formatCurrencyElement(element) {
   element.value = formatCurrency(element.value);
}

function formatCurrency(str) {
    str = stripCurrencyChars(str);
    str = str.replace(/\.+/,'.');
    
    var lhs     = parseInt(str).toString(); // the LHS (left-hand side)
    var lhsEnd  = lhs.length - 1;
    var rhs     = "00"; // the RHS (right-hand side)
    var decPos  = str.search(/\./); // position of the decimal point

    
    if (decPos > -1) {
        rhs = str.substr(decPos + 1);
    }
    
    if (rhs.length > 2) {
        rhs = rhs.substr(0, 2);
    }

    if (rhs.length == 0) {
        rhs = "00";
    }

    if (rhs.length < 2) {
        rhs = rhs + "0";
    }

    var newStr = "";
    var count = 0;

    for (var i = lhsEnd; i >= 0; i--) {
        if (count == 3) {
            newStr = "," + newStr;
            count = 0;
        }

        newStr = lhs.charAt(i) + newStr;
        count++;
    }

    newStr = newStr + "." + rhs;
    return newStr;
}

function validateNumeric(strValue) {
    //var objRegExp = /(^-?\d\d*\.\d{1,2})|(^-?\d\d*$)|(^-?\.\d{1,2})/;
    //return objRegExp.test(strValue);
    
    return !isNaN(parseFloat(stripCurrencyChars(strValue)));
}

function total_budget(columns, type, category) {
   var mcfloan = 0;
   var mcfinc = 0;
   var grandtotal = 0;
      for (var j = 1; j <= columns; j++)
        {
        var totincome = 0;
        var totexpense = 0;
        var totloan = 0;
        var totcash = 0;
        var subcat = 0;
        var isc_con = 'Contributed';
        var isc_ear = 'Earned';
        var listexpense = '';
        var patternincome = 'col' + j + '_amount_Income';
        var patternincomemcf = 'col' + j + '_amount_Income_Contributed_4';
        var patternexpense = 'col' + j + '_amount_Expenses';
        var patternloan = 'col' + j + '_amount_Loans';
        var patterncash = 'col' + j + '_amount_Cash';
        var patternloanmcf = 'col' + j + '_amount_Loans_None_14';
        var subcatpattern = 'col' + j + '_amount_' + type + '_' + category;
        var the_number = 0;
        for (var i = 0; i < document.frm.elements.length; i++) 
          {
            if ((document.frm.elements[i].name.search(patternincome) > -1)) 
              {
                if (document.frm.elements[i].value != '') 
                  {
                   the_number = stripCurrencyChars(document.frm.elements[i].value);
                  if (validateNumeric(the_number)) 
                    {
                      document.frm.elements[i].value = formatCurrency(the_number);
                      totincome = totincome + Number(the_number);
                      if ((document.frm.elements[i].name.search(patternincomemcf) > -1))
                       {
                        mcfinc = mcfinc +  Number(the_number);
                       }
                    } else 
                    {
                      alert(document.frm.elements[i].value + " is not a valid Number");
                    }     
                  }    
              }                  
            if ((document.frm.elements[i].name.search(patternexpense) > -1)) 
             {
              if (document.frm.elements[i].value != '') 
               {
                the_number = stripCurrencyChars(document.frm.elements[i].value);
                if (validateNumeric(the_number)) 
                 {
                  document.frm.elements[i].value = formatCurrency(the_number);
                  totexpense = totexpense + Number(the_number);
                 } else 
                 {
                  alert(document.frm.elements[i].value + "is not a valid Number");
                 }     
               }    
             }        
            if ((document.frm.elements[i].name.search(patternloan) > -1)) 
             {
              if (document.frm.elements[i].value != '') 
               {
                the_number = stripCurrencyChars(document.frm.elements[i].value);
                if (validateNumeric(the_number)) 
                 {
                  document.frm.elements[i].value = formatCurrency(the_number);
                  totloan = totloan + Number(the_number);
                  if ((document.frm.elements[i].name.search(patternloanmcf) > -1))
                   {
                    mcfloan = mcfloan +  Number(the_number);
                   }
                 } else 
                 {
                  alert(document.frm.elements[i].value + "is not a valid Number");
                 }
               }
             }
            if ((document.frm.elements[i].name.search(patterncash) > -1)) 
             {
              if (document.frm.elements[i].value != '') 
               {
                the_number = stripCurrencyChars(document.frm.elements[i].value);
                if (validateNumeric(the_number)) 
                 {
                  document.frm.elements[i].value = formatCurrency(the_number);
                  totcash = totcash + Number(the_number);
                 } else 
                 {
                  alert(document.frm.elements[i].value + "is not a valid Number");
                 }
               }
             }
            if ((document.frm.elements[i].name.search(subcatpattern) > -1)) 
             {
              if (document.frm.elements[i].value != '') 
               {
                the_number = stripCurrencyChars(document.frm.elements[i].value);
                if (validateNumeric(the_number)) 
                 {
                  document.frm.elements[i].value = formatCurrency(the_number);
                  subcat = subcat + Number(the_number);
                 } else 
                 {
                  alert(document.frm.elements[i].value + "is not a valid Number");
                 }     
               }    
             }        
          }
 
          var checkExists = document.getElementById('col'+j+'_totalIncome');
          if((checkExists)){
            document.getElementById('col'+j+'_totalIncome').value = formatCurrency(totincome);
          }

          checkExists = document.getElementById('col'+j+'_totalExpenses');
          if((checkExists)){
            document.getElementById('col'+j+'_totalExpenses').value = formatCurrency(totexpense);
          }
          
          checkExists = document.getElementById('col'+j+'_totalLoans');
          if((checkExists)){
            document.getElementById('col'+j+'_totalLoans').value = formatCurrency(totloan);
          }
          
          checkExists = document.getElementById('col'+j+'_subtotal_'+type+'_'+category);
          if((checkExists)){
            checkExists.value = formatCurrency(subcat);
          }
 
          if (type == 'Income') {
             checkExists = document.getElementById('col'+j+'_subpercent_'+type+'_'+category);
             if(checkExists) {
               document.getElementById('col'+j+'_subpercent_'+type+'_'+category).value = Math.round(100*(subcat/totincome));
             }
             if (category == isc_con) {
               checkExists = document.getElementById('col'+j+'_subpercent_'+type+'_'+isc_ear);
               if(checkExists) {
                 document.getElementById('col'+j+'_subpercent_'+type+'_'+isc_ear).value = Math.round(100-(100*(subcat/totincome)));
               }
             } else {
               checkExists = document.getElementById('col'+j+'_subpercent_'+type+'_'+isc_con);
               if(checkExists) {
                 document.getElementById('col'+j+'_subpercent_'+type+'_'+isc_con).value = Math.round(100-(100*(subcat/totincome)));
               }
             }  
           } else {
             checkExists = document.getElementById('col'+j+'_subpercent_'+type+'_'+category);
             if(checkExists) {
               document.getElementById('col'+j+'_subpercent_'+type+'_'+category).value = Math.round(100*(subcat/totexpense));
             }
           }
           grandtotal = grandtotal + totincome + totloan;
           if (j == 2){
             checkExists = document.getElementById('cash_proposed_percent');
             if(checkExists) {
               document.getElementById('cash_proposed_percent').value = Math.round(100*(totcash/totexpense));
             }
           }
        }
  
          checkExists = document.getElementById('MCF_total');
          if((checkExists)){
            checkExists.value = formatCurrency(mcfinc + mcfloan);
          }
          
          checkExists = document.getElementById('MCF_total_grant');
          if((checkExists)){
            checkExists.value = formatCurrency(mcfinc);
          }

          checkExists = document.getElementById('MCF_total_loan');
          if((checkExists)){
            checkExists.value = formatCurrency(mcfloan);
          }
 
          checkExists = document.getElementById('income_loan_total');
          if((checkExists)){
            checkExists.value = formatCurrency(grandtotal);
          }
          
          checkExists = document.getElementById('project_budget_total');
          if((checkExists)){
            checkExists.value = formatCurrency(grandtotal);
          }
          
}

function addLine(linenumber,type,category) 
  {
    var button = linenumber - 1;
    document.getElementById('line_'+linenumber+'_'+type+'_'+category).style.display = 'block';
    document.getElementById('add_'+button+'_'+type+'_'+category).style.display = 'none';
  }

function total_pend_budget(columns, type, category) {
  for (var j = 1; j <= columns; j++)
      {
        var totincomepend = 0;
        var totexpensepend = 0;
        var totincome = 0;
        var totexpense = 0;
        var totloan = 0;
        var subcat = 0;
        var subcatpend = 0;
        var pending = '_pending';
        var percent = '_percent';
        var patternincome = 'col' + j + '_amount_Income';
        var patternexpense = 'col' + j + '_amount_Expenses';
        var patternloan = 'col' + j + '_amount_Loans';
        var subcatpattern = 'col' + j + '_amount_' + type + '_' + category;
        for (var i = 0; i < document.frm.elements.length; i++) 
          {
            if ((document.frm.elements[i].name.search(patternincome) > -1)) 
              {
                if (document.frm.elements[i].value != '') 
                  {
                   document.frm.elements[i].value = stripCurrencyChars(document.frm.elements[i].value);
                  if (validateNumeric(document.frm.elements[i].value)) 
                    { 
                      if ((document.frm.elements[i].name.search(pending) > -1)) {
                        totincomepend = totincomepend + Number(document.frm.elements[i].value);
                      } else {
                        totincome = totincome + Number(document.frm.elements[i].value);
                      }
                    } else 
                    {
                      alert(document.frm.elements[i].value + " is not a valid Number");
                    }     
                  }    
              }                  
            if ((document.frm.elements[i].name.search(patternexpense) > -1)) 
             {
              if (document.frm.elements[i].value != '') 
               {
                document.frm.elements[i].value = stripCurrencyChars(document.frm.elements[i].value);
                if (validateNumeric(document.frm.elements[i].value)) 
                 {
                   if ((document.frm.elements[i].name.search(pending) > -1)) {
                        totexpensepend = totexpensepend + Number(document.frm.elements[i].value);
                      } else {
                        totexpense = totexpense + Number(document.frm.elements[i].value);
                      }
                 } else 
                 {
                  alert(document.frm.elements[i].value + "is not a valid Number");
                 }     
               }    
             }        
            if ((document.frm.elements[i].name.search(patternloan) > -1)) 
             {
              if (document.frm.elements[i].value != '') 
               {
                document.frm.elements[i].value = stripCurrencyChars(document.frm.elements[i].value);
                if (validateNumeric(document.frm.elements[i].value)) 
                 {
                  totloan = totloan + Number(document.frm.elements[i].value);
                 } else 
                 {
                  alert(document.frm.elements[i].value + "is not a valid Number");
                 }
               }
             }
            if ((document.frm.elements[i].name.search(subcatpattern) > -1)) 
             {
              if (document.frm.elements[i].value != '') 
               {
                document.frm.elements[i].value = stripCurrencyChars(document.frm.elements[i].value);
                if (validateNumeric(document.frm.elements[i].value)) 
                 {
                   if ((document.frm.elements[i].name.search(pending) > -1)) {
                        subcatpend = subcatpend + Number(document.frm.elements[i].value);
                      } else {
                        subcat = subcat + Number(document.frm.elements[i].value);
                      }
                 } else 
                 {
                  alert(document.frm.elements[i].value + "is not a valid Number");
                 }     
               }    
             }
            if ((document.frm.elements[i].name.search(percent) > -1))  
             {
              if (validateNumeric(document.frm.elements[i].value)) {
               } else {
                 alert(document.frm.elements[i].value + "is not a valid Number");
               } 
             }
          }
 
          var checkExists = document.getElementById('col'+j+'_totalIncome_commit');
          if((checkExists)){
            document.getElementById('col'+j+'_totalIncome_commit').value = totincome;
          }
          
          var checkExists = document.getElementById('col'+j+'_totalIncome_pend');
          if((checkExists)){
            document.getElementById('col'+j+'_totalIncome_pend').value = totincomepend;
          }

          checkExists = document.getElementById('col'+j+'_totalExpenses_commit');
          if((checkExists)){
            document.getElementById('col'+j+'_totalExpenses_commit').value = totexpense;
          }

          checkExists = document.getElementById('col'+j+'_totalExpenses_pend');
          if((checkExists)){
            document.getElementById('col'+j+'_totalExpenses_pend').value = totexpensepend;
          }
          
          checkExists = document.getElementById('col'+j+'_totalLoans');
          if((checkExists)){
            document.getElementById('col'+j+'_totalLoans').value = totloan;
          }
          
          checkExists = document.getElementById('col'+j+'_subtotal_'+type+'_'+category);
          if((checkExists)){
            document.getElementById('col'+j+'_subtotal_'+type+'_'+category).value = subcat;
          }
 
          checkExists = document.getElementById('col'+j+'_subtotal_pend_'+type+'_'+category);
          if((checkExists)){
            document.getElementById('col'+j+'_subtotal_pend_'+type+'_'+category).value = subcatpend;
          }
 
          if (type == 'Income') {
             checkExists = document.getElementById('col'+j+'_subpercent_'+type+'_'+category);
             if(checkExists) {
               document.getElementById('col'+j+'_subpercent_'+type+'_'+category).value = Math.round(100*(subcat/totincome));
             }
           } else {
             checkExists = document.getElementById('col'+j+'_subpercent_'+type+'_'+category);
             if(checkExists) {
               document.getElementById('col'+j+'_subpercent_'+type+'_'+category).value = Math.round(100*(subcat/totexpense));
             }
           }
        }
  
}


