/* All Web Promotion Floating Shopping Cart Summary v1.0.0 */

(function($){
	$.awpFloatingCartSummary = function (options) {

		var defaults = {
			'storeDomainName'			: 'storedomain.com',
			'url'						: 'https://p12.secure.hostingprod.com/@site.storedomain.com/ssl/allwebpromotion',
			'urlX'						: 'http://site.storedomain.com/allwebpromotion',
			'cookieName'				: 'awpcartsummary',
			'cookieDays'				: 7,
			'messageUnderId'			: '#shipping-limit-under-message',
			'messageOverId'				: '#shipping-limit-over-message',
			'limitValueId'				: '#shipping-limit-value',
			'limitAmountId'				: '.shipping-limit-amount',
			'limitRemainderId'			: '.shipping-limit-difference',
			'cartSummaryId'				: '.cart-summary',
			'cartMessageUnderId'		: '.cart-summary .shipping-under-limit',
			'cartMessageUnderDisplay'	: 'inline',
			'cartMessageOverId'			: '.cart-summary .shipping-over-limit',
			'cartMessageOverDisplay'	: 'inline',
			'cartNoneMessageId'			: '.cart-summary .nocart',
			'cartNoneMessageDisplay'	: 'inline',
			'cartLimitAmoutId'			: '.cart-summary .shipping-limit-amount',
			'cartLimitRemainderId'		: '.cart-summary .shipping-limit-difference',
			'cartNumitemsId'			: '.cart-numitems',
			'cartQuantityId'			: '.cart-quantity',
			'cartSubtotalId'			: '.cart-subtotal',
			'cartTotalId'				: '.cart-total'
		};

		var settings = $.extend({}, defaults, options);

		$(document).ready(function() {

			var delimiter = '|';
			var shippingLimit = toFloat($(settings.limitValueId).text());
			var shippingRemainder = 0;

			if ($('#ys_cart .ys_basket').size() > 0) {

				var val = new Array();
				var numItems = 0;
				var quantity = 0;
				var subtotal = 0;
				var total = 0;
		
				$('.ys_basket .ys_orderLine').each(function () {
					var x = $(this).find("td:contains('Subtotal')").next().text();
					if (x) {
						subtotal = x;
						return;
					}
				});
				if (subtotal != 0) {
					subtotal = toFloat(subtotal);
				}
				val[2] = subtotal;
		
				$('.ys_basket .ys_orderLine').each(function () {
					var x = $(this).find("td:contains('Total')").next().text();
					if (x) {
						total = x;
						return;
					}
				});
				total = toFloat(total);
				val[3] = total;
		
				val[4] = shippingLimit;
				shippingRemainder = parseFloat(shippingLimit - subtotal).toFixed(2);
				val[5] = shippingRemainder;

				var jCartItemRows = $('#ys_cart .ys_basket .ys_evenRow, #ys_cart .ys_basket .ys_oddRow');
				if (jCartItemRows.size() > 0) {
					jCartItemRows.each(function () {
						var name = $(this).find('.ys_items .ys_itemInfo strong a').text();
						if (name) {
							numItems++;
							var quan = $(this).find('.ys_quantity label input').val();
							if (quan) {
								var x = parseInt(quan);
								quantity += x;
							}
						}
					});
				}
		
				val[0] = quantity;
				val[1] = numItems;
		
				var data = val.join(delimiter).replace('+', '{plus}');
				var src = settings.url + '/awp-floating-cart.php'
							+ '?n=' + settings.cookieName
							+ '&c=' + data
							+ '&e=' + settings.cookieDays
							+ '&d=' + settings.storeDomainName
							+ '&u=' + settings.urlX;

				$('<img width="1" height="1" border="0" src="' + src + '" />').appendTo('body'); // must append IMG for IE6

				$(settings.messageUnderId + ',' + settings.messageOverId + ',' + settings.limitValueId).css('display', 'none');
				if (shippingLimit > 0) {			
					$(settings.limitAmountId).text(shippingLimit);
					if (shippingRemainder > 0) {
						$(settings.messageUnderId).css('display', 'block');
						$(settings.limitRemainderId).text(shippingRemainder);
					} else {
						$(settings.messageOverId).css('display', 'block');
					}
				}

			}

			if (cookiesEnabled()) {

				var valc = getCookie(settings.cookieName);
				$(settings.cartSummaryId).css('display', 'block');
				$(settings.cartMessageUnderId
				  + ',' + settings.cartMessageOverId
				  + ',' + settings.cartNoneMessageId).css('display', 'none');

				if (valc) {
					var val = valc.replace('{plus}', '+').split(delimiter);
					if (settings.cartQuantityId) {
						$(settings.cartQuantityId).html((val[0]) ? val[0] : '&nbsp;');
					}
					if (settings.cartNumitemsId) {
						$(settings.cartNumitemsId).html((val[1]) ? val[1] : '&nbsp;');
					}
					if (settings.cartSubtotalId) {
						$(settings.cartSubtotalId).html((val[2]) ? val[2] : '&nbsp;');
					}
					if (settings.cartTotalId) {
						$(settings.cartTotalId).html((val[3]) ? val[3] : '&nbsp;');
					}
					var shipLimit = parseFloat(val[4]).toFixed(2)
					var shipRemainder = parseFloat(val[5]).toFixed(2);
					if (shipLimit > 0) {			
						$(settings.cartLimitAmoutId).text(shipLimit);
						$(settings.cartLimitRemainderId).text(shipRemainder);
						if (shipRemainder > 0) {
							$(settings.cartMessageUnderId).css('display', settings.cartMessageUnderDisplay);
						} else {
							$(settings.cartMessageOverId).css('display', settings.cartMessageOverDisplay);
						}
					}
				} else {
					$(settings.cartNoneMessageId).css('display', settings.cartNoneMessageDisplay)
				}

			} else {
				$(settings.cartSummaryId).css('display', 'none');
			}

		}); /* end ready() */
	
		function getCookie (name) {
			var beg = document.cookie.indexOf(name + '=' );
			var len = beg + name.length + 1;
			if ((!beg) && (name != document.cookie.substring(0, name.length))) {
				return null;
			}
			if (beg == -1) { return null; }
			var end = document.cookie.indexOf(';', len );
			if (end == -1) { end = document.cookie.length; }
			return unescape(document.cookie.substring(len, end));
		}
		
		function cookiesEnabled () {
			document.cookie = name + "=none;path=/";
			return (getCookie(name));
		}

		function toFloat (w) {
			var digitsStr = '0123456789';
			var pos;
			for (var i=0;i<w.length;i++) {
				pos = digitsStr.indexOf(w.substr(i, 1));
				if (pos != -1) {
					return parseFloat(w.substr(i)).toFixed(2);
				}
			}
			return parseFloat('x');
		}

	};
})(jQuery);
