//these are the functions for the minicart item
//assumes prototype is installed
var miniCart;
var headerCartLink;

var offsetParentObject = 0;
var globalOffsetLeft = 0;
var globalOffsetTop = 0;

var currentMinicartTop = 0;		//for interval polling, where is the minicart
var polling = false;			//for interval polling, whether to continue

function showMiniCart() {
	if(miniCart) {
		//this gets the location of the cart link regardless of window size
		offsetParentObject = headerCartLink.offsetParent;
		globalOffsetLeft = headerCartLink.offsetLeft + -35;
		globalOffsetTop = headerCartLink.offsetTop + headerCartLink.offsetHeight + 4;
		
		//this is mostly for IE.  The offset parent in FF is document, nbut in IE, it's offset from parent's topleft corner
		while(offsetParentObject != null && offsetParentObject != document) {
			globalOffsetLeft += offsetParentObject.offsetLeft;
			globalOffsetTop += offsetParentObject.offsetTop;
			offsetParentObject = offsetParentObject.offsetParent;
		}

		miniCart.style.left = globalOffsetLeft + "px";		//set left
		miniCart.style.top = globalOffsetTop + "px";		//set top
		miniCart.style.display = "block";					//show it

		currentMinicartTop = globalOffsetTop;
		//periodically poll for the
		polling = true;
		listenForMove(); 
	}
	headerCartLink.onclick = hideMiniCart;
	//find the cart link's location on the page
	
}

function hideMiniCart() {
		miniCart.style.display = "none";
		headerCartLink.onclick = showMiniCart;
		polling = false;
}

function listenForMove() {
	if(miniCart) {
		if(polling) {
			var visibleTop = document.body.scrollTop || this.pageYOffset;
			if(currentMinicartTop < visibleTop + globalOffsetTop) {
				var outOfRange = visibleTop + globalOffsetTop - currentMinicartTop;
				if(outOfRange > 100) {
					currentMinicartTop += 50;
				} else if(outOfRange > 20) {
					currentMinicartTop += 10;
				} else if(outOfRange > 10) {
					currentMinicartTop += 2;
				} else {
					currentMinicartTop++;
				}
			} else if(currentMinicartTop > visibleTop + globalOffsetTop) {
				var outOfRange = currentMinicartTop - visibleTop + globalOffsetTop;
				if(outOfRange > 100) {
					currentMinicartTop -= 50;
				} else if(outOfRange > 20) {
					currentMinicartTop -= 10;
				} else if(outOfRange > 10) {
					currentMinicartTop -= 2;
				} else {
					currentMinicartTop--;
				}
			} else if(currentMinicartTop == visibleTop + globalOffsetTop) {
				miniCart.style.top = (currentMinicartTop) + "px";		//move top
			}

			miniCart.style.top = (currentMinicartTop) + "px";		//move top

			if(polling)
				setTimeout("listenForMove();",1);

		}
	}
}