/*
========================================================================================================================================
    FILE NAME: minimum_insurance.js
    
    NOTE: THE JAVASCRIPT FILE PROTOTYPE.JS AND EFFECT.JS MUST BE INCLUDED FIRST IN THE HEADER FILES FOR THIS CODE TO WORK.
    
    THE BELOW CODE ANIMATES, VALIDATES, AND CALCULTES THE FORMS OF MINIMUM INSURANCE
=========================================================================================================================================
*/

Effect.ScrollTo = function(element) {
  var options = arguments[1] || { },
    scrollOffsets = document.viewport.getScrollOffsets(),
    elementOffsets = $(element).cumulativeOffset(),
    max = (window.height || document.body.scrollHeight || document.viewport.getScrollOffsets[0]) - document.viewport.getHeight();
    //max = getBrowserHeight() - document.viewport.getHeight();  

  if (options.offset) elementOffsets[1] += options.offset;
  return new Effect.Tween(null,
    scrollOffsets.top,
    elementOffsets[1] > max ? max : elementOffsets[1],
    options,
    function(p){ scrollTo(scrollOffsets.left, p.round()) }
  );
};

getBrowserHeight = function(){
		if( window.innerHeight && window.scrollMaxY ){ // Firefox 
			pageHeight = window.innerHeight + window.scrollMaxY;
		}else if( document.body.scrollHeight > document.body.offsetHeight ) // all but Explorer Mac
		{
			pageHeight = document.body.scrollHeight;
		}else{ // works in Explorer 6 Strict, Mozilla (not FF) and Safari 
			pageHeight = document.body.offsetHeight + document.body.offsetTop; 
		}
		return pageHeight;			
	}

/* START OF FUNCTION USED TO RETURN COMMA SEPERATED DIGITS    */  
  
  var commaFormat = function(n) 
  {
    var n1 = n.toString();
    var insPTR = 0;
    if (n1.indexOf(".") == -1) 
    {
        t1 = "";
        n1 = n1.split("");
    } 
    else 
    {
        t1 = n1.substr(n1.indexOf("."), n1.length);
        n1 = n1.substr(0, n1.indexOf(".")).split("");
    }
    n1= n1.reverse();
    for(i=0; i<n1.length; i++)
    {
        ++insPTR;
        if(i==2 && insPTR==3 && (i< n1.length-1))
        {
            t1=','+n1[i]+t1;
            insPTR=1;
        }
        else if(i>2 && (i< n1.length-1) && insPTR==4)
        {
             t1=','+n1[i]+t1;
             insPTR=1;
        }
        else
        {
            t1=n1[i] + t1;
        }
    }
    return t1;
  };


/* END OF FUNCTION USED TO RETURN COMMA SEPERATED DIGITS    */  
  
function formonFocus(formid)
{
    if(document.getElementById(formid))
    {
 	    var forminput=document.getElementById(formid).getElementsByTagName("input");
		for(i=0;i<forminput.length;i++)
		{
			var formtype=forminput[i].getAttribute("type");
			
			switch(formtype)
			{
				case "text":
					forminput[i].onfocus= function()
					{
					this.style.border='1px solid #FF6600';
	                this.style.background='#FFFFFF';
					}
					forminput[i].onblur=blurBorderChange;
					break;
				
		    }
	    }
	    
	    formtextbox=document.getElementById(formid).getElementsByTagName("textarea");
	    for(i=0; i<formtextbox.length; i++)
	    {
		    formtextbox[i].onfocus=activeBorderChange;
		    formtextbox[i].onblur=blurBorderChange;
	    }
	    formSelect=document.getElementById(formid).getElementsByTagName("select")
        for(i=0; i<formSelect.length; i++)
	    {
		    formSelect[i].onfocus=activeBorderChange;
		    formSelect[i].onblur=blurBorderChange;
	    }
    }
}

function blurBorderChange()
{
	this.style.border='1px solid #CCCCCC';
	//this.style.background='#FAFAFA';
	var pnode=this.parentNode.parentNode;
	if(this.title=='required')
	{
		
		if(this.value=="" || this.value==null)
		{
			writemessagewrong(pnode);
		}
		else
		{
			pnode.getElementsByTagName('td')[2].innerHTML='&nbsp;';
		}
	}
}

function removeRequired(formid)
 {
    if(document.getElementById(formid))
    {
            
 	    var forminput=document.getElementById(formid).getElementsByTagName("input");
	    for(i=0;i<forminput.length;i++)
	    {
		    var pnode=forminput[i].parentNode.parentNode;
		    if(pnode.getElementsByTagName('td')[2])
		    pnode.getElementsByTagName('td')[2].innerHTML='&nbsp;';
				
	    }
	   
	    formtextbox=document.getElementById(formid).getElementsByTagName("textarea")
	    for(i=0; i<formtextbox.length; i++)
	    {
		    var pnode=formtextbox[i].parentNode.parentNode;
		    pnode.getElementsByTagName('td')[2].innerHTML='&nbsp;';
	    }
//	    formSelect=document.getElementById(formid).getElementsByTagName("select")
//        for(i=0; i<formSelect.length; i++)
//	    {
//		    var pnode=formSelect[i].parentNode.parentNode;
//		    //alert(formSelect[i].parentNode.nodeName)
//		    pnode.getElementsByTagName('td')[2].innerHTML='&nbsp;';
//	    }
    }
    
}
 

var AccFundValue=false,
    perInvestment=true,
    initialInvestments,
    investmentFrequency,
    investmentPPeriod,
    expectedReturn,
    investmentYears,
    amountRequired,
    yearToMeet,
    periodicExpectedReturn,
    periodicInvestmentFrequency,
    numberofPeriods,
    interestRatePerPeriod,
    accumaltedFundValueInitialSaving,
    accumaltedFundValueYearly,
    totalFundValue,
    requiredInvestment,
    AccumalatedFundCon,
    PeriodicFundCon;
    
var onchangeCalculate;
    
    
/*

Formula :-
----------
                                                        
                                                        
            * accumaltedFundValueInitialSaving =  initialInvestments * (1 + interestRatePerPeriod)^numberofPeriods

            
                                                                                        
            * accumaltedFundValueYearly =   |   {investmentPPeriod * (1 + interestRatePerPeriod)^numberofPeriods} - investmentPPeriod    | * (1 + interestRatePerPeriod)
                                            |   ---------------------------------------------------------------------------------------- |
                                            |                   interestRatePerPeriod                                                    |
                                                                                                                    
            
            * totalFundValue = accumaltedFundValueInitialSaving + accumaltedFundValueYearly
            
                                     
                                     amountRequired * interestRatePerPeriod
            * requiredInvestment = -----------------------------------------------------------------------
                                        {(1 + interestRatePerPeriod)^(1 + numberofPeriods) } - (1 + interestRatePerPeriod)

*/


function displayInvestmentContainer()
{
    
    if($('AccFundValue').checked== true &&  $('perInvestment').checked== false)
    {
    
        resetAll();
        $('AccumalatedFundCon').style.display='block';
        $('PeriodicFundCon').style.display='none';
        $('initialInvestments').activate();
//        $('backFirst').style.display='none';
        AccFundValue=true;
        perInvestment=false;
    }
    
    if($('AccFundValue').checked== false &&  $('perInvestment').checked== true)
    {
        resetAll();
        $('AccumalatedFundCon').style.display='none';
        $('PeriodicFundCon').style.display='block';
        $('amountRequired').activate();
//        $('backFirst').style.display='none';
        AccFundValue=false;
        perInvestment=true;
    }
    
}


function calculateInvestments()
{
   
    
   investmentFrequency = $('investmentFrequency').options[$('investmentFrequency').selectedIndex].value;
   periodicInvestmentFrequency = $('periodicInvestmentFrequency').options[$('periodicInvestmentFrequency').selectedIndex].value;
   
   initialInvestments  = $('initialInvestments').value;
   if(initialInvestments=='')
        {
          
            $('initialInvestments').value='0';
            initialInvestments=0;
        }
   investmentPPeriod = $('investmentPPeriod').value;
   expectedReturn = $('expectedReturn').value;
   investmentYears = $('investmentYears').value;
   amountRequired= $('amountRequired').value;
   yearToMeet=$('yearToMeet').value;
   periodicExpectedReturn=$('periodicExpectedReturn').value;
    
   
   if(AccFundValue && !perInvestment)
   {
        $('AccFundValue_error').innerHTML='';
//        if(initialInvestments=='')
//        {
//            //$('initialInvestments_error').innerHTML='Enter a number';
//            $('initialInvestments').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
//            $('initialInvestments').activate();
//        }
//        else 
        if(investmentPPeriod=='')
        {
//             $('initialInvestments_error').innerHTML='';
//            $('investmentPPeriod_error').innerHTML='Enter a number';
            $('investmentPPeriod').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
             $('investmentPPeriod').activate();
        }
        else if(expectedReturn=='')
        {
//            $('investmentPPeriod_error').innerHTML='';
//            $('expectedReturn_error').innerHTML='Enter a number';
            $('expectedReturn').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
            $('expectedReturn').activate();
        }
        else if(investmentYears=='')
        {
//             $('expectedReturn_error').innerHTML='';
//            $('investmentYears_error').innerHTML='Enter a number';
            $('investmentYears').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
            $('investmentYears').activate();
        }
        else
        {
//             $('initialInvestments_error').innerHTML='';
//             $('investmentPPeriod_error').innerHTML='';
//             $('expectedReturn_error').innerHTML='';
//             $('investmentYears_error').innerHTML=''; 
            $('resultAccumalatedFund').style.display='block';
            onchangeCalculate=true;
             onchangeCalculateInvestments();
             /* Google Analytics Calculate Button Hit Code*/
            pageTracker._trackPageview("/planningtools/planningtools-achieving/wealthCalculator/calculateButtonHit");
           
        }
   }
   else if(!AccFundValue && perInvestment)
   {
         $('AccFundValue_error').innerHTML='';
       
        
        
        if(amountRequired=='')
        {
//            $('amountRequired_error').innerHTML='Enter a Number';
            $('amountRequired').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
            $('amountRequired').activate();
        }
        else if(yearToMeet=='')
        {
//            $('amountRequired_error').innerHTML='';
//            $('yearToMeet_error').innerHTML='Enter a Number';
            $('yearToMeet').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
            $('yearToMeet').activate();
        }
        else if(periodicExpectedReturn=='')
        {
//             $('yearToMeet_error').innerHTML='';
//             $('periodicExpectedReturn_error').innerHTML='Enter a Number';
                $('periodicExpectedReturn').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
            $('periodicExpectedReturn').activate();
        }
        
        
        /*
        
                                  amountRequired * interestRatePerPeriod
            * requiredInvestment = -----------------------------------------------------------------------
                                        {(1 + interestRatePerPeriod)^(1 + numberofPeriods) } - (1 + interestRatePerPeriod)
        
        */
        else
        {
//             $('amountRequired_error').innerHTML='';
//             $('yearToMeet_error').innerHTML='';
//             $('periodicExpectedReturn_error').innerHTML='';
            $('resultPeriodicInvestment').style.display='block';
            onchangeCalculate=true;
            onchangeCalculateInvestments();
            /* Google Analytics Calculate Button Hit Code*/
            pageTracker._trackPageview("/planningtools/planningtools-achieving/InvestmentCalculator/calculateButtonHit");
            
         }                       
   }
   
   
   else 
   {
    $('AccFundValue_error').innerHTML='Please select to calculate'
   }
}

function onchangeCalculateInvestments()
{   
    investmentFrequency = $('investmentFrequency').options[$('investmentFrequency').selectedIndex].value;
    periodicInvestmentFrequency = $('periodicInvestmentFrequency').options[$('periodicInvestmentFrequency').selectedIndex].value;
   var periodicInvestmentFrequencyText=$('periodicInvestmentFrequency').options[$('periodicInvestmentFrequency').selectedIndex].innerHTML;
   var investmentFrequencyText= $('investmentFrequency').options[$('investmentFrequency').selectedIndex].innerHTML;
   initialInvestments  = $('initialInvestments').value;
   investmentPPeriod = $('investmentPPeriod').value;
   expectedReturn = $('expectedReturn').value;
   investmentYears = $('investmentYears').value;
   amountRequired= $('amountRequired').value;
   yearToMeet=$('yearToMeet').value;
   periodicExpectedReturn=$('periodicExpectedReturn').value;
    if(initialInvestments=='')
    {
        
        $('initialInvestments').value='0';
        initialInvestments=0;
    }
           
   
    if(onchangeCalculate)
    {    
        if(AccFundValue && !perInvestment)
        {
//             if(!initialInvestments=='' && initialInvestments==0)
//            {
//                $('initialInvestments_error').innerHTML='Cannot be zero';
//                $('initialInvestments').activate();
//                $('resultAccumalatedFund').style.display='none';
//            }
//            else 
            if(investmentPPeriod==0 && !investmentPPeriod=='')
            {
                 $('initialInvestments_error').innerHTML='';
                $('investmentPPeriod_error').innerHTML='Value cannot be zero';
                 $('investmentPPeriod').activate();
                 $('resultAccumalatedFund').style.display='none';
            }
            else if(expectedReturn==0 && !expectedReturn=='')
            {
                $('investmentPPeriod_error').innerHTML='';
                $('expectedReturn_error').innerHTML='Value cannot be zero';
                $('expectedReturn').activate();
                $('resultAccumalatedFund').style.display='none';
            }
            else if(investmentYears==0 && !investmentYears=='')
            {
                 $('expectedReturn_error').innerHTML='';
                $('investmentYears_error').innerHTML='Value cannot be zero';
                $('investmentYears').activate();
                $('resultAccumalatedFund').style.display='none';
            }
//            else if(initialInvestments=='')
//            {
//                //$('initialInvestments_error').innerHTML='Enter a number';
//                $('initialInvestments').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
//                 $('initialInvestments_error').innerHTML='';
//                $('initialInvestments').activate();
//            }
            else if(investmentPPeriod=='')
            {
    //             $('initialInvestments_error').innerHTML='';
    //            $('investmentPPeriod_error').innerHTML='Enter a number';
                $('investmentPPeriod').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
                 $('investmentPPeriod_error').innerHTML='';
                 $('investmentPPeriod').activate();
                  $('resultAccumalatedFund').style.display='none';
            }
            else if(expectedReturn=='')
            {
    //            $('investmentPPeriod_error').innerHTML='';
    //            $('expectedReturn_error').innerHTML='Enter a number';
                $('expectedReturn').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
                $('expectedReturn_error').innerHTML='';
                $('expectedReturn').activate();
                 $('resultAccumalatedFund').style.display='none';
            }
            else if(investmentYears=='')
            {
    //             $('expectedReturn_error').innerHTML='';
    //            $('investmentYears_error').innerHTML='Enter a number';
                $('investmentYears').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
                $('investmentYears_error').innerHTML='';
                $('investmentYears').activate();
                 $('resultAccumalatedFund').style.display='none';
            }
             
             else
             {
                 $('AccFundValue_error').innerHTML='';
                  $('initialInvestments_error').innerHTML='';
                 $('investmentPPeriod_error').innerHTML='';
                 $('expectedReturn_error').innerHTML='';
                 $('investmentYears_error').innerHTML='';
                 $('resultAccumalatedFund').style.display='block';
                numberofPeriods=Number(investmentYears)*investmentFrequency;
                interestRatePerPeriod = (Number(expectedReturn)/Number(investmentFrequency))/100
                accumaltedFundValueInitialSaving=Number(initialInvestments)*(Math.pow((1+ Number(interestRatePerPeriod)),Number(numberofPeriods)))
                accumaltedFundValueInitialSaving = Math.round(accumaltedFundValueInitialSaving);
                $('accumaltedFundValueInitialSaving').innerHTML='Rs. ' + commaFormat(accumaltedFundValueInitialSaving);
                
                accumaltedFundValueYearly = ( ( ( Number(investmentPPeriod) * ( Math.pow((1+Number(interestRatePerPeriod)), numberofPeriods)) ) - investmentPPeriod )/ Number(interestRatePerPeriod) ) * (1+ Number(interestRatePerPeriod))
                accumaltedFundValueYearly=Math.round(accumaltedFundValueYearly);
                $('acc-fund').innerHTML=investmentFrequencyText;
                $('accumaltedFundValueYearly').innerHTML= 'Rs. '+commaFormat(accumaltedFundValueYearly)
                
                totalFundValue = Number(Number(accumaltedFundValueInitialSaving) + Number(accumaltedFundValueYearly));
                $('Resultyears').innerHTML=investmentYears+' ';
                $('totalFundValue').innerHTML='Rs. '+commaFormat(totalFundValue) ;
                Effect.ScrollTo('resultAccumalatedFund');
            }
        }
        if(!AccFundValue && perInvestment)
         {
           
            if(!amountRequired=='' && amountRequired==0)
            {
              $('amountRequired_error').innerHTML='Value cannot be zero';
                $('amountRequired').activate();
                 $('resultPeriodicInvestment').style.display='none';
            }
            else if(!yearToMeet=='' && yearToMeet==0)
            {
                $('amountRequired_error').innerHTML='';
                $('yearToMeet_error').innerHTML='Value cannot be zero';
                $('yearToMeet').activate();
                 $('resultPeriodicInvestment').style.display='none';
            }
            else if(!periodicExpectedReturn=='' && periodicExpectedReturn==0)
            {
                 $('yearToMeet_error').innerHTML='';
                 $('periodicExpectedReturn_error').innerHTML='Value cannot be zero';
                $('periodicExpectedReturn').activate();
                 $('resultPeriodicInvestment').style.display='none';
            }
           
            else if(amountRequired=='')
            {
    //            $('amountRequired_error').innerHTML='Enter a Number';
                $('amountRequired').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
                $('amountRequired_error').innerHTML='';
                $('resultPeriodicInvestment').style.display='none';
                $('amountRequired').activate();
            }
            else if(yearToMeet=='')
            {
    //            $('amountRequired_error').innerHTML='';
    //            $('yearToMeet_error').innerHTML='Enter a Number';
                $('yearToMeet').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
                $('yearToMeet_error').innerHTML='';
                $('resultPeriodicInvestment').style.display='none';
                $('yearToMeet').activate();
            }
            else if(periodicExpectedReturn=='')
            {
    //             $('yearToMeet_error').innerHTML='';
    //             $('periodicExpectedReturn_error').innerHTML='Enter a Number';
                    $('periodicExpectedReturn').parentNode.parentNode.getElementsByTagName('td')[2].innerHTML='* Required';
                $('periodicExpectedReturn_error').innerHTML='';
                $('resultPeriodicInvestment').style.display='none';
                $('periodicExpectedReturn').activate();
            }
            
         
             else
             {
             
                 $('AccFundValue_error').innerHTML='';
                 $('amountRequired_error').innerHTML='';
                 $('yearToMeet_error').innerHTML='';
                 $('periodicExpectedReturn_error').innerHTML='';
                 $('resultPeriodicInvestment').style.display='block';
                numberofPeriods = Number(yearToMeet) * Number(periodicInvestmentFrequency);
                interestRatePerPeriod = Number(periodicExpectedReturn)/Number(periodicInvestmentFrequency) / 100;
                  
                requiredInvestment = (Number(amountRequired) * Number(interestRatePerPeriod))/( (Math.pow(1+Number(interestRatePerPeriod), 1+Number(numberofPeriods))) - (1 + Number(interestRatePerPeriod)) );
                requiredInvestment=Math.round(requiredInvestment);
                $('req-period').innerHTML=periodicInvestmentFrequencyText
                $('requiredInvestment').innerHTML='Rs. '+ commaFormat(requiredInvestment);
                 Effect.ScrollTo('resultPeriodicInvestment');
            }
             
        }
     }
}

function resetAll()
{
    $("initialInvestments", 
        "investmentPPeriod", 
        "expectedReturn", 
        "investmentYears",
        "amountRequired", 
        "yearToMeet", 
        "periodicExpectedReturn").each(function(id)
                                    {
                                        id.value='';
                                    });
    
    $('investmentFrequency').selectedIndex=0;
    $('periodicInvestmentFrequency').selectedIndex=0;
    
    removeRequired('investmentCalcForm');
    
    
    
    $('AccumalatedFundCon').style.display='none';
    $('PeriodicFundCon').style.display='block';
    $('resultPeriodicInvestment').style.display='none';
    $('resultAccumalatedFund').style.display='none';
    
    $('AccFundValue_error').innerHTML='';
    
    $('initialInvestments_error').innerHTML='';
     $('investmentPPeriod_error').innerHTML='';
     $('expectedReturn_error').innerHTML='';
     $('investmentYears_error').innerHTML='';
     
     $('amountRequired_error').innerHTML='';
     $('yearToMeet_error').innerHTML='';
     $('periodicExpectedReturn_error').innerHTML='';
     
//     $('backFirst').style.display='inline';
     onchangeCalculate=false
     AccFundValue=false;
     perInvestment=true;
     
    
}