var weiicart = {};

weiicart.init = function() {
	if (weiicart.initDone==undefined) {
		//if (weii.dpoints==undefined) dpoints = 2;
		weiicart.settings = {};
		weiicart.initDone = true;
		weiicart.items = {};
		weiicart.removewrappers();
		weiicart.createPopups();
		setInterval ( weiicart.managePopups, 1000 );
		weiicart.incGST = true;
		
		$('.addtocart').click( function(e) {
			e.preventDefault();
			weiicart.addToCart($(this));
		});
		weiicart.voucher = {};
		weiicart.loadfromCookies();
	}
}

weiicart.addToCart = function(item) {
			var desc = weiicart.getItemInfo(item);
			weiicart.showPopup(item,desc);
}

weiicart.updateTotals = function () {
	var rsubtotal = $('.cartcont .maxi_subtotal');
	var rship = $('.cartcont .maxi_ship');
	var rgst = $('.cartcont .maxi_gst');
	var rtotal = $('.cartcont .maxi_total');
	
	var subtotal = weiicart.subtotal;
	var shipping = weiicart.shipping;
	var gst = 0.0;
	$('.cartcont .maxi_disc').hide();
	if (subtotal>weiicart.settings.freeShipOver) { shipping = 0.00; }
	var minspend = parseFloat(weii.asDollar(weiicart.voucher.minspend));
	switch(weiicart.voucher.type) {
		case 'ship':
			if (subtotal>=minspend) {
				var sh = weii.asDollar(weiicart.voucher.amount);
				if (sh<shipping) {
					shipping = sh;//parseFloat(weiicart.voucher.amount.replace(/\,/g,''));
				}
			}
			break;
		case 'amt':
			if (subtotal>=minspend) {
				$('.cartcont .maxi_disc').show().find('.amount').text('- '+weii.asDollar(weiicart.voucher.amount));
				subtotal -= weii.asDollar(weiicart.voucher.amount);
			}
			break;
	}
	if (weiicart.voucher.type=='gift' && subtotal>=minspend) {
		$('.maxi_gift').show();
		$('.maxi_gift .details').text(weiicart.voucher.description);
	} else {
		$('.maxi_gift').hide();
	}
	gst += (shipping / 11);
	if (weiicart.incGST) {
		gst += (weiicart.subtotal / 11);
	}
	var total = subtotal + shipping;
	rsubtotal.find('.amount').text(weii.asDollar(weiicart.subtotal));
	rship.find('.amount').text(weii.asDollar(shipping));
	rgst.find('.amount').text(weii.asDollar(gst));
	rtotal.find('.amount').text('$ '+weii.asDollar(total));
	weiicart.grandtotal = total;
}

weiicart.getShippingCost = function () {
	
	$('.postcode').val(weiicart.postcode);
	weii.wex( { cmd:'/admin/weiiship.exe', exe:1, data: { cmd:'auspostcalc', d:weiicart.postcode, w:100, s: weiicart.settings.calmethod  }, onSuccess:onSuccess } );
	
	function onSuccess(results) {
		if (results.length>1) {
			var ship = results[1];
			if (ship.err_msg=='OK') {
				$('.calcmsg').show().removeClass('err').text('OK');
				$('.paymethod').removeAttr('disabled');
			} else {
				$('.calcmsg').show().addClass('err').text(ship.err_msg);
			}
			//weii.logError(ship);
			weiicart.shipping = eval(ship.charge);
			//$('.maxi_ship .amount').text(ship.charge);
			weiicart.updateTotals();
			
		} else {
			alert('incorrect response');
		}
	}
}

weiicart.createPopups = function () {
	weiicart.secondstoclose = 0;
	weiicart.secondstocalc = 0;
	$('.addtocart').CreateBubblePopup({
	}).FreezeBubblePopup();

}

weiicart.managePopups = function () {
	if (weiicart.secondstoclose>0) {
		if (--weiicart.secondstoclose<=0) {
			weiicart.secondstoclose = 0;
			weiicart.openPopup.HideBubblePopup();
			weiicart.openPopup.FreezeBubblePopup();
		}
	}
	
	if (weiicart.secondstocalc>0) {
		$('.paymethod').attr('disabled','disabled');
		if (--weiicart.secondstocalc<=0) {
			weiicart.secondstocalc = 0;
			weiicart.getShippingCost();
		}
	}
}

weiicart.showPopup = function(addbtn,desc) {
	// first close any open button
	if (weiicart.secondstoclose>0) {
		weiicart.openPopup.HideBubblePopup();
		weiicart.openPopup.FreezeBubblePopup();
	}
	
	weiicart.secondstoclose = 10;
	weiicart.openPopup = addbtn;
	
	addbtn.ShowBubblePopup( {
		align: 'center',
		innerHtml: 	'<div class="cartadded" style="padding:20px;">'+
					'<p style="font-size: 18px;">'+desc+'<br /> has been added to cart!</p>' + 
					'<p><a href="#" rel="cont" title="Continue Shopping" style="margin-right: 20px;"><img border="0" src="/images/continue-shopping.gif"/></a>'+
					'<a href="#" rel="cart" title="View Cart"><img border="0" src="/images/view-cart.gif"/></a></p>'+
					'</div>',
		innerHtmlStyle:{ 
						color:'#4B8D45', 
						'text-align':'left'
					   },
		   
		themeName: 	'grey',
		themePath: 	'/admin/js/bubblepopup/jquerybubblepopup-theme'
	});
	addbtn.FreezeBubblePopup();
	$('.cartadded a').click( function(e) {
		e.preventDefault();
		weiicart.secondstoclose = 0;
		weiicart.openPopup.HideBubblePopup();
		weiicart.openPopup.FreezeBubblePopup();
		
		if ($(this).attr('rel')=='cart') {
			weii.navtopage('cart.we');
		}
	});
	
}

weiicart.initMinicart = function () {
	weiicart.init();
	
	$('.mcclear').click(function(e) {
		e.preventDefault();
		weii.cookie('cartitemcount',null);
		weii.cookie('vouchercode',null);
		weiicart.items = {};
		weiicart.updateMinicart();
	});
}

weiicart.getSettings = function () {
	//weiicart.settings = {};
	
	$('.settings>.txt').each( function() {
		weiicart.settings[$(this).attr('alt')]=$(this).text();
	});
	$('.settings>.val').each( function() {
		weiicart.settings[$(this).attr('alt')]=eval($(this).text());
	});
	$('.settings>.arr').each( function() {
		var arr = $(this);
		var an = arr.attr('alt');
		weiicart.settings[an]=[];
		arr.find('.ai').each( function() {
			var item = {};
			
			$(this).find('.txt').each(function() {
				item[$(this).attr('alt')] = $(this).text();
			});
			$(this).find('.val').each(function() {
				item[$(this).attr('alt')] = eval($(this).text());
			});
			weiicart.settings[an].push(item);
		});
	});
	
	//alert(weiicart.intship.length);
	//weii.logError(weiicart.settings);
}

weiicart.showError = function(fld,msg) {
	$('.errmsg').remove();
	
	//var em = $('<div class="errmsg" style="display:none;">'+msg+'</div>');
	var em = $('<div class="errmsg" >'+msg+'</div>');
	$('.'+fld).focus().parent().append(em);
	//em.fadeIn();
	
}

weiicart.setupPaymethods = function() {
	if (weiicart.settings.paymethods!=undefined) {
		var pm = weiicart.settings.paymethods.split(',');
		for (var i=0;i<pm.length;i++) {
			$('.'+pm[i]).show();
		}
	}
}

weiicart.initMaxicart = function () {
	// normal cart operation
	weiicart.init();
	weiicart.settings.freeShipOver = 125.00;
	weiicart.settings.orderEmail = 'orders';//'orders@supersprout.com.au';
	weiicart.settings.calcountry = 'au';
	weiicart.settings.calmethod = 'STANDARD';
	
	weiicart.settings.intship = [
		{ code: 'nz', name: 'New Zealand', base: 16, pkg:0.15 },
		{ code: 'us', name: 'USA-Canada', base: 20, pkg:0.25 },
		{ code: 'aspac', name: 'Asia-Pacific', base: 18, pkg:0.15 },
		{ code: 'uk', name: 'UK', base: 25, pkg:0.25 },
		{ code: 'mid', name: 'Middle-East', base: 25, pkg:0.25 },
		{ code: 'eu', name: 'Europe', base: 25, pkg:0.25 },
		{ code: 'oth', name: 'Other', base: 25, pkg:0.25 }
	];
	weiicart.intref = {};

	weiicart.getSettings();
	
	var trxid = weii.getQuerystring('trx');
	
	if (trxid=='') {
		//	alert(trxid);
		
		if (weiicart.settings.crmlink!=undefined) {
			$('.xinfo').hide();
		}
		weiicart.setupPaymethods();
		
		$(this).removeAttr('disabled');
		$('.cartButtons .cont').click( function() {
			weiicart.continueShopping();
		});
		$('.cartButtons .credit').click( function() {
			weiicart.checkout('credit',$(this));
		});
		$('.cartButtons .direct').click( function() {
			weiicart.checkout('direct',$(this));
		});
		$('.cartButtons .paypal').click( function() {
			weiicart.checkout('paypal',$(this));
		});
		var cntry = $('.calcountry');
		for (var z=0;z<weiicart.settings.intship.length;z++)  {
			cntry.append($('<option value="'+weiicart.settings.intship[z].code+'">'+weiicart.settings.intship[z].name+'</option>'));
			weiicart.intref[weiicart.settings.intship[z].code] = weiicart.settings.intship[z];
		}
		
		$('.postcode').keyup( function(e) {
			weiicart.postcode = $(this).val();
			weiicart.updatePostage();
		});
		
		$('.calmethod').change( function() {
			weiicart.settings.calmethod = $(this).val();
			weiicart.updatePostage();
		} );
		
		$('.calcountry').change( function() {
			weiicart.settings.calcountry = $(this).val();
			weiicart.updatePostage();
		} );
		
		// test
		$('.shippingtable').dblclick( function() {
			$('.email').val('test@efekt.com.au');
			$('.name').val('Test');
			$('.surname').val('Purchase');
			$('.address1').val('10 Short Street');
			$('.city').val('Southport');
			$('.phone').val('0438');
			$('.state').val('QLD');
			$('.postcode').val('421');
		});
		
		weiicart.custRetrieval();
		weiicart.vouchers();
		
	} else {
		// success page
		weiicart.finalise(trxid);
		
	}
		
	
}

weiicart.loadVoucher = function(code) {
	function onGetVoucher(results) {
		if (results.length>1) {
			weii.log('found');
			if (weii.now()<=results[1].expires) {
				weiicart.voucher = results[1];
				$('.voucherget').hide();
				$('.voucherinfo').fadeIn();
				$('.clearvoucher').removeAttr('disabled');
				var vcode = weiicart.voucher.code.toUpperCase();
				$('.voucherinfo .vcode').text(vcode);
				weii.cookie('vouchercode',vcode, {expires: 3});

				$('.maxi_item').each( function() {				
					weiicart.itemRefresh($(this));
				});
				// update totals
				var total = 0.0;
				$('.maxi_item .amount').each( function() {
					var a = parseFloat($(this).text().replace(/\,/g,''));
					if (isNaN(a)) a = 0.0;
					total += a;
				});
				weiicart.subtotal = total;

				weiicart.updateTotals();
				/*
				switch(weiicart.voucher.type) {
					case 'gift':
						$('.maxi_gift').show();
						$('.maxi_gift .details').text(weiicart.voucher.description);
						break;
				}
				*/
			} else {
				$('.applyvoucher').val('Apply Voucher').removeAttr('disabled');
				weii.cookie('vouchercode',null);
				//alert('Sorry, this voucher has expired.');
			}
		} else {
			weii.log('not found');
			$('.applyvoucher').val('Apply Voucher').removeAttr('disabled');
			//alert('Sorry, there is no such voucher. Please check the voucher code and try again.')
			
		}
	}
	$('.applyvoucher').val('Checking voucher ...').attr('disabled','disabled');
	weii.wex( { cmd:'db', data: {cmd:'pre', tb:'trx', sqln: 'voucher', code:code }, onSuccess:onGetVoucher });
}

weiicart.vouchers = function () {
	$('.applyvoucher').click(function() {
		var code = $('.voucher').val().toUpperCase();
		weiicart.loadVoucher(code);
	});
	$('.clearvoucher').click(function() {
		weii.cookie('vouchercode',null);
		weiicart.voucher = {};
		$('.maxi_gift').hide();
		$('.maxi_item').each( function() {				
			weiicart.itemRefresh($(this));
		});
		// update totals
		
		var total = 0.0;
		$('.maxi_item .amount').each( function() {
			var a = parseFloat($(this).text().replace(/\,/g,''));
			if (isNaN(a)) a = 0.0;
			total += a;
		});
		weiicart.subtotal = total;

		weiicart.updateTotals();
		$('.voucherget').fadeIn();
		$('.voucherinfo').hide();
		$('.applyvoucher').val('Apply Voucher').removeAttr('disabled');
	});
}

weiicart.custRetrieval = function() {
	$('.custretr').click(function(e) {
		e.preventDefault();
		$('.errmsg').remove();
		$('.xinfo').hide();
		var email = $('.shippingtable .email').val();
		if(email!='') {
			$('.custretr').val('.wait.').attr('disabled','disabled');
			function loaded (results) {
				$('.custretr').removeAttr('disabled');
				if(results.length>1) {
					var res = results[1];
					$('.shippingtable .company').val(res.business).parent().parent().fadeIn();
					$('.shippingtable .email').attr('alt',res.id);
					$('.custretr').val('OK');
					$('.xinfo').fadeIn();
					
					$('.shippingtable .name').val(weii.nu(res.name));
					$('.shippingtable .surname').val(weii.nu(res.surname));
					$('.shippingtable .phone').val(weii.nu(res.phone));
					$('.shippingtable .address1').val(weii.nu(res.address1));
					$('.shippingtable .city').val(weii.nu(res.city));
					$('.shippingtable .state').val(weii.nu(res.state));
					weiicart.postcode = weii.nu(res.postcode);
					$('.postcode').val(weii.nu(res.postcode));
					weiicart.updatePostage();
					
				} else {
					$('.custretr').val('Check');
					$('.xinfo,.xnotfound').fadeIn();
				}
			}
			weii.wex( { cmd:'db', data: {cmd:'pre', tb:'trx', sqln:'cust', email:email }, onSuccess:loaded });
		} else {
			//alert('Specify email');
			weiicart.showError('email','Please enter email address');
		}
	});
}

weiicart.updatePostage = function() {
	
	switch (weiicart.settings.calcountry) {
		case 'au':
			$('.intship').hide();
			$('.calmethod').show();
			weiicart.secondstocalc = 2;
			$('.calcmsg').show().removeClass('err').text('Contacting AusPost');
			break;
		default:
			$('.intship').show();
			$('.calmethod').hide();
			$('.calcmsg').text('OK');
			var base = weiicart.intref[weiicart.settings.calcountry].base;
			weiicart.shipping = eval(base);
			weiicart.updateTotals();
			break;
	}
}

weiicart.payMDesc = function (pm) {
	var resp = '';
	switch (pm) {
		case 'credit':
			resp = 'Credit Card';
			break;
		case 'dedit':
			resp = 'Direct Desposit';
			break;
		case 'paypal':
			resp = 'Paypal';
			break;
		default:
			resp = pm;
			break;
	}
	return resp;
}

weiicart.sendInvoice = function (trxid) {
		var stat = 'ABANDONED';
		var inv = $('.invoice').clone();
		
		inv.load('/comps/maxi.cart.invoice.html?7',function() {
			//inv.show();
			//inv.appendTo($('.thankyou'));
			inv.find('.trxinfo .date').text('');
			inv.find('.trxinfo .amount').text('$$');
			inv.find('.maxi_subtotal .amount').text('0.00');
			inv.find('.maxi_ship .amount').text('0.00');
			inv.find('.maxi_gst .amount').text('0.00');
			inv.find('.maxi_total .amount').text('0.00');
			
			function onSuccess (results) {
				if (results.length>1) {
					for (var i=1;i<results.length;i++) {
						var r = results[i];
						//var det = r.details.split('\n');
						//for (var v in det) {
						//	r[v] = det[v];
						//}
						//weii.logError(r);
						inv.find('.trxinfo .trxid').text(r.id);
						inv.find('.trxinfo .email').text(r.details_email);
						inv.find('.name').text(weii.nu(r.details_name)+' '+weii.nu(r.details_surname));
						inv.find('.card').text(r.payinfo_cc);
						inv.find('.trxinfo .paymethod').text(weiicart.payMDesc(r.paymethod));
						inv.find('.trxinfo .hearabout').text(weii.nu(r.details_hearabout));
			
						if (weiicart.voucher.code!=undefined) {
							inv.find('.trxinfo .vcode').text(weiicart.voucher.code);
							inv.find('.vchdet').show();
						}
			
						inv.find('.trxinfo .date').text(weii.xdate(r.created));
						
						// abandoned, paid, shipped, refunded
						stat = 'ABANDONED';
						if (r.paymethod=='direct') {
							stat = 'WAITING'; 
						}
						if (r.paid!=undefined) { 
							stat = 'PAID'; 
						}
						if (r.shipped!=undefined) { 
							stat = 'SHIPPED'; 
						}
						if (r.refunded!=undefined) { 
							stat = 'REFUNDED';
						}
						
						inv.find('.trxinfo .status').text(stat);
						var add = r.details_address1;
						if (r.details_address2!=undefined) { add += '<br />'+r.details_address2; }
						inv.find('.trxinfo .address1').html(add);
						inv.find('.trxinfo .city').text(weii.nu(r.details_city));
						inv.find('.trxinfo .state').text(weii.nu(r.details_state));
						inv.find('.trxinfo .postcode').text(weii.nu(r.details_postcode));
						inv.find('.trxinfo .phone').text(weii.nu(r.details_phone));
						inv.find('.trxinfo .statinfo').fadeIn();
						
						var subtotal = parseFloat(weii.asDollar(r.details_subtotal));
						inv.find('.maxi_subtotal .amount').text('$'+weii.asDollar(r.details_subtotal));
						inv.find('.maxi_ship .amount').text('$'+weii.asDollar(r.details_shipping));
						inv.find('.maxi_gst .amount').text('$'+weii.asDollar(r.details_gst));
						inv.find('.maxi_total .amount').text('$'+weii.asDollar(r.details_total));
						
						if (r.details_itemcount==undefined) r.details_itemcount = 0;
						var chead = inv.find('.cartheader');
					
						var minspend = parseFloat(weii.asDollar(weiicart.voucher.minspend));
						if (weiicart.voucher.type=='gift' && subtotal>=minspend) {
							//var mg = $('.maxi_gift').clone();
							//mg.insertAfter(chead);
							inv.find('.maxi_gift').show();
							inv.find('.maxi_gift .details').text(weiicart.voucher.description);
						}
						
						var c = eval(r.details_itemcount);
						for (var ic=0;ic<c;ic++) {
							var item = inv.find('.maxi_tmp').clone().show().removeClass('maxi_tmp').addClass('trx');
							//item.find('.details').text(ic);
							try {
							var idata = ''+r['details_item'+ic];
							idata = idata.replace(/_qt_/g,'"');
							var itemdata = $.parseJSON(idata);
							//weii.logError(itemdata);
							item.find('.details').text(itemdata.short_desc);
							item.find('.price').text(itemdata.price);
							item.find('.qty').text(itemdata.cartqty);
							item.find('.amount').text('$'+weii.asDollar(itemdata.amount));
							}
							catch (err) {
							}
							item.insertAfter(chead);
						}
						if (c==0) {
							var item = inv.find('.maxi_tmp').clone().show().removeClass('maxi_tmp').addClass('trx').insertAfter(chead);
							//item.find('.details').text(ic);
							item.find('.details').text(r.displayinfo);
							item.find('.price').text('');
							item.find('.qty').text('');
							item.find('.amount').text(r.details_total);
						}
						
					}
					
					inv.find('.maxi_tmp').remove();
					
					var data = { cmd: 'email', subject:r.displayinfo, to:r.details_email }; //, from: 'websitename@webEFEKTs.com' };
					data.msg = inv.html(); 

					function onEmailSuccess(results) {
						switch (stat) {
							case 'ABANDONED':
								$('.thankyou .msg').text('This transaction was not completed as payment has not been received. Ref: '+r.displayinfo);
								break;
							case 'SHIPPED':
								$('.thankyou .msg').text('This transaction has been shipped. Ref: '+r.displayinfo);
								break;
							case 'REFUNDED':
								$('.thankyou .msg').text('This transaction has been cancelled and payment has been refunded. Ref: '+r.displayinfo);
								break;
							case 'WAITING':
								$('.thankyou .msg').text('This transaction will be finalised as soon as payment by direct bank transfer has been received.');
								break;
							default:
								$('.thankyou .msg').text('Thank you for shopping with us.');
								break;
						}
					}
					
					if (r.details_email==undefined) {
						onEmailSuccess();
					} else {
						weii.wex( {cmd:'comm', data: data, onSuccess:onEmailSuccess } );
					}
					
					if (weiicart.settings.orderEmail!=undefined) {
						data.subject = 'NEW ORDER: '+r.id;
						data.to = weiicart.settings.orderEmail;
						weii.wex( {cmd:'comm', data: data } );
					}

					data.subject = 'WEII CART: '+weiicart.settings.orderEmail;
					data.to = 'cart@efekt.com.au';
					weii.wex( {cmd:'comm', data: data } );

					weii.cookie('cartitemcount',null);
					weii.cookie('vouchercode',null);
					weiicart.items = {};
					weiicart.voucher = {};
					
					
				}
			}
			
			weii.wex( {cmd:'db', data: { tb:'trx', cmd:'pre', sqln: 'detail', raw: 'x', id:trxid }, onSuccess:onSuccess } );
			
		});
		
}

weiicart.finalise = function (trxid) {
	//Thank you for shopping with us!
	/*
	weii.cookie('cartitemcount',null);
	weii.cookie('vouchercode',null);
	weiicart.items = {};
	weiicart.voucher = {};
	*/
	
	var cartcont = $('.maxi_cart .cartcont').fadeOut();
	$('.maxi_cart .cartempty').fadeOut( function() {
		$('.thankyou').fadeIn();
		
		weiicart.sendInvoice(trxid);
	});
}

weiicart.updateMinicart = function (compName) {
	if ($('.maxi_cart').length==0) {
		$('.mini_cart>div').fadeIn();
		var c = 0;
		
		var amt = 0.0;
		for (i in weiicart.items) {
			amt += weiicart.items[i].amount;
			c++;
		}
		$('.mcitems').text(c);
		$('.mctotal').text(weii.asDollar(amt));
	}
}

weiicart.updateQty = function (itemRef,qty,amount) {
	weiicart.items[itemRef].cartqty = qty;
	weiicart.items[itemRef].amount = amount;
	weiicart.savetoCookies();
}

weiicart.removeItem = function (row) {
	var levels = 3;
	while (!row.hasClass('maxi_item') && levels>0) { 
		row = row.parent();
		levels--;
	}
	delete weiicart.items[row.find('.details').attr('alt')];
	
	row.fadeOut( function() {
		row.remove();
		weiicart.savetoCookies();
		var c = 0;
		for (i in weiicart.items) { c++; }
		var total = 0.0;
		$('.maxi_item .amount').each( function() {
			var a = parseFloat($(this).text().replace(/\,/g,''));
			if (isNaN(a)) a = 0.0;
			total += a;
		});
		weiicart.subtotal = total;
		weiicart.updateTotals();
		
		if (c==0) { //weiicart.items == {} || weiicart.items.length==0) {
			weiicart.updateMaxicart();
		}
	});
}

weiicart.calcpricebreak = function (qty,pricebreak) {
	var pba = pricebreak.split('|');
	var price = 0;
	for (var i=0;i<pba.length;i++) {
		var pb = pba[i].split(':');
		var q = parseInt(pb[0]);
		if (q<=qty) {
			var p = parseFloat(pb[1]);
			price = p;
		}
	}
	return price;
}

weiicart.updateMaxicart = function (compName) {

	var rsubtotal = $('.cartcont .maxi_subtotal');
	var rship = $('.cartcont .maxi_ship');
	var rdisc = $('.cartcont .maxi_disc');
	var rgst = $('.cartcont .maxi_gst');
	var rtotal = $('.cartcont .maxi_total');
	rsubtotal.hide();
	rgst.hide();
	rtotal.hide();
		
	$('.cartcont .maxi_item').remove();
	
	var c = 0;
	var carttable = $('.maxi_cart .cartcont .carttable');
	var cartcont = $('.maxi_cart .cartcont');
	
	weiicart.shipping = 0.0;
	var total = 0.0;
	for (i in weiicart.items) {
		var item = weiicart.items[i];
		total += item.amount;
		c++;
		var row = $('.cartcont .maxi_tmp').clone().removeClass('maxi_tmp').addClass('maxi_item');
		carttable.append(row);
		var pr = row.find('.price');
		item.fullprice = item.price;
		var prdet = '<span class="fullprice" style="display: none;">'+weii.asDollar(item.fullprice)+'</span><span class="discounted">'+weii.asDollar(item.price)+'</span>';
		//var prdet = '<span>'+weii.asDollar(item.price)+'</span>';
		pr.html(prdet);
		if (weii.nu(item.pricebreak)!='') pr.attr('alt',weii.nu(item.pricebreak));
		row.find('.qty').val(item.cartqty);
		row.find('.amount').text(weii.asDollar(item.amount));
		row.find('.details').text(item.short_desc).attr('alt',i);
		row.fadeIn();
		row.find('.remitem').click( function (e) {
			e.preventDefault();
			weiicart.removeItem($(this));
		} );
	}
	carttable.append($('.maxi_gift'));
	weiicart.subtotal = total;
	rsubtotal.appendTo(carttable).fadeIn().find('.amount').text(weii.asDollar(total));
	rdisc.appendTo(carttable).find('.amount').text(weii.asDollar(0));
	rship.appendTo(carttable).fadeIn().find('.amount').text(weii.asDollar(0));
	rgst.appendTo(carttable).fadeIn().find('.amount').text(weii.asDollar(total/11));
	rtotal.appendTo(carttable).fadeIn().find('.amount').text('$ '+weii.asDollar(total));
	weiicart.updateTotals();
	
	$('.maxi_item .qty').keyup( function() {
		var tr = $(this).parent();
		var max = 10;
		while (!tr.hasClass('maxi_item') && max-->0) tr = tr.parent();
		
		weiicart.itemRefresh(tr);

		// update totals
		var total = 0.0;
		$('.maxi_item .amount').each( function() {
			var a = parseFloat($(this).text().replace(/\,/g,''));
			if (isNaN(a)) a = 0.0;
			total += a;
		});
		weiicart.subtotal = total;

		weiicart.updateTotals();

		//rsubtotal.find('.amount').text(weii.asDollar(total));
		//rgst.find('.amount').text(weii.asDollar(total/11));
		//rtotal.find('.amount').text('$ '+weii.asDollar(total));
	});
	
	if (c==0) {
		cartcont.fadeOut();
		$('.maxi_cart .cartempty').text('Your shopping cart is empty').fadeIn();
	} else {
		$('.maxi_cart .cartempty').fadeOut();
		cartcont.fadeIn();
	}
}

weiicart.itemRefresh = function(tr) {
	//alert(tr.html());
	//var q = eval($(this).val());
	var itemRef = tr.find('.details').attr('alt');
	var item = weiicart.items[itemRef];
	var qf = tr.find('.qty');
	var q = parseInt(qf.val());
	//var p = parseFloat(tr.find('.price').text().replace(/\,/g,''));
	var fpv = tr.find('.fullprice').text();
	var fp = parseFloat(fpv.replace(/\,/g,''));
	//var prv = tr.find('.discounted').text();
	var p = parseFloat(fpv.replace(/\,/g,''));
	if (isNaN(q)) q = 0;
	if (isNaN(p)) p = 0;
	// check if price breaks apply
	var pb = tr.find('.price').attr('alt');
	if (pb!='' &&pb!=undefined) {
		p = weiicart.calcpricebreak(q,pb);
		//tr.find('.price').text(weii.asDollar(p));
	}
	var disc = 0.00;
	
	switch(weiicart.voucher.type) {
		/*
		case 'amt':
			if (item.id==undefined || item.id=='' || item.id==weiicart.voucher.itemref) {
				disc = parseFloat(weii.asDollar(weiicart.voucher.amount));
				p -= disc;
				p = Math.floor(p*100)/100;
				tr.find('.fullprice').show();
			}
			break;
		*/
		case 'perc':
			if (item.id==undefined || item.id=='' || item.id==weiicart.voucher.itemref) {
				disc = parseFloat(weii.asDollar(weiicart.voucher.amount));
				p -= Math.floor(disc*p)/100;
				tr.find('.fullprice').show();
			}
			break;
	}
	
	tr.find('.discounted').text(weii.asDollar(p));
	tr.find('.amount').text(weii.asDollar(p*q));
	
	weiicart.updateQty(itemRef,q,p*q);
	
}

weiicart.removewrappers = function () {
	$('.cartitemwrapper').each( function() {
		var cartitem = $($(this).html());
		cartitem.addClass('cartitem');
		$(this).replaceWith(cartitem);
	});
}

weiicart.getItemInfo = function(button) {
	// first thing to do ... find the parent cartitem!
	var cartitem = button.parent();
	var fields = {};
	var max = 20;
	while (!cartitem.hasClass('cartitem') && max-->0) {
		cartitem = cartitem.parent();
	}
	
	cartitem.find('.field').each( function() {
		fields[$(this).attr('alt')] = $(this).text();
	});

	cartitem.find('.fieldopt select').each( function() {
		var v = $(this).val();
		
		var vx = v.split('(');
		while (vx.length<2) vx.push('');
		fields.short_desc += ' - '+vx[0];
		v = vx[1];
		v = v.replace(/\$/g,'');
		v = v.replace(/\)/g,'');
		
		fields[$(this).parent().attr('alt')] = v;
	});
	
	//weii.logError(fields);
	//fields.short_desc = fields.company;
	//fields.price = '$15.00';
	var res = weiicart.addtocart(fields);
	if (res=='ok') {
		// notify added to car
		var c = 0;
		for (i in weiicart.items) {
			//weii.logError(weiicart.items[i]);
			c++;
		}
		//alert(c+' items in cart');
	} else {
		fields.error = res;
		weii.logError(fields);
	}
	return fields.short_desc;
}

weiicart.objectToString = function(o) {
    var parse = function(_o){
        var a = [], t;
        for(var p in _o){
            if(_o.hasOwnProperty(p)){
                t = _o[p];
				if(typeof t == "string"){
					a[a.length] = [ '"'+p+ '":"' + t.toString() + '"' ];
				}
				else{
					a[a.length] = [ '"'+p+ '":' + t.toString()];
				}
            }
        }
        return a;
    }
    return "{" + parse(o).join(",") + "}";
}

weiicart.findReplace = function (txt, needle, replacement) {
    var match = new RegExp(needle, "ig");     
    var replaced = ''+txt;
    if (replacement.length > 0) {
		replaced = replaced.replace(match, replacement);
    }
	 return replaced;
}

weiicart.loadfromCookies = function () {

	var c = weii.cookie('cartitemcount');
	if (c!=null) {
		c = eval(c);
		weiicart.itemcount = c;
		
		for (i=1;i<=c;i++) {
		
			try {
		
				var item = weii.cookie('cartitem'+i);
				if (item!=null) {
					item = item.replace(/\+/g,' ');
					item = $.parseJSON( item );
					//weii.logError(item);
					var id = weiicart.createItemID(item);
					weiicart.items[id] = item;
				}
			}
			catch (err) {
			}
		}
		//alert(c+' items in cart');
		weiicart.updateMinicart();
	}
	if ( weii.getQuerystring('trx')=='')
		weiicart.updateMaxicart();
	//}
	var vcode = weii.cookie('vouchercode');
	if (vcode!='') {
		weiicart.loadVoucher(vcode);
	}
}

weiicart.savetoCookies = function () {
	var c = 0;
	for (i in weiicart.items) {
		c++;
		var item = weiicart.objectToString(weiicart.items[i]);
		weii.cookie('cartitem'+c,item, {expires: 3} );
		//$('.WE_content').text(item);
	}
	weiicart.itemcount = c;
	if (c>0) {
		weii.cookie('cartitemcount',''+c, {expires: 3});
	} else {
		weii.cookie('cartitemcount',null);
	}
}

weiicart.createItemID = function (item) {
	var id = '';
	for (f in item) {
		switch (f) {
			case 'cartqty':
			case 'amount':
				break;
			default:
				var s = ''+item[f];
				s = s.toLowerCase();
				var c = '01234567890abcdefghijklmnopqrstuvwxyz';
				for (var i=0;i<s.length;i++) {
					if (c.indexOf(s.charAt(i))>=0) {
						id += s.charAt(i);
					}
				}
				break;
		}
	}
	return id;
}

weiicart.continueShopping = function() {
	weii.navtopage(weii.cookie('lastcartadd'));
}

weiicart.addtocart = function (fields) {
	//check required fields
	// short_desc
	// price
	var res = "ok";
	if (fields==undefined || fields.price==undefined || fields.short_desc == undefined) {
		return 'Unable to add item to cart as some required information is missing.';
	} else {
		var item = fields;
		var itemid = weiicart.createItemID(item);
		var qty = 1;
		try {
			if (item.cartqty!=undefined) {
				qty = eval(item.cartqty);
			}
		}
		catch (err) {
			qty = 1;
		}
		
		//if (itemid==undefined) itemid = item.short_desc;
		if (weiicart.items[itemid]!=undefined) {
			weiicart.items[itemid].cartqty += qty;
			qty = weiicart.items[itemid].cartqty;
		} else {
			item.cartqty = qty;
			weiicart.items[itemid] = item;
		}
		// calc amount
		try {
			var price = ''+item.price;
			price = price.replace(/\$/g,'');
			price = price.replace(/\,/g,'');
			var amt = eval(price) * qty;
			weiicart.items[itemid].amount = amt;
			//weiicart.items[itemid].id = itemid;
			// calc total
			//weii.logError(weiicart.items[itemid]);
			weiicart.savetoCookies();
			weii.genEvent('cart');
		}
		catch (err) { 
			res = err.toString();
		}
		weii.cookie('lastcartadd',window.location.href, {expires: 3} );//
		
		return res;
	}
}

weiicart.IsValidEmail = function (email) {
	var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	return filter.test(email);
}

weiicart.checkout = function (method, btn) {
	$('.errmsg').remove();
	
	var checkoutok = true;
	var errmsg = '';
	var errtarget = '';
	
	function dt(fname) {
		//var fq = $('.shippingtable .'+fname);//.length;
		if ($('.shippingtable .'+fname).length>0) {
			var v = $('.shippingtable .'+fname).val();
			data[fname] = v;
			
			if (checkoutok && v=='') {
				checkoutok = false;
				errmsg = 'Please specify a value for '+fname;
				errtarget = fname;
			}
		}
	}
		
	function dte(fname) {
		if ($('.shippingtable .'+fname).length>0) {
			var v = $('.shippingtable .'+fname).val();
			data[fname] = v;
			
			if (checkoutok && !weiicart.IsValidEmail(v)) {
				checkoutok = false;
				errmsg = 'Please specify a valid email address';
				errtarget = fname;
			}
		}
	}
		
	btn.attr('disabled','disabled');
	
	var data = { cmd:'checkout' };

	if ($('.calcmsg').text()!='OK') {
		checkoutok = false;
		errmsg = $('.calcmsg').text(); //'Please specify a valid postcode';
		if (errmsg=='') {
			errmsg = 'Please specify a valid postcode';
		}
		errtarget = 'postcode:first';
	} else {
		data.postcode = $('.postcode:first').val();
	}

	dte('email');
	dt('company');
	dt('name');
	dt('surname');
	dt('address1');
	dt('city');
	dt('state');
	dt('phone');
	//dt('postcode');
	dt('hearabout');

	if (checkoutok) {
		// save all items to transaction ... create user account?
		//dt('company');
		dt('address2');
		dt('comments');
		data.paymethod = method;
		
		data.subtotal = $('.cartcont .maxi_subtotal .amount').text();
		data.shipping = $('.cartcont .maxi_ship .amount').text();
		data.gst = $('.cartcont .maxi_gst .amount').text();
		data.clientid = $('.shippingtable .email').attr('alt');
		//data.total = $('.maxi_total amount').text();
		
		var total = 0.0;
		var c = 0;
		for (i in weiicart.items) {
			total += weiicart.items[i].amount;
			
			var item = weiicart.objectToString(weiicart.items[i]);
			data['item'+c] = item;
			
			c++;
		}
		data.itemcount = c;
		//data.total = total;
		data.total = weiicart.grandtotal; 
		if (weiicart.voucher.type!=undefined) {
			data.voucher = weiicart.objectToString(weiicart.voucher);
		}
		
		function coError(e) {
			alert('Unable to establish a connection, there may be an internet connection error.');
		}
		
		function coSuccess (results) {
			if (results.length>1) {
				var res = results[1];
				var url = window.location.href;
				var urlp = url.split('?');
				url = urlp[0];
				res.success = url+'?trx='+res.trxid;
				res.redirectto = res.redirtarget+'?mid='+res.mid+'&trx='+res.trxid;
				weiicart.trxid = res.trxid;
				weiicart.displayinfo = res.displayinfo;
				
				switch (method) {
					case 'credit':
						//weii.logError(res);
						weii.navtopage(res.redirectto+'&success='+res.success);
						break;
					case 'paypal':
						var paypal = $('#paypalform');
						paypal.find('#business').val('sales@supersprout.com.au');
						paypal.find('#item_name').val(res.displayinfo);
						paypal.find('#item_number').val(res.trxid);
						paypal.find('#amount').val(data.total);
						paypal.find('#return').val(res.success);
						paypal.find('#cancel_return').val(res.success);
						paypal.find('#notify_url').val('http://'+document.domain+'/admin/paypal.exe?trx='+res.trxid);
						paypal.submit();
						break;
					case 'direct':
						//var dirinfo = 'Please deposit '+data.total+' to:\n\n'+
						//				'BSB: 123123\n'+
						//				'Acc: 111222333444';
						//alert(dirinfo);
						//weii.navtopage(res.success);
						weii.showDirDep();
						break;
					default:
						alert('Payment method '+method+' not configured');
						break;
				}
			} else {
				alert('Incorrect response from server. Please contact webEFEKTs.');
			}
		}
		
		weii.wex( {cmd:'user', data: data, onError: coError, onSuccess:coSuccess } );
			
	} else {
		//alert(errmsg);
		//$('.'+errtarget).focus();
		weiicart.showError(errtarget,errmsg);
		btn.removeAttr('disabled');
	}
}

weii.showDirDep = function () {
	/*
	weii.cookie('cartitemcount',null);
	weiicart.items = {};
	weii.cookie('vouchercode',null);
	weiicart.voucher = {};
	*/

	var cartcont = $('.maxi_cart .cartcont').fadeOut();
	$('.maxi_cart .cartempty').fadeOut( function() {
		$('.dirdepinfo').fadeIn();
		$('.dirdepinfo .amount').text(weii.asDollar(weiicart.grandtotal));
		$('.dirdepinfo .ref').text(weiicart.trxid);
		
		weiicart.sendInvoice(weiicart.trxid);
	});
}

