diff --git a/templates/CRM/Contribute/Form/Contribution/Main.extra.tpl b/templates/CRM/Contribute/Form/Contribution/Main.extra.tpl
index 434a633a0e2871aa267f90aa6ce896ccaa6a4111..af3f1524689a923ee333ac417ee5ba88734f2750 100644
--- a/templates/CRM/Contribute/Form/Contribution/Main.extra.tpl
+++ b/templates/CRM/Contribute/Form/Contribution/Main.extra.tpl
@@ -1,11 +1,13 @@
 {literal}
 <script type="text/javascript">
 
+  var dom = cj('#price_2').html();
+  var domattr = cj('#price_2').attr('price');
 cj('#state_province-1').change(function() {
   var icrm = {/literal}{$priceSet.fields.3.options.12.amount}{literal};
   var taxes = '{/literal}{$totaltaxes}{literal}';
   var indtaxes = '{/literal}{$indtaxes}{literal}';
-
+  
   taxes = cj.parseJSON(taxes);
   indtaxes = cj.parseJSON(indtaxes);
   var state = cj(this).val();
@@ -30,18 +32,64 @@ cj('#state_province-1').change(function() {
     var total = parseFloat(icrm) + parseFloat(newTax);
     var st = '["price_3", "' + total.toFixed(2) + '||"]';
     cj('#price_3').attr('price', st);
+
+    var amts = [];
+    cj('#price_2 option').each( function() {
+      if (cj(this).val() != '') {
+        var firstlabel = cj(this).text();
+        if (firstlabel.indexOf('-') >= 0) {
+          var firstpartlabel = firstlabel.substring(0, firstlabel.indexOf('-'));
+          var firstlabel = firstlabel.substring(firstlabel.indexOf('-') + 1); 
+          if (firstlabel.indexOf('-') >= 0) {
+            var firstlabel = firstlabel.substring(firstlabel.indexOf('-') + 1);
+          }
+          if (firstlabel.indexOf('+') >= 0) {
+            var firstlabel = firstlabel.substring(0, firstlabel.indexOf('+'));
+          }
+	  var baseamount = firstlabel.replace(/[^\d.-]/g,'');
+          var hst = parseFloat(baseamount) * parseFloat(indtaxes[state]['HST_GST']) / 100;
+          var pst = 0;
+          if (indtaxes[state]['PST']) {
+            var pst = parseFloat(baseamount) * parseFloat(indtaxes[state]['PST']) / 100;
+          }
+        }
+	if (!(firstlabel.indexOf('-') >= 0)) {
+          var firstlabel = firstpartlabel + ' - ' + firstlabel + ' + $' + hst.toFixed(2) + ' HST';
+          if (pst) {
+            var firstlabel = firstlabel + ' + $' + pst.toFixed(2) + ' PST';
+          }
+        }
+	else {
+          var firstlabel = firstlabel + ' + $' + hst.toFixed(2) + ' HST';
+          if (pst) {
+            var firstlabel = firstlabel + ' + $' + pst.toFixed(2) + ' PST';
+          }
+        }	
+        cj(this).text(firstlabel);
+	var total = parseFloat(baseamount) + parseFloat(hst) + parseFloat(pst);
+	var val = cj(this).val();
+	var texts = '"' + val + '":"' + total + '||"';
+	amts.push(texts);
+        cj('#price_2').attr('price', '{' + amts + '}');
+      } 
+    });
   }
-  else{
+  else {
     if (cj('label[for="price_3"]').length) {
       var firstlabel = cj('label[for="price_3"]').html();
     }
     if (firstlabel.indexOf('+') >= 0) {
       var firstlabel = firstlabel.substring(0, firstlabel.indexOf('+'));
-    }  
-    cj('label[for="price_3"]').html(firstlabel);
+    } 		   
+    cj('label[for="price_3"]').html(firstlabel);	
     var total = parseFloat(icrm);
-    var st = '["price_3","' + total.toFixed(2) + '||"]';
+    var st = '["price_3", "' + total.toFixed(2) + '||"]';
     cj('#price_3').attr('price', st);
+
+    var sel = cj('#price_2 option:selected').val();
+    cj('#price_2').html(dom);
+    cj('#price_2').attr('price', domattr);  
+    cj('#price_2').val(sel).change(); 
   }
     var optionSep      = '|';
     cj("#priceset input").each(function () {
@@ -133,6 +181,12 @@ function calculateText( object ) {
        totalfee   = parseFloat(totalfee) - parseFloat(price[ele]);
        price[ele] = parseFloat('0');
    }
+   if(!isNaN(curval)) {
+     cj('.price-field-amount').text('$ ' + curval);
+   }
+   else { 
+     cj('.price-field-amount').text('$ 17.00');
+   }
    display( totalfee );
 }
 
@@ -161,7 +215,6 @@ var n = amount,
   return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
 }
 
-
 </script>