/*
 * Totals - block displaying total 
 * .getContents() - refreshes block from server
 * .discountCouponDiscardHandler() - handler to drop discount coupon, if set 
 * 
 * */
__Totals = function(){
	this.URLGetTotals =  SmartCheckout.APIURL+'?ax=1&function=get_total_html';
	this.container = $_('#OSCTotal');
	this.initOffset = $_('.OSCMainArea').getXY().y
	this.flyMode = !$_('#OSCTotalsInlineMode')
	this.discountCouponDiscardHandler();
	this.wheelHandler();
	if(this.flyMode){
		this.container.style.top = this.initOffset+'px'
		document.body.appendChild(this.container)
	}
}

__Totals.prototype.getContents = function(){
	if(this.container.$_('.Main')){
		this.container.$_('.Main').innerHTML = 
			'<center><img src="'+XCart.SkinDir+'/modules/Smart_Checkout/img/'+SmartCheckout.loadingIndicator+'"/></center>';
	}else{
		this.container.loading(1);
	}
	
	var self = this;
	$_(this.URLGetTotals).GET(function(data){
		self.container.innerHTML = data.stdout;
		self.discountCouponDiscardHandler();
	})
}

__Totals.prototype.discountCouponDiscardHandler = function(){
	var self = this;
	var lnk = $_('#OSCUnsetCoupon')
	if(lnk){
		lnk.onclick = function(){
			$_('#OSCCartCouponIndicator').style.visibility = 'visible';
			this.style.display = 'none';
			$_(this.href).GET(function(){
				$_('#OSCCartCouponIndicator').style.visibility = 'none';
				DiscountCoupon.enable();	
				self.getContents();
			})
			return false;
		}	
	}
}

__Totals.prototype.wheelHandler = function(){
	var self = this;
	window.onscroll = function(){
		var st = typeof window.pageYOffset == 'undefined' ? document.documentElement.scrollTop:window.pageYOffset
		var top0 = self.container.style.top || '0px';
		var newTop =  st  + self.initOffset + 'px';
		self.container.CSS({top:newTop})
		return;
		
		
		if(self.intId){
			clearTimeout(self.intId)
			self.intId = 0;
		}
		var st = typeof window.pageYOffset == 'undefined' ? window.scrollTop:window.pageYOffset
		self.intId = setTimeout(function(){
			var top0 = self.container.style.top || '0px';
			var newTop =  st + 'px';
			self.container.CSS({top:newTop})
			//self.container.mutate({top:top0}, {top:newTop}, 30)
		},
		500);
		
	}
}
