var cart = { add: function(pid) { new Ajax.Request('/shop/addcart/', { parameters: { pid: pid, qty: $('qty_'+pid).value }, onLoading: function() { cart.setLoad('cn_'+ pid); }, onSuccess: function(transport, json) { var data = transport.responseText.evalJSON(); $(data.update_div).update(data.in_cart); $('topcart').update(data.main_cart); } }); }, setLoad: function(div) { $(div).show(); $(div).update(""); }, edit: function() { new Ajax.Request('/shop/editcart/', { method: 'get', onLoading: function() { cart.setLoad('overlay_cart'); }, onSuccess: function(transport, json) { var data = transport.responseText.evalJSON(); $('overlay_cart').update(data.update); $('topcart').update(data.main_cart); } }); }, update: function(id) { var i = id.replace(/update-/, ''); new Ajax.Request('/shop/updatecart/', { parameters: { id: i, qty: $('qty-'+ i).value }, onLoading: function() { cart.setLoad('overlay_cart'); }, onSuccess: function(transport, json) { var data = transport.responseText.evalJSON(); $('overlay_cart').update(data.update); $('topcart').update(data.main_cart); cart.updateCheckoutCart(); } }); }, remove: function(id) { var i = id.replace(/remove-/, ''); new Ajax.Request('/shop/removecart/', { parameters: { id: i }, onLoading: function() { cart.setLoad('overlay_cart'); }, onSuccess: function(transport, json) { var data = transport.responseText.evalJSON(); if (data.total == 0) { $('overlay_cart').update(); $('overlay_cart').hide(); } else { $('overlay_cart').update(data.update); } $('topcart').update(data.main_cart); cart.updateCheckoutCart(); } }); }, updateCheckoutCart: function() { if (httpLocation.directory == '/checkout/') { new Ajax.Request('/checkout/showcart/', { onSuccess: function(transport, json) { $('co_cart').update(transport.responseText); } }); } else { return false; } }, dump: function() {} }; var checkout = { copyFields: function(target) { var ship = $$(".ship"); ship.each(function(e) { var t = $(e).name; var y = t.replace(/s_/, 'b_'); if (target.checked == true) { Form.Element.setValue(y, e.value); } else { Form.Element.setValue(y, ''); } }); }, checkFields: function() { // nothing // } }; var httpLocation = { url: location, parse: function() { var params = this.parseUri(location); Object.extend(this, params); }, options: { strictMode: false, key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], q: { name: "queryKey", parser: /(?:^|&)([^&=]*)=?([^&]*)/g }, parser: { strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ } }, parseUri: function(str) { var o = this.options, m = o.parser[o.strictMode ? "strict" : "loose"].exec(str), uri = {}, i = 14; while (i--) uri[o.key[i]] = m[i] || ""; uri[o.q.name] = {}; uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) { if ($1) uri[o.q.name][$1] = $2; }); return uri; }, swap: function(url) { document.location.href = url; } }; Event.observe(window, 'load', function(event) { httpLocation.parse(); var currentContentHeight = document.body.offsetHeight; if (currentContentHeight < window.innerHeight) { $$('html')[0].style.height = '100%'; } }); Event.observe(document, 'click', function(event) { var target; if (!event) { event = window.event; } if (event.target) { target = event.target; } else if (event.srcElement) { target = event.srcElement; } if (target.nodeType == 3) { target = target.parentNode; } var id = target.id; var classID = target.className; if (id == 'editcart') { cart.edit(); } if (id == 'cart_close') { $('overlay_cart').hide(); } if (classID == 'cart_update') { cart.update(id); } if (classID == 'cart_remove') { cart.remove(id); } if (id == 'co_same') { checkout.copyFields(target); } if (id == 'co_submit') { //checkout.checkFields(); } }); var reportStatus = new Array(); function report ( msg ) { reportStatus.push ( msg ); } function showReport ( err ) { alert ( reportStatus.join ( "\n" ) ); } window.onerror = function ( err, url, line ) { report ( err + " [" + url + " - line " + line + "]" ); showReport(); }