var shopping_cart_items_Text = "<table id='shopping_cart_items'><tr><th>Items</th><th>Description</th><th>Price</th><th></th></tr></table>";
var LIMIT = 5;
var itemListArray = [];
var availableCount;
var currentStartingIndex;
/* Server-Side will output tlUserName if user has logged on */ 
var tlUserName;
/*
 * cartArray is populated by Server-side code in format below
 * cartArr = [new CartItem(17,'Football','1,566.00',2),.....n];
 */
var cartArr;
/* CartItem class */
function CartItem(id,name,price,qtty){
	this.ID=id;
	this.Name=name;
	this.Price=price;
	this.Qtty=qtty;
}
/*
 *
 * Functions to add to and remove from cart
 */
function addToCartArr(id,name,price,qtty){
	var found = false
	for(var i = 0; i<cartArr.length; i++){
		if(cartArr[i].ID == id){
			found = true;
			cartArr[i].Qtty = cartArr[i].Qtty + 1;
			break;
		}
	}
	if(!found){
		cartArr[cartArr.length] = new CartItem(id,name,price,qtty);
	}
}
function removeFromCartArr(id,quantity){
    if(!quantity) quantity = 1;
	for(var i = 0; i<cartArr.length; i++){
		if(cartArr[i].ID == id){
			if(cartArr[i].Qtty>quantity){
				cartArr[i].Qtty -=quantity;
			}else{
				cartArr.splice(i,1);
			}
			break;
		}
	}
}
/*
 * Populate user saved cart
 */
function updateCartItems(){
	MM_setTextOfLayer("shopping_cart_table_div","",shopping_cart_items_Text);
	MM_setTextOfLayer("shopping_cart_totalprice","","Total: 0.00");
	var itemtable = document.getElementById('shopping_cart_items');
	
	for(var i=0; i<cartArr.length; i++)
		addTableRow(itemtable,cartArr[i].ID,cartArr[i].Name,cartArr[i].Price,cartArr[i].Qtty);
}
/*
 * Submit functions
 */
var deliveryMethod = "&" + ToffConstant.DLVR + "=1";
function doCartSubmit(page){
	if(cartArr.length > 0){
	    var tfid = "&" + ToffConstant.TOFFUSERID + "=" + MM_findObj(ToffConstant.TOFFUSERID).value;
	    var cartStr = "?" + ToffConstant.ITEMS + "=";
		for(var i = 0; i<cartArr.length; i++)
		    cartStr += ((i == 0 ? "" : ",") + cartArr[i].ID + "|" + cartArr[i].Qtty);
		ToffPopup.ShowLoading(page + cartStr + tfid + deliveryMethod);
	}else{
		ToffPopup.ShowMessage('<div align="center" style="color:red; text-align:center; font-family:Arial; font-size:14px;"><b>You have no items<br/>in your cart</b><div><p align="right"><button onclick="window.top.ToffPopup.Hide()">ok</button></p>', 250, 100);
	}
}
function submitCart(){
    doCartSubmit("../Dialog/DialogCartCheckOut.aspx");
	return false;
}
function saveCart(){
    doCartSubmit("../Dialog/DialogCartSave.aspx");
	return false;
}
/*
 * Ajax functions
 */
function getItemsWithList(limit,brandID,teamID,categoryID){
	removeAllItems();
	currentStartingIndex = 0;
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = 'AsyncItemsWithList.ashx';
	ajaxObjects[ajaxIndex].setVar("brandID",brandID);
	ajaxObjects[ajaxIndex].setVar("teamID",teamID);
	ajaxObjects[ajaxIndex].setVar("categoryID", categoryID);
	ajaxObjects[ajaxIndex].setVar("topCount", limit);
	ajaxObjects[ajaxIndex].setVar("hideNonAvailable", 0);
	ajaxObjects[ajaxIndex].onCompletion = new Function("getItemsComplete(" + ajaxIndex + ",true);");
	ajaxObjects[ajaxIndex].runAJAX();
	window.top.ToffPopup.ShowLoading();
}
var itemStr;
function getItems(showPop){
	removeAllItems();
	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = 'AsyncItemArray.ashx';
	ajaxObjects[ajaxIndex].setVar(ToffConstant.ITEMS, itemStr);
	ajaxObjects[ajaxIndex].onCompletion = new Function("getItemsComplete("+ajaxIndex+","+showPop+");");
	ajaxObjects[ajaxIndex].runAJAX();		
	if(showPop==true)
	    window.top.ToffPopup.ShowLoading();
}
/*
 * Ajax callback functions
 */
function getItemsComplete(ajaxIndex,showPop){
	var responseXML = ajaxObjects[ajaxIndex].responseXML;
	var itemDIV = document.getElementById("itemDIV");
	var response = null;
	if (responseXML) {
	    try {
	        response = responseXML.getElementsByTagName('response')[0];
	        if (response.getAttribute("status") != "ok") {
	            itemDIV.innerHTML = response.getAttribute("message");
	        } else {
	            var itemList = response.getElementsByTagName('itemList');
	            if (itemList.length > 0)
	                storeItemList(itemList[0]);

	            var items = response.getElementsByTagName('items');
	            if (items.length > 0) {
	                displayItems(items[0]);
	                showItemPager();
	            }
	        }
	    } catch (e) {
	        itemDIV.innerHTML = "<div class='item'><h3>Sorry: There was an error processing your request." + e.description + "<br/>Please try again later</h3></div>";
	        return;
	    }
	} else {
	    itemDIV.innerHTML = "<div class='item'><h3>Sorry: There was an error processing your request.<br/>Please try again later</h3></div>";
	}
	delete responseXML;
	delete response;
	ajaxObjects[ajaxIndex] = false;
	if(showPop==true)
        ToffPopup.Hide();
}
/*
 * store the returned item IDs in itemListArray and show returned list message
 */
function storeItemList(itemList){
    var itemIDs = itemList.getElementsByTagName('item');
    itemListArray = [];
    for(var i=0; i<itemIDs.length; i++)
        itemListArray[i]=itemIDs[i].getAttribute("id");

    var team = itemList.getAttribute("teamName");
    var brand = itemList.getAttribute("brandName");
    var category = itemList.getAttribute("categoryName");
    var searchString = itemList.getAttribute("searchString");
    availableCount = parseInt(itemList.getAttribute("availableCount"));
    
    var itemMessg = document.getElementById("itemMessg");
    itemMessg.style.display = "";
    if(availableCount>0 && itemIDs.length>0){
        itemMessg.className = "itemCountMessg";
        itemMessg.innerHTML = team+" "+brand+" "+category+" were found.";
    }else{
        itemMessg.className = "itemErrorMessg";
        itemMessg.innerHTML = team+" "+brand+" "+category+" are all sold out.";
        if(itemIDs.length==0){
            var itemDIV = document.getElementById("itemDIV");
            itemDIV.innerHTML = "<div class='item'><a href='javascript:;' onclick='getItemsWithList(LIMIT,0,0,0)'>Click here to see all products available</a></div>";
            itemDIV.style.display="";
        }
    }
}
/*
<div class="iTem">
<div class="iPic"><div id="slidingProduct17"><img src="UserFiles/Image/product/x.jpg"></div></div>
<div class="iDesc">
    <div class="iName">Football</div>
</div>
<div class="iPrice">N5,660.00</div> 
<div class="iCartBtn"><a href="javascript:;" onclick="addToBasket('17|Football|5,660.00|1');return false;" onmouseover="status='Add to Cart';return true;" onmouseout="status=' '">&nbsp;</a></div>
</div>
*/
function displayItems(items){
    var itemDIV = document.getElementById("itemDIV");
    var itemXMLArr = items.getElementsByTagName('item');
    for(var i=0; i<itemXMLArr.length; i++){
        var id = itemXMLArr[i].getAttribute("id")
        var name = itemXMLArr[i].getAttribute("name")
        var price = itemXMLArr[i].getAttribute("price")
        var img = itemXMLArr[i].getAttribute("img");
        var desc = itemXMLArr[i].getAttribute("desc");
        var avail = parseInt(itemXMLArr[i].getAttribute("available"));
        // CSS: .iTem
		var iTem = document.createElement('div');
		iTem.className = "iTem";
		itemDIV.appendChild(iTem);
		// CSS: .iTem/.iPic
		var iPic = document.createElement('div');
		iPic.className = "iPic";
		iTem.appendChild(iPic);
		// CSS: .iTem/.iPic/#slidingProduct
		var slidingProduct = document.createElement('div');
		slidingProduct.id = "slidingProduct"+id;
		iPic.appendChild(slidingProduct);
		// CSS: .iTem/.pic/#slidingProduct/img
		var im = document.createElement('img');
		im.src = "../UserFiles/Image/product/"+img;
		slidingProduct.appendChild(im);
		// CSS: .iTem/.iPrice
		var iPrice = document.createElement('div');
		iPrice.className = "iPrice";
		iPrice.innerHTML = "<span class='naira'>N</span>"+addCommas(price);
		iTem.appendChild(iPrice);
		// CSS: .iTem/.desc
		var iDesc = document.createElement('div');
		iDesc.className = "iDesc";
		//iDesc.innerHTML = desc;
		iTem.appendChild(iDesc);
		// CSS: .iTem/.iName
		var iName = document.createElement('span');
		iName.className = "iName";
		iName.innerHTML = name;
		iDesc.appendChild(iName);
		iDesc.innerHTML = iDesc.innerHTML+desc; // TODO REPAIR
		// CSS: .iTem/.iCartBtn
		var iCartBtn = document.createElement('div');
		iCartBtn.className = "iCartBtn";
		iTem.appendChild(iCartBtn);
		if(avail > 0){
		    // CSS: .iTem/.iCartBtn/a
		    var iA = document.createElement('a');
		    iA.href="javascript:;";
		    iA.onclick = new Function("addToBasket("+id+",'"+name+"','"+price+"',1);");
		    iCartBtn.appendChild(iA);
		}else{
		    iCartBtn.innerHTML = "SOLD OUT";
		}
    }
    itemDIV.style.display="";
}

/*
 * Clear the display of items
 */
function removeAllItems(){
    var itemDIV = document.getElementById("itemDIV");
    if ( itemDIV.hasChildNodes() )
        while ( itemDIV.childNodes.length >= 1 )
            itemDIV.removeChild( itemDIV.firstChild );       
    itemDIV.style.display="none";
    document.getElementById("itemMessg").style.display = "none";
    document.getElementById("itemPager").style.display = "none";
}
/*
 * get next and prev
 */
function prevItem(){
    currentStartingIndex-=LIMIT;
    nextItems();
}
function nextItem(){
    currentStartingIndex+=LIMIT;
    nextItems();
}
function nextItems(){
    var total = itemListArray.length;
    var qryStr = "";
    for(var i=currentStartingIndex; i<total && i<currentStartingIndex+LIMIT; i++)
        qryStr = qryStr + (i>currentStartingIndex ? "," : "") + itemListArray[i];
    //alert(qryStr + " currentStartingIndex=" + currentStartingIndex + " total=" + total);showItemPager(); // return; TODO: REMOVE
    itemStr = qryStr;
    getItems(true);
}
/*
 * Functions to control itemPager buttons
 */
function showItemPager(){
    var prevItem = document.getElementById("prevItem");
    var nextItem = document.getElementById("nextItem");
    var itemCounter = document.getElementById("itemCounter");
    var total = itemListArray.length;
    if(currentStartingIndex > 0){
        prevItem.style.display = "";
    }else{
        prevItem.style.display = "none";
    }
    if(currentStartingIndex+LIMIT < total){
        nextItem.style.display = "";
    }else{
        nextItem.style.display = "none";
    }
    itemCounter.innerHTML = (currentStartingIndex+1) + " to " + (currentStartingIndex+LIMIT<total?currentStartingIndex+LIMIT:total) + " of " + total;
    document.getElementById("itemPager").style.display = "";
}






/*
 *
 * Navigation bar functions
 */
var navBarArray = ["teamNavBar","catNavBar","brandNavBar"];
var navInterval;
var navCurrent;
function showNav(nav){
	if(navCurrent == MM_findObj(nav))return;
	navCurrent = MM_findObj(nav);
	clearInterval(navInterval);
	for(i=0;i<navBarArray.length;i++){
		nv = MM_findObj(navBarArray[i]);
		if(!nv.oldHeight){nv.oldHeight=parseInt(nv.style.height.replace("px",""));}
		nv.style.height="0px";
	}
	navInterval = setInterval("animateNav()", 20);
}
function animateNav(){
	xH = parseInt(navCurrent.style.height.replace("px",""));
	if(xH<navCurrent.oldHeight){navCurrent.style.height=(xH+18)+"px";}
	else{clearInterval(navInterval);}
}