function premium_calculator()
{
    var val = document.getElementById("user_input").value;	
    var term = document.getElementById("user_term").value;
    var state = document.getElementById("user_state").value;

   if (!IsNumeric(val)) 
   { 
      alert('Please enter a whole number, no commas or spaces') 
      document.getElementById("user_input").focus(); 
      return false; 
      } 

    var excess=[0,0,0,0];                                     // excess
    var i;
    var months;

    var excess1_1=[0.0211,0.02,0.0176,0.0129];     // excess rates  <50,000, 1 year
    var excess1_2=[0.0422,0.04,0.0352,0.0258];     // excess rates < 50,000, 2 year
    var excess1_3=[0.0603,0.0572,0.0503,0.0369];     // excess rates < 50,000, 3 year
    var excess2_1=[0.0169,0.0160,0.0141,0.0104];     // excess rates < 100,000, 1 year
    var excess2_2=[0.0338,0.032,0.0282,0.0208];     // excess rates < 100,000, 2 year
    var excess2_3=[0.0483,0.0458,0.0403,0.0297];     // excess rates < 100,000, 3 year
    var excess3_1=[0.0148,0.014,0.0124,0.0091];     // excess rates < 250,000, 1 year
    var excess3_2=[0.0296,0.028,0.0248,0.0182];     // excess rates < 250,000, 1 year
    var excess3_3=[0.0423,0.04,0.0355,0.0260];     // excess rates < 250,000, 1 year
    var gst=0.10;                                            // GST rate
    var margin=0.45;                                     // margin
    var sd=[0.075,0.09,0.1,0.1,0.08,0.11,0.1,0.1];                               // stamp duty rates

     months=term*12;
     if (val<50000)
     {    
        switch (term) {
        case "1":                                  //1 year
              for(i in excess1_1) {
                   excess[i]=excess1_1[i];
              }
             break;
        case "2":                                  //2 year
              for(i=0;i<4;i++) {
                   excess[i]=excess1_2[i];
              }
             break;
        case "3":                                  //3 year
              for(i=0;i<4;i++) {
                   excess[i]=excess1_3[i];
              }
             break;
         }
     }
     else if (val<100000)
     {    
        switch (term) {
        case "1":                                  //1 year
              for(i=0;i<4;i++) {
                   excess[i]=excess2_1[i];
              }

             break;
        case "2":                                  //2 year
              for(i=0;i<4;i++) {
                   excess[i]=excess2_2[i];
              }
             break;
        case "3":                                  //3 year
              for(i=0;i<4;i++) {
                   excess[i]=excess2_3[i];
              }
             break;
         }
     }
     else if (val<250000)
     {    
        switch (term) {
        case "1":                                  //1 year
              for(i=0;i<4;i++) {
                   excess[i]=excess3_1[i];
              }
             break;
        case "2":                                  //2 year
              for(i=0;i<4;i++) {
                   excess[i]=excess3_2[i];
              }
             break;
        case "3":                                  //3 year
              for(i=0;i<4;i++) {
                   excess[i]=excess3_3[i];
              }
             break;
         }
     }
     else
     {    
           alert ("Please contact us for quote");
           r1 = 0;
           r2 = 0;
           r3 = 0;
           r4 = 0; 
           return;
     }

     switch (state) {
     case "QLD": 
             var n1 = val * excess[0];
             if (n1 < 75)
                     n1 = 75;
             var gn1 = n1 * gst;
             var sd1 = (n1 + gn1) * sd[0];
             var m1 = n1 * margin;
             var mx1 = (val/2500)*((months/36)*25);
             var gm1 = (m1 + mx1) * gst;
             var r1 = roundNumber((n1+gn1+sd1+m1+mx1+gm1),2);

             var n2 = val * excess[1];
             if (n2 < 75)
                    n2 = 75;
             var gn2 = n2 * gst;
             var sd2 = (n2 + gn2) * sd[0];
             var m2 = n2 * margin;
             var mx2 = (val/2500)*((months/36)*25);
             var gm2 = (m2 + mx2) * gst;
             var r2 = roundNumber((n2+gn2+sd2+m2 +mx2+gm2),2);  

             var n3 = val * excess[2];
             if (n3 < 75)
                     n3 = 75;
             var gn3 = n3 * gst;
             var sd3 = (n3 + gn3) * sd[0];
             var m3 = n3 * margin;
             var mx3 = (val/2500)*((months/36)*25);
             var gm3 = (m3 + mx3) * gst;
             var r3 = roundNumber((n3+gn3+sd3+m3+mx3+gm3),2);  

             var n4 = val * excess[3];
             if (n4 < 75)
                     n4 = 75;
             var gn4 = n4 * gst;
             var sd4 = (n4 + gn4) * sd[0];
             var m4 = n4 * margin;
             var mx4 = (val/2500)*((months/36)*25);
             var gm4 = (m4 + mx4) * gst;
             var r4 = roundNumber((n4+gn4+sd4+m4+mx4+gm4),2); 
              break;

        case "NSW": 
                     var n1 = val * excess[0];
                     if (n1 < 75)
                          n1 = 75;
                     var gn1 = n1 * gst;
                     var sd1 = (n1 + gn1) * sd[1];
                     var m1 = n1 * margin;
                     var mx1 = (val/2500)*((months/36)*25);
                     var gm1 = (m1 + mx1) * gst;
                     var r1 = roundNumber((n1+gn1+sd1+m1+mx1+gm1),2);

                     var n2 = val * excess[1];
                     if (n2 < 75)
                          n2 = 75;
                     var gn2 = n2 * gst;
                     var sd2 = (n2 + gn2) * sd[1];
	     var m2 = n2 * margin;
                     var mx2 = (val/2500)*((months/36)*25);
                     var gm2 = (m2 + mx2) * gst;
                     var r2 = roundNumber((n2+gn2+sd2+m2 +mx2+gm2),2);  

                     var n3 = val * excess[2];
                     if (n3 < 75)
                          n3 = 75;
                     var gn3 = n3 * gst;
                     var sd3 = (n3 + gn3) * sd[1];
	     var m3 = n3 * margin;
                     var mx3 = (val/2500)*((months/36)*25);
                     var gm3 = (m3 + mx3) * gst;
                     var r3 = roundNumber((n3+gn3+sd3+m3+mx3+gm3),2);  

                     var n4 = val * excess[3];
                     if (n4 < 75)
                          n4 = 75;
                     var gn4 = n4 * gst;
                     var sd4 = (n4 + gn4) * sd[1];
	     var m4 = n4 * margin;
                     var mx4 = (val/2500)*((months/36)*25);
                     var gm4 = (m4 + mx4) * gst;
                     var r4 = roundNumber((n4+gn4+sd4+m4+mx4+gm4),2); 
                     break;

               case "ACT":
                     var n1 = val * excess[0];
                     if (n1 < 75)
                          n1 = 75;
                     var gn1 = n1 * gst;
                     var sd1 = (n1 + gn1) * sd[2];
                     var m1 = n1 * margin;
                     var mx1 = (val/2500)*((months/36)*25);
                     var gm1 = (m1 + mx1) * gst;
                     var r1 = roundNumber((n1+gn1+sd1+m1+mx1+gm1),2);

                     var n2 = val * excess[1];
                     if (n2 < 75)
                          n2 = 75;
                     var gn2 = n2 * gst;
                     var sd2 = (n2 + gn2) * sd[2];
	     var m2 = n2 * margin;
                     var mx2 = (val/2500)*((months/36)*25);
                     var gm2 = (m2 + mx2) * gst;
                     var r2 = roundNumber((n2+gn2+sd2+m2 +mx2+gm2),2);  

                     var n3 = val * excess[2];
                     if (n3 < 75)
                          n3 = 75;
                     var gn3 = n3 * gst;
                     var sd3 = (n3 + gn3) * sd[2];
	     var m3 = n3 * margin;
                     var mx3 = (val/2500)*((months/36)*25);
                     var gm3 = (m3 + mx3) * gst;
                     var r3 = roundNumber((n3+gn3+sd3+m3+mx3+gm3),2);  

                     var n4 = val * excess[3];
                     if (n4 < 75)
                          n4 = 75;
                     var gn4 = n4 * gst;
                     var sd4 = (n4 + gn4) * sd[2];
	     var m4 = n4 * margin;
                     var mx4 = (val/2500)*((months/36)*25);
                     var gm4 = (m4 + mx4) * gst;
                     var r4 = roundNumber((n4+gn4+sd4+m4+mx4+gm4),2); 
                     break;

               case "VIC": 
                     var n1 = val * excess[0];
                     if (n1 < 75)
                          n1 = 75;
                     var gn1 = n1 * gst;
                     var sd1 = (n1 + gn1) * sd[3];
                     var m1 = n1 * margin;
                     var mx1 = (val/2500)*((months/36)*25);
                     var gm1 = (m1 + mx1) * gst;
                     var r1 = roundNumber((n1+gn1+sd1+m1+mx1+gm1),2);

                     var n2 = val * excess[1];
                     if (n2 < 75)
                          n2 = 75;
                     var gn2 = n2 * gst;
                     var sd2 = (n2 + gn2) * sd[3];
	     var m2 = n2 * margin;
                     var mx2 = (val/2500)*((months/36)*25);
                     var gm2 = (m2 + mx2) * gst;
                     var r2 = roundNumber((n2+gn2+sd2+m2 +mx2+gm2),2);  

                     var n3 = val * excess[2];
                     if (n3 < 75)
                          n3 = 75;
                     var gn3 = n3 * gst;
                     var sd3 = (n3 + gn3) * sd[3];
	     var m3 = n3 * margin;
                     var mx3 = (val/2500)*((months/36)*25);
                     var gm3 = (m3 + mx3) * gst;
                     var r3 = roundNumber((n3+gn3+sd3+m3+mx3+gm3),2);  

                     var n4 = val * excess[3];
                     if (n4 < 75)
                          n4 = 75;
                     var gn4 = n4 * gst;
                     var sd4 = (n4 + gn4) * sd[3];
	     var m4 = n4 * margin;
                     var mx4 = (val/2500)*((months/36)*25);
                     var gm4 = (m4 + mx4) * gst;
                     var r4 = roundNumber((n4+gn4+sd4+m4+mx4+gm4),2); 
                     break;

               case "TAS": 
                     var n1 = val * excess[0];
                     if (n1 < 75)
                          n1 = 75;
                     var gn1 = n1 * gst;
                     var sd1 = (n1 + gn1) * sd[4];
                     var m1 = n1 * margin;
                     var mx1 = (val/2500)*((months/36)*25);
                     var gm1 = (m1 + mx1) * gst;
                     var r1 = roundNumber((n1+gn1+sd1+m1+mx1+gm1),2);

                     var n2 = val * excess[1];
                     if (n2 < 75)
                          n2 = 75;
                     var gn2 = n2 * gst;
                     var sd2 = (n2 + gn2) * sd[4];
	     var m2 = n2 * margin;
                     var mx2 = (val/2500)*((months/36)*25);
                     var gm2 = (m2 + mx2) * gst;
                     var r2 = roundNumber((n2+gn2+sd2+m2 +mx2+gm2),2);  

                     var n3 = val * excess[2];
                     if (n3 < 75)
                          n3 = 75;
                     var gn3 = n3 * gst;
                     var sd3 = (n3 + gn3) * sd[4];
	     var m3 = n3 * margin;
                     var mx3 = (val/2500)*((months/36)*25);
                     var gm3 = (m3 + mx3) * gst;
                     var r3 = roundNumber((n3+gn3+sd3+m3+mx3+gm3),2);  

                     var n4 = val * excess[3];
                     if (n4 < 75)
                          n4 = 75;
                     var gn4 = n4 * gst;
                     var sd4 = (n4 + gn4) * sd[4];
	     var m4 = n4 * margin;
                     var mx4 = (val/2500)*((months/36)*25);
                     var gm4 = (m4 + mx4) * gst;
                     var r4 = roundNumber((n4+gn4+sd4+m4+mx4+gm4),2); 
                     break;

               case "SA": 
                     var n1 = val * excess[0];
                     if (n1 < 75)
                          n1 = 75;
                     var gn1 = n1 * gst;
                     var sd1 = (n1 + gn1) * sd[5];
                     var m1 = n1 * margin;
                     var mx1 = (val/2500)*((months/36)*25);
                     var gm1 = (m1 + mx1) * gst;
                     var r1 = roundNumber((n1+gn1+sd1+m1+mx1+gm1),2);

                     var n2 = val * excess[1];
                     if (n2 < 75)
                          n2 = 75;
                     var gn2 = n2 * gst;
                     var sd2 = (n2 + gn2) * sd[5];
	     var m2 = n2 * margin;
                     var mx2 = (val/2500)*((months/36)*25);
                     var gm2 = (m2 + mx2) * gst;
                     var r2 = roundNumber((n2+gn2+sd2+m2 +mx2+gm2),2);  

                     var n3 = val * excess[2];
                     if (n3 < 75)
                          n3 = 75;
                     var gn3 = n3 * gst;
                     var sd3 = (n3 + gn3) * sd[5];
	     var m3 = n3 * margin;
                     var mx3 = (val/2500)*((months/36)*25);
                     var gm3 = (m3 + mx3) * gst;
                     var r3 = roundNumber((n3+gn3+sd3+m3+mx3+gm3),2);  

                     var n4 = val * excess[3];
                     if (n4 < 75)
                          n4 = 75;
                     var gn4 = n4 * gst;
                     var sd4 = (n4 + gn4) * sd[5];
	     var m4 = n4 * margin;
                     var mx4 = (val/2500)*((months/36)*25);
                     var gm4 = (m4 + mx4) * gst;
                     var r4 = roundNumber((n4+gn4+sd4+m4+mx4+gm4),2); 
                     break;

               case "WA":
                     var n1 = val * excess[0];
                     if (n1 < 75)
                          n1 = 75;
                     var gn1 = n1 * gst;
                     var sd1 = (n1 + gn1) * sd[6];
                     var m1 = n1 * margin;
                     var mx1 = (val/2500)*((months/36)*25);
                     var gm1 = (m1 + mx1) * gst;
                     var r1 = roundNumber((n1+gn1+sd1+m1+mx1+gm1),2);

                     var n2 = val * excess[1];
                     if (n2 < 75)
                          n2 = 75;
                     var gn2 = n2 * gst;
                     var sd2 = (n2 + gn2) * sd[6];
	     var m2 = n2 * margin;
                     var mx2 = (val/2500)*((months/36)*25);
                     var gm2 = (m2 + mx2) * gst;
                     var r2 = roundNumber((n2+gn2+sd2+m2 +mx2+gm2),2);  

                     var n3 = val * excess[2];
                     if (n3 < 75)
                          n3 = 75;
                     var gn3 = n3 * gst;
                     var sd3 = (n3 + gn3) * sd[6];
	     var m3 = n3 * margin;
                     var mx3 = (val/2500)*((months/36)*25);
                     var gm3 = (m3 + mx3) * gst;
                     var r3 = roundNumber((n3+gn3+sd3+m3+mx3+gm3),2);  

                     var n4 = val * excess[3];
                     if (n4 < 75)
                          n4 = 75;
                     var gn4 = n4 * gst;
                     var sd4 = (n4 + gn4) * sd[6];
	     var m4 = n4 * margin;
                     var mx4 = (val/2500)*((months/36)*25);
                     var gm4 = (m4 + mx4) * gst;
                     var r4 = roundNumber((n4+gn4+sd4+m4+mx4+gm4),2); 
                     break;

               case "NT": 
                     var n1 = val * excess[0];
                     if (n1 < 75)
                          n1 = 75;
                     var gn1 = n1 * gst;
                     var sd1 = (n1 + gn1) * sd[7];
                     var m1 = n1 * margin;
                     var mx1 = (val/2500)*((months/36)*25);
                     var gm1 = (m1 + mx1) * gst;
                     var r1 = roundNumber((n1+gn1+sd1+m1+mx1+gm1),2);

                     var n2 = val * excess[1];
                     if (n2 < 75)
                          n2 = 75;
                     var gn2 = n2 * gst;
                     var sd2 = (n2 + gn2) * sd[7];
	     var m2 = n2 * margin;
                     var mx2 = (val/2500)*((months/36)*25);
                     var gm2 = (m2 + mx2) * gst;
                     var r2 = roundNumber((n2+gn2+sd2+m2 +mx2+gm2),2);  

                     var n3 = val * excess[2];
                     if (n3 < 75)
                          n3 = 75;
                     var gn3 = n3 * gst;
                     var sd3 = (n3 + gn3) * sd[7];
	     var m3 = n3 * margin;
                     var mx3 = (val/2500)*((months/36)*25);
                     var gm3 = (m3 + mx3) * gst;
                     var r3 = roundNumber((n3+gn3+sd3+m3+mx3+gm3),2);  

                     var n4 = val * excess[3];
                     if (n4 < 75)
                          n4 = 75;
                     var gn4 = n4 * gst;
                     var sd4 = (n4 + gn4) * sd[7];
	     var m4 = n4 * margin;
                     var mx4 = (val/2500)*((months/36)*25);
                     var gm4 = (m4 + mx4) * gst;
                     var r4 = roundNumber((n4+gn4+sd4+m4+mx4+gm4),2); 
          break;
     }    

    document.getElementById("val_100_1").innerHTML = r1;
     document.getElementById("val_250_1").innerHTML = r2;
     document.getElementById("val_500_1").innerHTML = r3;
     document.getElementById("val_1000_1").innerHTML = r4;
}

function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   }

function roundNumber(rnum, rlength) { // Arguments: number to round, number of decimal places
  var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
  return newnumber.toFixed(2); // Output the result to the form field (change for your purposes)
}
