var trialpackMinicart = {
	ADD: "ADD",
	REMOVE: "REMOVE",
	CONFIRM_MESSAGE: "YOU are about to permanently remove this frame from the trial pack.  Proceed?",
	tempCartItemId : 10
};

trialpackMinicart.removeFrame = function(primaryCartItemId, cartItemId)
{
	if(trialpackMinicart.confirmCartItemRemoval()) {
		var cartKey = getCacShoppingCartKey(); // don't need this in category page -> just pass in null or some name
		var callMetaData = { callback:trialpackMinicart.removeFrameCallback, errorHandler:handleErrors };
		shoppingCartAjaxController.removeFrameFromTrialPack(primaryCartItemId, cartItemId, cartKey, callMetaData);
	}
};

trialpackMinicart.addFrame = function(productId)
{
	var cartKey = getCacShoppingCartKey(); // don't need this in category page -> just pass in null or some name
	var callMetaData = { callback:trialpackMinicart.addFrameCallback, errorHandler:handleErrors };
	shoppingCartAjaxController.addFrameToTrialPack(getPrimaryCartItemId(), productId, cartKey, callMetaData);
};


trialpackMinicart.confirmCartItemRemoval = function()
{
	return confirm(trialpackMinicart.CONFIRM_MESSAGE);
};

trialpackMinicart.removeFrameCallback = function(ccDynamicCartBean)
{
	if (ccDynamicCartBean.trialPackCartItems == null || ccDynamicCartBean.trialPackCartItems.length == 0) {
		alert("No frame was removed from the trial pack!");
		return;
	}
	// update the product view page and minicart if applicable
	if (jQuery("#miniCartSection").size() > 0) {
		updateProductViewPageAfterMiniCartUpdate(ccDynamicCartBean);
	}


	// update the trial pack minicart container
	var miniCartData = ccDynamicCartBean.trialPackCartItems[0];

	// For each child node of the mini cart item container
	var trialPackFrameNode = document.getElementById('trialpackTD' + miniCartData.firstCartItemUid);
	if (trialPackFrameNode != null) {
		// remove the entire TD node
		var parent = trialPackFrameNode.parentNode;
		parent.removeChild(trialPackFrameNode);
		jQuery("#trialpackMinicartItemContainer").append("<td width='25%' bgcolor='#e7f5fb'><div class='egminicart-main'>" +
			"<table width='100' align='center' border='0' cellpadding='0' cellspacing='0'><tr><td width='100' height='50' name='blank' id='blank'>&nbsp;</td></tr></table></div></td>");
	}

	decrementTrialPackTotal();

	// hide the trialpack minicart section if there are no frames
	var itemNodes = document.getElementsByName("trialpackMinicart_item");
	if (itemNodes.length == 0) {
		var miniCartSection = document.getElementById('trialpackMinicartSection');
		miniCartSection.style.display = "inline";
	}
	updateNumbers();
};

trialpackMinicart.removeBundleCallback = function(ccDynamicCartBean)
{
	var miniCartSection = document.getElementById('trialpackMinicartSection');
	miniCartSection.style.display = "none";
	var miniCartItemContainer = document.getElementById('trialpackMinicartItemContainer');
	var children = miniCartItemContainer.childNodes;
	for(var i = 0; i < children.length; i++) {
		var child = children[i];
		var childId = child.id;
		// replace the frame TD element with empty TD element
		if (child.nodeType == 1 && (childId != "")) {
			miniCartItemContainer.removeChild(child);
			jQuery("#trialpackMinicartItemContainer").append("<td bgcolor='#e7f5fb'><div class='minicart-main'>" +
				"<table width='100' align='center' border='0' cellpadding='0' cellspacing='0'><tr><td width='25%' name='blank' id='blank'>&nbsp;</td></tr></table></div></td>");
		}
	}
};

trialpackMinicart.addFrameCallback = function(ccDynamicCartBean)
{
	// check if it is necessary to update
	// TODO: review error handling and localize the error messages
	if (ccDynamicCartBean == null) {
		alert("Not eligible for the trial pack!");
		return;
	}
	if (ccDynamicCartBean.trialPackCartItems == null || ccDynamicCartBean.trialPackCartItems.length == 0) {
		alert("You have reached the maximum number of frames in the trial pack!");
		return;
	}
	// update the trial pack minicart container
	var miniCartData = ccDynamicCartBean.trialPackCartItems[0];
	// For each child node of the mini cart item container
	var miniCartItemContainer = document.getElementById('trialpackMinicartItemContainer');
	var children = miniCartItemContainer.childNodes;
	for(var i = 0; i < children.length; i++) {
		var child = children[i];
		var childId = child.id;
		// replace the next TD element with the new frame
		if (child.nodeType == 1 && (childId == null || childId == "")) {
			var newTdElem = document.createElement ("td");
			newTdElem.setAttribute ("id", "trialpackTD" + miniCartData.firstCartItemUid);
			miniCartItemContainer.replaceChild(newTdElem, child);
			jQuery("#trialpackTD" + miniCartData.firstCartItemUid).append("<div class='egminicart-main' id='trialpack" + miniCartData.firstCartItemUid +
				"'><input type='hidden' value='" + miniCartData.firstCartItemUid +
				"' name='trialpackMinicart_item'/><table width='100' bgcolor='#e7f5fb' align='center' border='0' cellpadding='0' name='eyeglassesTPMiniCart-small' id='eyeglassesTPMiniCart-small' cellspacing='0'><tr>" +
				"<td valign='top'><img src='" + ctxImageUrl + "/" + miniCartData.imageUrl +
				"' width='100' height='50' border='0' /></td></tr><tr valign='top'><td class='eyeglassesTPMiniCart-small' bgcolor='#e7f5fb'><strong>" + miniCartData.productName + "</strong></td>" +
				"</tr><tr><td id='eyeglassesTPMiniCart-remove' ><a href='javascript:trialpackMinicart.removeFrame(getPrimaryCartItemId(), " +
				miniCartData.firstCartItemUid + ")'>remove</a></td></tr></table></div>");
			break;
		}
	}
	incrementTrialPackTotal();
	// Show the trial pack if not visible
	var miniCartSection = document.getElementById('trialpackMinicartSection');
	if (miniCartSection.style.display == "none") {
		miniCartSection.style.display = "inline";
	}

	toggleButtonDisplay();

	// don't update the product page and minicart if not in product view page
	if (jQuery("#miniCartSection").size() > 0) {
		updateProductViewPageCalculatedValues(ccDynamicCartBean);
	}

};

trialpackMinicart.setText = function(addText, removeText, confirmMessageText)
{
	trialpackMinicart.ADD = addText;
	trialpackMinicart.REMOVE = removeText;
	trialpackMinicart.CONFIRM_MESSAGE = confirmMessageText;
};

function decrementTrialPackTotal() {
	var previousTotal = jQuery("#numberOfItemsInTrialPackMiniCart").text();
	jQuery("#numberOfItemsInTrialPackMiniCart").empty();
	if (previousTotal*1 == 1)
	 jQuery("#numberOfItemsInTrialPackMiniCart").append("0");
	else
	 jQuery("#numberOfItemsInTrialPackMiniCart").append(previousTotal*1 - 1);
	 // decrement the total on the body section of product page.  Needs a unique id to update properly when used on the same page as numberOfItemsInTrialPackMiniCart.
	 var previousTotal = jQuery("#numberOfItemsInTrialPackMiniCartBody").text();
	jQuery("#numberOfItemsInTrialPackMiniCartBody").empty();
	if (previousTotal*1 == 1)
	 jQuery("#numberOfItemsInTrialPackMiniCartBody").append("0");
	else
	 jQuery("#numberOfItemsInTrialPackMiniCartBody").append(previousTotal*1 - 1);

}

function incrementTrialPackTotal() {
	var previousTotal = jQuery("#numberOfItemsInTrialPackMiniCart").text();
	jQuery("#numberOfItemsInTrialPackMiniCart").empty();
	jQuery("#numberOfItemsInTrialPackMiniCart").append(previousTotal*1 + 1);
	 // increment the total on the body section of product page.  Needs a unique id to update properly when used on the same page as numberOfItemsInTrialPackMiniCart.
	var previousTotal = jQuery("#numberOfItemsInTrialPackMiniCartBody").text();
	jQuery("#numberOfItemsInTrialPackMiniCartBody").empty();
	jQuery("#numberOfItemsInTrialPackMiniCartBody").append(previousTotal*1 + 1);
}


function toggleButtonDisplay() {
	var buttonSpan1 = document.getElementById('buttonSpan1');
	var buttonSpan2 = document.getElementById('buttonSpan2');
	var textSpan1 = document.getElementById('textSpan1');
	var textSpan2 = document.getElementById('textSpan2');

	if(buttonSpan1 != null && buttonSpan2 != null && textSpan1 != null && textSpan2 != null) {

		if(buttonSpan1.style.display == "none")
			buttonSpan1.style.display = "inline";
		else
			buttonSpan1.style.display = "none";

		if(buttonSpan2.style.display == "none")
			buttonSpan2.style.display = "inline";
		else
			buttonSpan2.style.display = "none";

		if(textSpan1.style.display == "none")
			textSpan1.style.display = "inline";
		else
			textSpan1.style.display = "none";

		if(textSpan2.style.display == "none")
			textSpan2.style.display = "inline";
		else
			textSpan2.style.display = "none";
	}
}
// update blanks on mini cart to show numbers of available trial pack spots
function updateNumbers(){
	var cartIemlist = document.getElementsByName("eyeglassesTPMiniCart-small");
	var blankList = document.getElementsByName("blank");
	var counter=0;
	var imageName="";
	for(i=0; i<blankList.length;++i){
		counter = i + cartIemlist.length + 1;
		imageName = "url('" + ctxImageUrl + "/product/counter_" + counter + ".gif')";
		blankList[i].style.backgroundImage = imageName;

	}
}
