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.0201,0.0190,0.0167,0.0124];     // excess rates  <50,000, 1 year
    var excess1_2=[0.0403,0.0380,0.0334,0.0247];     // excess rates < 50,000, 2 year
    var excess1_3=[0.0604,0.0475,0.0418,0.0309];     // excess rates < 50,000, 3 year
    var excess2_1=[0.0201,0.0190,0.0167,0.0124];     // excess rates < 100,000, 1 year
    var excess2_2=[0.0403,0.0380,0.0334,0.0247];     // excess rates < 100,000, 2 year
    var excess2_3=[0.0604,0.0475,0.0418,0.0309];     // excess rates < 100,000, 3 year
    var excess3_1=[0.0201,0.0190,0.0167,0.0124];     // excess rates < 250,000, 1 year
    var excess3_2=[0.0403,0.0380,0.0334,0.0247];     // excess rates < 250,000, 1 year
    var excess3_3=[0.0604,0.0475,0.0418,0.0309];     // excess rates < 250,000, 1 year
    var gst=0.10;                                            // GST rate
    var margin=0.5775;                                     // 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;
     }   
alert("excess[0] " + excess[0] + "\n" + "n1 " + n1 + "\n" + "gn1 " + gn1 + "\n" + "sd1 " + sd1 + "\n" + "m1 " + m1 + "\n" + "gm1 " + gm1 + "\n" + "r1 " + "\n" );
alert("excess[1] " + excess[1] + "\n" + "n2 " + n2 + "\n" + "gn2 " + gn2 + "\n" + "sd2 " + sd2 + "\n" + "m2 " + m2 + "\n" + "gm2 " + gm2 + "\n" + "r2 " + "\n" );
alert("excess[2] " + excess[2] + "\n" + "n3 " + n3 + "\n" + "gn3 " + gn3 + "\n" + "sd3 " + sd3 + "\n" + "m3 " + m3 + "\n" + "gm3 " + gm3 + "\n" + "r3 " + "\n" );
alert("excess[3] " + excess[3] + "\n" + "n4 " + n4 + "\n" + "gn4 " + gn4 + "\n" + "sd4 " + sd4 + "\n" + "m4 " + m4 + "\n" + "gm4 " + gm4 + "\n" + "r4 " + "\n");           
 
     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)
}
