YAHOO.namespace("oQuickCart");

function quickCartStartup() {
	//set defaults
	YAHOO.oQuickCart.currentItem = 0;
	YAHOO.oQuickCart.currentPos = 0;
	YAHOO.oQuickCart.oPointer = 0;
	YAHOO.oQuickCart.cartData = Array(0);
	
	YAHOO.oQuickCart.oImgContainer =  new YAHOO.util.Element('qcImageContainer');
	YAHOO.oQuickCart.oImgContainer.element = document.getElementById('qcImageContainer');
		
	YAHOO.oQuickCart.oCartImage =  new YAHOO.util.Element('qcCartImage');
	YAHOO.oQuickCart.oCartImage.element = document.getElementById('qcCartImage');
	
	YAHOO.oQuickCart.oCartImageLink =  new YAHOO.util.Element('qcCartImageLink');
	YAHOO.oQuickCart.oCartImageLink.element = document.getElementById('qcCartImageLink');
	
	YAHOO.oQuickCart.oCartActions =  new YAHOO.util.Element('qcCartActions');
	YAHOO.oQuickCart.oCartActions.element = document.getElementById('qcCartActions');

	YAHOO.oQuickCart.oLeftArrow =  new YAHOO.util.Element('qcLeftArrow');
	YAHOO.oQuickCart.oLeftArrow.element = document.getElementById('qcLeftArrow');
		
	YAHOO.oQuickCart.oRemoveAction =  new YAHOO.util.Element('qcRemoveAction');
	YAHOO.oQuickCart.oRemoveAction.element = document.getElementById('qcRemoveAction');

	YAHOO.oQuickCart.oRightArrow =  new YAHOO.util.Element('qcRightArrow');
	YAHOO.oQuickCart.oRightArrow.element = document.getElementById('qcRightArrow');
		
	//set event listeneras	
	YAHOO.util.Event.addListener(YAHOO.oQuickCart.oRemoveAction.element, "click", removeCartProduct);	
	YAHOO.util.Event.addListener(YAHOO.oQuickCart.oRightArrow.element, "click", nextCartProduct);	
	YAHOO.util.Event.addListener(YAHOO.oQuickCart.oLeftArrow.element, "click", lastCartProduct);	
		
	//load cart
	var loadQuickCartCallback = {
	  success: function(o) {
		  /*success handler code*/
		var responseData = eval('(' + o.responseText + ')' );
		if (responseData.cartwidgetData.items != undefined) {
			if (responseData.cartwidgetData.items.length > 0) {
				YAHOO.oQuickCart.cartData = responseData.cartwidgetData.items;
				loadQuickCart();
			} else {
				updateQuickCartControls;
			}
		} else {
			updateQuickCartControls();
		}
	  },
	  failure: function(o) {
		  //alert('Error');
	  }
	};
	YAHOO.util.Connect.asyncRequest('POST', YAHOO.service.ajaxController + 'type=quickcart&object=cartwidget&method=get', loadQuickCartCallback);
}

function setEmptyQuickCart() {
	switchImage(0);
}

function loadQuickCart() {
	var startFlag = 0;
	for(i=0; i < YAHOO.oQuickCart.cartData.length; i++) {
		if (startFlag == 0) {
			switchImage(YAHOO.oQuickCart.cartData[i].image);
			YAHOO.oQuickCart.currentItem = YAHOO.oQuickCart.cartData[i].uid;
			YAHOO.oQuickCart.currentPos = i;
			startFlag = 1;
		} 
	}
	
	updateQuickCartControls();
}

function removeCartProduct() {
	var maxLength = YAHOO.oQuickCart.cartData.length;
	var stdAjax = Array(0);
		stdAjax  = YAHOO.oQuickCart.cartData[YAHOO.oQuickCart.currentPos];

	if (YAHOO.oQuickCart.currentPos == 0) {
		//use shift
		YAHOO.oQuickCart.cartData.shift();
	} else if (YAHOO.oQuickCart.currentPos == maxLength) {
		//use pop
		YAHOO.oQuickCart.cartData.pop();
	} else {
		var tmpPos = YAHOO.oQuickCart.currentPos;
		YAHOO.oQuickCart.cartData.splice(tmpPos, 1);
	}
	
	var removeItemQuickCartCallback = {
	  success: function(o) {
		  /*success handler code*/
		var responseData = eval('(' + o.responseText + ')' );
		loadQuickCart();
		return true;
	  },
	  failure: function(o) {
		  return false;
	  }
	};
	
	YAHOO.util.Connect.asyncRequest('POST', YAHOO.service.ajaxController + 'type=quickcart&object=cartwidget&method=remove&data=' + YAHOO.lang.JSON.stringify(stdAjax), removeItemQuickCartCallback);
	
}

function nextCartProduct() {
	var maxLength = YAHOO.oQuickCart.cartData.length;
	var tmpKey = YAHOO.oQuickCart.currentPos + 1;
	
	if (tmpKey > maxLength || tmpKey == maxLength) {
		
	} else {
		YAHOO.oQuickCart.currentPos++;
		var tmpItem = YAHOO.oQuickCart.cartData[YAHOO.oQuickCart.currentPos];
		YAHOO.oQuickCart.currentItem = YAHOO.oQuickCart.cartData[YAHOO.oQuickCart.currentPos].uid;
		switchImage(YAHOO.oQuickCart.cartData[YAHOO.oQuickCart.currentPos].image);
		tmpKey++;
	}
	
	updateQuickCartControls();
}

function lastCartProduct() {
	var maxLength = YAHOO.oQuickCart.cartData.length;
	if (YAHOO.oQuickCart.currentPos == 0) {
		//no item to load
	} else {
		//load next item
		YAHOO.oQuickCart.currentPos--;
		var tmpItem = YAHOO.oQuickCart.cartData[YAHOO.oQuickCart.currentPos];
		YAHOO.oQuickCart.currentItem = YAHOO.oQuickCart.cartData[YAHOO.oQuickCart.currentPos].uid;
		switchImage(YAHOO.oQuickCart.cartData[YAHOO.oQuickCart.currentPos].image);
	}
	
	updateQuickCartControls();
}

function quickCartControls(control, active) {
	switch(control) {
		default:
				return false;
			break;
		case 'leftArrow':
				YAHOO.oQuickCart.oLeftArrow.setStyle('visibility', active);
			break;
		case 'rightArrow':
				YAHOO.oQuickCart.oRightArrow.setStyle('visibility', active);
			break;		
		case 'remove':
				YAHOO.oQuickCart.oRemoveAction.setStyle('visibility', active);
			break;	
	}
	return true;
}

function updateQuickCartControls() {
	var maxLength = YAHOO.oQuickCart.cartData.length;
	if (YAHOO.oQuickCart.cartData.length > 0) {
		quickCartControls('remove', 'visible');
		//check right arrow
		if (YAHOO.oQuickCart.currentPos < (maxLength - 1)) {
			quickCartControls('rightArrow', 'visible');
		} else if (YAHOO.oQuickCart.currentPos == (maxLength - 1)) {
			quickCartControls('rightArrow', 'hidden');
		}
		
		//check left arrow
		if (YAHOO.oQuickCart.currentPos > 0) {
			quickCartControls('leftArrow', 'visible');
		} else if (YAHOO.oQuickCart.currentPos == 0) {
			quickCartControls('leftArrow', 'hidden');
		}
	
	} else {
		quickCartControls('leftArrow', 'hidden');
		quickCartControls('rightArrow', 'hidden');
		quickCartControls('remove', 'hidden');
		setEmptyQuickCart();
	}
}

function switchImage(imgPath) {
	if (imgPath == 0) {
		YAHOO.oQuickCart.oCartImage.set('src', YAHOO.service.filePath + '/images/products/noimage-64x48.png');
		YAHOO.oQuickCart.oCartImageLink.set('href', YAHOO.service.filePath + '/images/products/noimage-64x48.png');
	} else {
		imgPath = imgPath.replace(YAHOO.service.filePath, '');
		var newPath = YAHOO.service.filePath + 'includes/services/thumbs/thumb.php?h=60&w=44&q=90&src=/' + imgPath;
		YAHOO.oQuickCart.oCartImage.set('src', imgPath);
		YAHOO.oQuickCart.oCartImageLink.set('href', imgPath);
	}
	Shadowbox.setup();
}

YAHOO.util.Event.onDOMReady(quickCartStartup);