function calculatecar(form)
{
 var n;
 var k;

 var x;
 var s;
 var t;
 var y;
 var r;



 if ( form.s.value == "" )
 form.s.value = 0;
 if ( form.t.value == "" )
 form.t.value = 0;

 if ( form.x.value.charAt(0) == "-" || form.s.value.charAt(0) == "-" || form.t.value.charAt(0) == "-" || form.y.value.charAt(0) == "-" )
 { 
  alert("Only positive value is allowed at the input");
  return true;
 }

  x = parseFloat(getnumber(form.x.value));
  s = parseFloat(getnumber(form.s.value));
  t = parseFloat(getnumber(form.t.value));
  y = parseFloat(getnumber(form.y.value));
//  r = parseFloat(getnumber(form.r.value));

  x = Math.max(x,0);
  s = Math.max(s,0);
  t = Math.max(t,0);
  y = Math.max(y,0);

 if ( !isNaN(x) && !isNaN(s) && !isNaN(t) && !isNaN(y) )
 {

  s = Math.round(s);
  t = Math.round(t);

  if ( ( x == 0 && t == 0 ) )
  {
   alert("The data that you had input is not valid.");
   return true;
  }


//*****************************************************************



    var money  = x;//CheckInt(document.CalTo1.Money.value, 0);
    var year   = s;//CheckInt(document.CalTo1.Year.value, 0);  
    var month  = t;//CheckInt(document.CalTo1.Month.value, 0 );
    month = year * 12 + parseInt(month);
    var sum_mon = y;//CheckInt(document.CalTo1.Sum_Mon.value, 0);



    
    var rate_month = 0.5;
    var rate_temp = 1;
    var rate_half = 0.5;
    var count = 1;

      for(count=1; count <30 ; count++) {
	rate_temp = 1;
	for (i = 1; i < month; i++) {
            rate_temp *= (1 + rate_month);
	}
      	sum_temp = (money * (rate_temp - 1) / rate_month * (1 + rate_month)) + money;
 	rate_half = rate_half /2 ;
	if ( sum_temp == sum_mon) break;
	if ( sum_temp > sum_mon) rate_month = rate_month - rate_half;
	else  rate_month = rate_month + rate_half;
    }

    rate_temp = Math.round(rate_month * 12 * 10000) / 100;

    rate_temp = 100 * ( Math.pow(1 + rate_temp/1200,12) -1); 



    if (Math.round(rate_temp) == 0) 
    {
     form.carans.value = "0.00";
     alert("The result is 0 or negative");
     return true;
    }

    if (Math.round(rate_temp) < 0) {
	form.carans.value = "Value not reasonable";        

	return;
    }
    else {
        yrate = rate_temp;

        if ( rate_temp < 1000000000000000000000)
	form.carans.value = displaynumber(rate_temp);
        else
        form.carans.value = rate_temp;


        form.x.value = displaynumber(x);
        form.y.value = displaynumber(y);
        form.s.value = displayym(s);
        form.t.value = displayym(t);

    }

//*****************************************************************





 }
 else
 {
  var x;
  x = "";

  if ( isNaN(form.x.value)  || form.x.value == "" )
  x = x + "initial lump sum investment\n";

  if ( isNaN(form.s.value)  || form.s.value == "" )
  x = x + "invested year\n";

  if ( isNaN(form.t.value)  || form.t.value == "" )
  x = x + "invested month\n";

  if ( isNaN(form.y.value)  || form.y.value == "" )
  x = x + "portfolio worth\n";

  alert("The following value is not valid \n" + x );

 }

}
//**************************2************************8

function calculatectv(form)
{
 var n;
 var k;

 var x;
 var s;
 var t;
 var y;
 var r;



 if ( form.s.value == "" )
 form.s.value = 0;
 if ( form.t.value == "" )
 form.t.value = 0;

 if ( form.r.value.charAt(0) == "-" || form.x.value.charAt(0) == "-" || form.s.value.charAt(0) == "-" || form.t.value.charAt(0) == "-" )
 { 
  alert("Only positive value is allowed at the input");
  return true;
 }

  x = parseFloat(getnumber(form.x.value));
  s = parseFloat(getnumber(form.s.value));
  t = parseFloat(getnumber(form.t.value));
//  y = parseFloat(getnumber(form.y.value));
  r = parseFloat(getnumber(form.r.value));

  x = Math.max(x,0);
  s = Math.max(s,0);
  t = Math.max(t,0);
//  y = Math.max(y,0);


 if ( !isNaN(x) && !isNaN(s) && !isNaN(t) && !isNaN(r) )
 {

  s = Math.round(s);
  t = Math.round(t);

  if ( ( s == 0 && t == 0 ) || r == 0 || x == 0 )
  {
   alert("The data that you had input is not valid.");
   return true;
  }

  if ( r >= 1000)
  {
   alert("The annual return is too large.");
   return true;  
  }

  n = (12 * s) + t;
  if ( n > 0 )
  {
   k = 100 * ( Math.pow(1 + r/100,1/12) -1 ) ;

   y = x * (100 / k ) *( Math.pow((1+(k/100)),(n)) - 1 );

  }
  else
  {
   alert("The data that you had input is not valid.");
   return true;   
  }

  if (isNaN(y))
  {
   alert("The data that you had input is not valid.");
  }
  else
  {
//**********************
//alert(y);
//**********************

   form.x.value = displaynumber(x);
   form.s.value = displayym(s);
   form.t.value = displayym(t);
   form.r.value = displaynumber(r);
//   form.ctvans.value = displaynumber(y);
   if ( y < 1000000000000000000000 && y > 1)
   form.ctvans.value = displaynumber(y);
   else
   {

    if ( y <= 0.01  && y >= -0.01)
    {
     form.ctvans.value = "0.00";
     alert("The result is 0 or negative");
     return true;
    }

    if ( y >= 100000000000 )
    {
     form.ctvans.value = "Too Large";
     alert("The result is too large");
     return true;
    }
 
    form.ctvans.value = roundnumber(y,2);

   }
  }

 }
 else
 {
  var x;
  x = "";

  if ( isNaN(form.x.value)  || form.x.value == "" )
  x = x + "monthly investment\n";

  if ( isNaN(form.s.value)  || form.s.value == "" )
  x = x + "invested year\n";

  if ( isNaN(form.t.value)  || form.t.value == "" )
  x = x + "invested month\n";

  if ( isNaN(form.r.value)  || form.r.value == "" )
  x = x + "annual return\n";

  alert("The following value is not valid \n" + x );

 }

}

//*******************3******************
function calculatecii(form)
{
 var n;
 var k;

 var x;
 var s;
 var t;
 var y;
 var r;


 if ( form.s.value == "" )
 form.s.value = 0;
 if ( form.t.value == "" )
 form.t.value = 0;

 if ( form.r.value.charAt(0) == "-" || form.s.value.charAt(0) == "-" || form.t.value.charAt(0) == "-" || form.y.value.charAt(0) == "-" )
 { 
  alert("Only positive value is allowed at the input");
  return true;
 }

//  x = parseFloat(getnumber(form.x.value));
  s = parseFloat(getnumber(form.s.value));
  t = parseFloat(getnumber(form.t.value));
  y = parseFloat(getnumber(form.y.value));
  r = parseFloat(getnumber(form.r.value));

//  x = Math.max(x,0);
  s = Math.max(s,0);
  t = Math.max(t,0);
  y = Math.max(y,0);


 if ( !isNaN(s) && !isNaN(t) && !isNaN(r) && !isNaN(y) )
 {

  s = Math.round(s);
  t = Math.round(t);

  if ( r == 0 || y == 0 || ( s == 0 && t == 0 ) )
  {
   alert("The data that you had input is not valid.");
   return true;
  }

  if ( r >= 1000)
  {
   alert("The annual return is too large.");
   return true;  
  }

  n = (12 * s) + t;
  if ( n > 0 )
  {
   k = 100 * ( Math.pow(1 + r/100,1/12) -1 ) ;
   x = (k * y / 100) / ( Math.pow((1+k/100),(n)) - 1);

  }
  else
  {
   alert("The data that you had input is not valid.");
   return true;   
  }

  if (isNaN(x))
  {
   alert("The data that you had input is not valid.");
  }
  else
  {
//**********************
//alert(x);
//**********************

   form.y.value = displaynumber(y);
   form.s.value = displayym(s);
   form.t.value = displayym(t);
   form.r.value = displaynumber(r);
//   form.ciians.value = displaynumber(x);

   if ( x < 1000000000000000000000 && x > 1 )
   form.ciians.value = displaynumber(x);
   else
   {

    if ( x <= 0.01  && x >= -0.01)
    {
     form.ciians.value = "0.00";
     alert("The result is 0 or negative");
     return true;
    }

    if ( x >= 100000000000 )
    {
     form.ciians.value = "Too Large";
     alert("The result is too large");
     return true;
    }
  
    form.ciians.value = roundnumber(x,2);

   }

  }

 }
 else
 {
  var x;
  x = "";

  if ( isNaN(form.s.value)  || form.s.value == "" )
  x = x + "invested year\n";

  if ( isNaN(form.t.value)  || form.t.value == "" )
  x = x + "invested month\n";

  if ( isNaN(form.r.value)  || form.r.value == "" )
  x = x + "annual return\n";

  if ( isNaN(form.y.value)  || form.y.value == "" )
  x = x + "investment to grow to\n";

  alert("The following value is not valid \n" + x );

 }

}



function calculatecih(form)
{
 var n;
 var k;

 var x;
 var s;
 var t;
 var y;
 var r;




  x = parseFloat(getnumber(form.x.value));
//  s = parseFloat(getnumber(form.s.value));
//  t = parseFloat(getnumber(form.t.value));
  y = parseFloat(getnumber(form.y.value));
  r = parseFloat(getnumber(form.r.value));

  x = Math.max(x,0);
//  s = Math.max(s,0);
//  t = Math.max(t,0);
  y = Math.max(y,0);

 if ( form.r.value.charAt(0) == "-" || form.x.value.charAt(0) == "-" || form.y.value.charAt(0) == "-" )
 { 
  alert("Only positive value is allowed at the input");
  return true;
 }

 if ( !isNaN(x) && !isNaN(y) && !isNaN(r) )
 {



  if ( r == 0 )
  {
   alert("The data that you had input is not valid.");
   return true;
  }

  if ( r >= 1000)
  {
   alert("The annual return is too large.");
   return true;  
  }

  if ( y <= x )
  {
   alert("Sorry, the expected investment return value cannot be less than or equal to the monthly investment");

  }

   k = 100 * ( Math.pow(1 + r/100,1/12) -1 ) ;
   n =  Math.log((y/x)*(k/100) +1) / Math.log(1 + k/100)

  if (n > 0)
  {
   form.cihansy.value = parseInt(n/12);
   if (isNaN(parseInt(n/12)))
   {
    form.cihansy.value = 0;
   }
   form.cihansm.value = Math.round((n%12));
   if (isNaN(parseInt(n%12)))
   {
    form.cihansm.value = 0;
   }
   form.x.value = displaynumber(x);
   form.y.value = displaynumber(y);
   form.r.value = displaynumber(r);

  }

 }
 else
 {
  var x;
  x = "";

  if ( isNaN(form.x.value)  || form.x.value == "" )
  x = x + "monthly investment\n";

  if ( isNaN(form.y.value)  || form.y.value == "" )
  x = x + "investment to grow to\n";

  if ( isNaN(form.r.value)  || form.r.value == "" )
  x = x + "annual return\n";

  alert("The following value is not valid \n" + x );

 }

}


function getnumber(x)
{
 x = x.toString();
 var y = "";
 var z = "";
 var d = 0;
 for (i=0;i<x.length;i++)
 {
  if (d == 0)
  {
   if ( ( x.charAt(i) <= "9" && x.charAt(i) >= "0" ) || x.charAt(i) == "." )
    y = y + x.charAt(i);
  }
  else
  {
   if ( ( x.charAt(i) <= "9" && x.charAt(i) >= "0" ))
    y = y + x.charAt(i);
  }

  if ( x.charAt(i) == "." )
   d++;
 }

 return y;

}

function displaynumber(x)
{
 x = Math.round(x * 100);
 x = x / 100;

 var appendzero;
 appendzero=0;

 if (x < 1)
 appendzero = 1;

 x = x.toString();
 var y = "";
 var z = ""; 
 var leftz = ""; 
 var rightz = ""; 
 var d = 0;
 
// filter only with [0 - 9] , [.] , [-]

 for (i=0;i< x.length;i++)
 {

  if ( i == 0 )
  {
    if ( ( x.charAt(i) <= "9" && x.charAt(i) >= "0" ) || x.charAt(i) == "." || x.charAt(i) == "-" )
     y = y + x.charAt(i);
  }
  else
  {
   if (d == 0)
   {
    if ( ( x.charAt(i) <= "9" && x.charAt(i) >= "0" ) || x.charAt(i) == "." )
     y = y + x.charAt(i);
   }
   else
   {
    if ( ( x.charAt(i) <= "9" && x.charAt(i) >= "0" ))
     y = y + x.charAt(i);
   }

   if ( x.charAt(i) == "." )
    d++;


  }
 }

 count = 0;

 // y is a numeric number now ha ha


 if ( y.charAt(0) == "." ) 
 {
  y = "0" + y ;
//  alert("z = " + y);
 }

 if ( y.charAt(0) == "-" && y.charAt(1) == "." ) 
 {
  y = "-0" + y.substring(1,y.length) ;
//  alert("z = " + y);
 }


 leftz = y.substring(0,y.indexOf("."))
 rightz = y.substring(y.length,y.indexOf("."))

 var llength = leftz.length;

 if (leftz.length ==0 )
 {
  leftz = y;
  rightz = "";
 }

// insert coma
 for (i = leftz.length  - 1;i>=0 ;i--)
 {
   count++;
   z = leftz.charAt(i) + z;
   if ( count == 3 )
   {
    count = 0;
    z = "," + z;
   }
 }





 if ( rightz.length >= 3 ) 
 {
  z = z + rightz.substring(0,3);

 }
 if ( rightz.length == 2 ) 
 {
  z = z + rightz.substring(0,2) + "0";

 }

 if ( rightz.length <= 1 ) 
 {
  z = z + ".00";

 }




// delete wrong , 

 if (z.charAt(0) == ",")
 z = z.substring(1,z.length);

 if (z.charAt(0) == "-")
 if (z.charAt(1) == ",")
 z = "-" + z.substring(2,z.length);


// if ( z.indexOf(".") > 0 )
// z = z.substring(0,z.indexOf(".")+3);

 if (appendzero==1)
 {
// check negative and add prefix zero
  if (z.charAt(0) == "-")
  {
   if (z.charAt(1) == ".")
   z = "-0" + z.substring(1,z.length-1);
  }

  if (z.charAt(0) == ".")
  {
   z = "0" + z.substring(0,z.length-1);
  }



 }


 return z;
}


//**************************** displayym ****************************

function displayym(x)
{
 x = Math.round(x);


 x = x.toString();
 var y = "";
 var z = ""; 
 var leftz = ""; 
 var rightz = ""; 
 var d = 0;
 
// filter only with [0 - 9] , [.] , [-]

 for (i=0;i< x.length;i++)
 {

  if ( i == 0 )
  {
    if ( ( x.charAt(i) <= "9" && x.charAt(i) >= "0" ) || x.charAt(i) == "." || x.charAt(i) == "-" )
     y = y + x.charAt(i);
  }
  else
  {
   if (d == 0)
   {
    if ( ( x.charAt(i) <= "9" && x.charAt(i) >= "0" ) || x.charAt(i) == "." )
     y = y + x.charAt(i);
   }
   else
   {
    if ( ( x.charAt(i) <= "9" && x.charAt(i) >= "0" ))
     y = y + x.charAt(i);
   }

   if ( x.charAt(i) == "." )
    d++;


  }
 }

 count = 0;

 // y is a numeric number now ha ha

 leftz = y.substring(0,y.indexOf("."))
 rightz = y.substring(y.length,y.indexOf("."))

 var llength = leftz.length;

 if (leftz.length ==0 )
 {
  leftz = y;
  rightz = "";
 }

// insert coma
 for (i = leftz.length  - 1;i>=0 ;i--)
 {
   count++;
   z = leftz.charAt(i) + z;
   if ( count == 3 )
   {
    count = 0;
    z = "," + z;
   }
 }




 return z;
}

function roundnumber(x,d)
{
 x = Math.round(x * 100);
 x = x / 100;
 z = x.toString();
 z = z.substring(0,z.indexOf(".")+d+1);
 return z;
}