/* Standard AJAX stuff */ var xmlHttp; var response_text; function GetXmlHttpObject(handler) { var objXmlHttp=null; if (navigator.userAgent.indexOf("MSIE")>=0) { var strName="Msxml2.XMLHTTP"; if (navigator.appVersion.indexOf("MSIE 5.5")>=0) { strName="Microsoft.XMLHTTP"; } try { objXmlHttp=new ActiveXObject(strName); objXmlHttp.onreadystatechange=handler; return objXmlHttp; } catch(e) { alert("Error. Scripting for ActiveX might be disabled"); return; } } if (navigator.userAgent.indexOf("Mozilla") >= 0 || navigator.userAgent.indexOf("Opera") >= 0) { objXmlHttp=new XMLHttpRequest(); objXmlHttp.onload=handler; objXmlHttp.onerror=handler; return objXmlHttp; } } function response() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { response_text = xmlHttp.responseText; //response = xmlHttp.responseXML.documentElement; } } /* Custom functions */ function changeQty() { var qtys = document.getElementsByName("qty[]"); var prices = document.getElementsByName("price[]"); var product_ids = document.getElementsByName("product_id[]"); var shipping_unit_ids = document.getElementsByName("shipping_unit_id[]"); var zone = document.getElementsByName('shipping_zone')[0][document.getElementsByName('shipping_zone')[0].selectedIndex].value; var gst_rate = document.getElementsByName('szgst_' + zone)[0].value; var currency = document.getElementsByName('currency')[0].value; var currency_rate = document.getElementsByName('curr_' + currency)[0].value; var currency_symbol = document.getElementsByName('cs_' + currency)[0].value; var product_total = 0; var product_total_nzd = 0; var shipping_cost = 0; var shipping_cost_nzd = 0; var total_units = 0; /* url for save cart */ var url = "/lib/order-form/cart-save.php?zone=" + zone + "¤cy=" + currency; for(i = 0; i < product_ids.length; i++) { var qty = qtys[i].value; var price = prices[i].value*currency_rate; var price_nzd = prices[i].value; var subtotal = qty * price; var subtotal_nzd = qty * price_nzd; var product_shipping = document.getElementsByName('sc_' + zone + '_' + shipping_unit_ids[i].value)[0].value * qty * currency_rate; var product_shipping_nzd = document.getElementsByName('sc_' + zone + '_' + shipping_unit_ids[i].value)[0].value * qty; total_units += parseInt(qty); product_total += subtotal; product_total_nzd += subtotal_nzd; shipping_cost += product_shipping; shipping_cost_nzd += product_shipping_nzd; /* url for save cart */ url += "&qtys[]=" + qty; url += "&product_ids[]=" + product_ids[i].value; document.getElementById('price_disp_' + product_ids[i].value).innerHTML = currency_symbol + formatAsMoney(price); if(gst_rate != 0) { //document.getElementById('price_disp_' + product_ids[i].value).innerHTML += ' (plus GST)'; } subtotal_ref = document.getElementById('subtotal_disp_' + product_ids[i].value); if(subtotal == 0) { subtotal_ref.innerHTML = ''; } else { //subtotal_ref.innerHTML = currency_symbol + formatAsMoney(subtotal) + ' + '; } if(product_shipping == 0) { subtotal_ref.innerHTML += ''; } else { //subtotal_ref.innerHTML += currency_symbol + formatAsMoney(product_shipping) + ' shipping' + ' (' + currency + ')'; } } // shipping cost adjustment // this only works if all products are the same cost (which they currently are at 11sept2007 /* var shipping_per_unit = shipping_cost / total_units; var shipping_per_unit_nzd = shipping_cost_nzd / total_units; if(total_units % 2 == 0) { shipping_cost = shipping_cost / 2; shipping_cost_nzd = shipping_cost_nzd / 2; } else { shipping_cost = shipping_per_unit * (total_units + 1) / 2; shipping_cost_nzd = shipping_per_unit_nzd * (total_units + 1) / 2; } */ var product_and_shipping = product_total + shipping_cost; var product_and_shipping_nzd = product_total_nzd + shipping_cost_nzd; var gst = product_and_shipping*gst_rate; var gst_nzd = product_and_shipping_nzd*gst_rate; var grand_total = product_and_shipping + gst; var grand_total_nzd = product_and_shipping_nzd + gst_nzd; document.getElementById("product_total").innerHTML = currency_symbol + formatAsMoney(product_total); document.getElementById('shipping_cost').innerHTML = currency_symbol + formatAsMoney(shipping_cost); document.getElementById('gst').innerHTML = currency_symbol + formatAsMoney(gst); document.getElementById('grand_total').innerHTML = currency_symbol + formatAsMoney(grand_total) + ' (' + currency + ')'; if(currency != 'NZD') { document.getElementById('currency_note').innerHTML = '* Your credit card will be charged in New Zealand Dollars ($' + formatAsMoney(grand_total_nzd) + ' NZD)'; } else { document.getElementById('currency_note').innerHTML = ''; } /* save qtys to session vars */ url += '&product_total=' + product_total_nzd; url += '&shipping_cost=' + shipping_cost_nzd; url += '&gst=' + gst_nzd; url += '&grand_total=' + grand_total_nzd; //alert(url); xmlHttp=GetXmlHttpObject(response); xmlHttp.open("GET", url , false); xmlHttp.send(null); } function formatAsMoney(mnt) { mnt -= 0; mnt = (Math.round(mnt*100))/100; return (mnt == Math.floor(mnt)) ? mnt + '.00' : ( (mnt*10 == Math.floor(mnt*10)) ? mnt + '0' : mnt); }