/**
 * minicart.js
 * eFashionSolutions' Meteor JavaScript Library
 * 2008.10.27
 * TJ Eastmond <tj.eastmond@gmail.com>
 */

var minicart = {};

(function() {

	minicart.options = { quickCartId : 'quick_minicart', openFor : 4500, ajaxURL : '/cart/ajaxadd/', top : 0, currentTop : 0 };

	minicart.open = function() {
		if(!$(minicart.options.quickCartId).visible()) {
			minicart.top();
			Effect.SlideDown(minicart.options.quickCartId, { duration : 0.3 });
			minicart.observe();
		}
		return false;
	};

	minicart.close = function() {
		if($(minicart.options.quickCartId).visible()) { Effect.SlideUp(minicart.options.quickCartId, { duration : 0.5 }); }
		minicart.stopobserve();
		return false;
	};

	minicart.openClose = function() {
		minicart.open();
		var timer = setTimeout(function() {
			minicart.close();
		}, minicart.options.openFor);
	};

	minicart.observe = function() {
		Event.observe(window, 'scroll', minicart.top);
	};

	minicart.stopobserve = function() {
		Event.stopObserving(window, 'scroll', minicart.top);
	};

	minicart.displayUpdate = function(content) {
		minicart.content(content);
		minicart.openClose();
	};

	minicart.content = function(content) { $('quick_minicartContent').innerHTML = content; };

	minicart.top = function() {
		var mc = $(minicart.options.quickCartId);
		var t = document.viewport.getScrollOffsets().top;

		if (t <= minicart.options.top) {
			minicart.options.currentTop = minicart.options.top;
			mc.setStyle({ top : minicart.options.top + 'px' });
		} else if (t > minicart.options.currentTop) {
			minicart.currentTop = t;
			mc.setStyle({ top : t + 'px' });
		}
	};

	minicart.addItemToCart = function(productid, color, size, quantity, optional) {
		var vars = 'productid=' + productid + '&color=' + color + '&size=' + size + '&quantity=' + quantity + '&optional=' + optional;
		new Ajax.Request(minicart.options.ajaxURL, {
			method: 'post',
			parameters : vars,
			onSuccess: function(t) {
				ModalIFrame.close();
				minicart.content(t.responseText);
				minicart.openClose.delay(.6);
			}
		});
	};

	minicart.getPosition = function() {
		var mc = $(minicart.options.quickCartId);
		mc.show();
		var dims = mc.viewportOffset();
		mc.hide();
		return dims;
	};

	minicart.updateWidget = function(transport) {
		Effect.BlindUp('minicartWrapper',
		{afterFinish : function(obj) {
			$('minicartWrapper').style.display = 'none';
			$('widgetMiniCart').replace(transport.responseText);
			Effect.BlindDown('minicartWrapper');

		}})
	};

	minicart.init = function() {

		/*
		if ($('minicart_open')) {
			Event.observe('minicart_open', 'click', function(e) {
				minicart.openClose();
				Event.stop(e);
			});

			if ($('minicart_close')) {
				Event.observe('minicart_close', 'click', function(e) {
					minicart.close();
					Event.stop(e);
				});
			}
		}
		*/

		$A($$('.minicart_open')).each(function(element) {
			Event.observe(element, 'click', function(e) {
				minicart.openClose();
				Event.stop(e);
			});
		});

		if ($(minicart.options.quickCartId)) {
			minicart.options.currentTop = minicart.options.top = minicart.getPosition().top;
		}

	};

	window.onload = function() { minicart.init(); };

})();

