var cartElem = document.getElementById('attachedCart');
var cartX = 0;
if(cartElem) cartX = cartElem.offsetLeft;

function findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }

function getViewportHeight() {
 var viewportheight;
 
 // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
 
 if (typeof window.innerWidth != 'undefined')
 {
      viewportheight = window.innerHeight;
 }
 
// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)

 else if (typeof document.documentElement != 'undefined'
     && typeof document.documentElement.clientWidth !=
     'undefined' && document.documentElement.clientWidth != 0)
 {
       viewportheight = document.documentElement.clientHeight;
 }
 
 // older versions of IE
 
 else
 {
       viewportheight = document.getElementsByTagName('body')[0].clientHeight;
 }	
 return viewportheight;
}

if(cartElem) {
	var origPos = findPosY(cartElem);
	var scroller = null;
	
	Effect.Transitions.EaseTo = function(pos) {
    return Math.pow(pos,0.25);
};

	var whateverEndFunc = function () {
    var delay = 50; // milliseconds
    var whateverTimeout;
    
    return function () {
        if (whateverTimeout) {
            clearTimeout(whateverTimeout);
        }
        
        whateverTimeout = setTimeout(function () {
            scrollToTop();
			// YOUR [onResize, onScroll or onMousemove] CODE HERE
        }, delay);
    };
}();

	function scrollToTop() {
		var cartTop = findPosY(cartElem); // top of cart element
		var cartBottom = cartTop + cartElem.offsetHeight; // bottom of cart element
		var screenBottom = getViewportHeight() + document.documentElement.scrollTop; // bottom of viewport
		var screenTop = document.documentElement.scrollTop; // top of viewport
		if(isWebkit) screenTop = document.body.scrollTop;
		if(cartTop != screenTop - origPos) {
			var newPos = screenTop - origPos;
			if(newPos < 0) newPos = 0;
			//scroller = new Effect.Move(cartElem, {x: (cartX ? cartX : cartElem.offsetLeft), y: newPos, mode: 'absolute', transition: Effect.Transitions.EaseTo, afterFinish: finishCartFloat});
		}
	}

	
	function scheduleScroll() {
		if(scroller) return;
		var yPos = findPosY(cartElem);
		doScroll = setTimeout('startScroll()', 300);
	}
	
	function finishCartFloat(obj) {
		scroller = null;	
	}
	
	function startScroll() {
		if(!showBrowserWarn) { return; }
		//if(scroller) return;
		var cartTop = findPosY(cartElem); // top of cart element
		var cartBottom = cartTop + cartElem.offsetHeight; // bottom of cart element
		var screenBottom = getViewportHeight() + document.documentElement.scrollTop; // bottom of viewport
		var screenTop = document.documentElement.scrollTop; // top of viewport
		if(cartBottom != screenBottom) {
			//scroller = new Effect.Move(cartElem, {x: (cartX ? cartX : cartElem.offsetLeft), y: screenBottom - cartElem.offsetHeight, mode: 'absolute', transition: Effect.Transitions.EaseTo, afterFinish: finishCartFloat});
			cartElem.style.top = (screenBottom - cartElem.offsetHeight) + 'px';
			cartElem.style.left = '0px';
		}
	}
	
	if(showBrowserWarn) {
		/*window.onscroll = function() {
			whateverEndFunc();	
		};*/
		setInterval('startScroll()', 150);
	}
}

if(showBrowserWarn && cartElem) {
	cartElem.style.position = 'absolute';
	window.onscroll = startScroll;	
}

// scripts to show attached cart widget
var cartVisible = false;
function showCartWidget(ov) {
	if(!ov && cartVisible) return;
	var e = $('attachedCartWidget');
	var a = $('attachedCart');
	if(e && a) {
		//e.style.display = 'block';	
		if(!ov) new Effect.Appear(e);
		else e.style.display = 'block';
		cartVisible = true;
	}
}

function hideCartWidget() {
	if(!cartVisible) return;
	var e = $('attachedCartWidget');
	if(e) {
		new Effect.Fade(e);	
		cartVisible = false;
	}
}


