function premium_calculator()
{
    var val = document.getElementById('user_input').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.03,0.0285714285714286,0.0257142857142857,0.019047619047619];     // excess rates
    var gst=.10;                                            // GST rate
    var margin=.60;                                     // margin
// state array 
//    var States=["QLD","NSW","ACT","VIC","TAS","SA ","WA ","NT "];  
    var sd=[0.075,0.09,0.1,0.1,0.08,0.11,0.1,0.1];                               // stamp duty rates

     if (val<100000)
     {    
             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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/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)*((12/36)*25);
                     var gm4 = (m4 + mx4) * gst;
                     var r4 = roundNumber((n4+gn4+sd4+m4+mx4+gm4),2); 
                     break;
             }
     }    
     else
     {    
           alert ("Please contact us for quote");
           r1 = 0;
           r2 = 0;
           r3 = 0;
           r4 = 0; 
     }
     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)
}
