﻿////////////////////////////////////////////////////
// Main

function GetPageBookmarkHref(nPage)
{
	var Location = GetCurrentLocation();
	Location.SetArgument('page', nPage);
	return Location.GetLocation();
}
function AddPageBookmark(RootElement, nPage, bCurrentPage)
{		
	var PageElement;
	if (bCurrentPage)
	{
		var PageSpanElement = document.createElement('span');
		PageSpanElement.setAttribute('class', 'current');
		PageSpanElement.setAttribute('className', 'current');
		PageSpanElement.appendChild(document.createTextNode(nPage + 1));						
		PageElement = PageSpanElement;
	}
	else
	{
		var PageAElement = document.createElement('a');
		PageAElement.setAttribute('href', GetPageBookmarkHref(nPage));
		PageAElement.appendChild(document.createTextNode(nPage + 1));
		PageElement = PageAElement;
	}
	RootElement.appendChild(PageElement);
}

function OnCategoriesLoaded(xmlDoc)
{	
	if (GET('debug') == 1)
		alert(ShowTickCount);
	ShowTickCount("OnCategoriesLoaded: " + (xmlDoc ? "true" : "false"));
	ShowTickCount("OnCategoriesLoaded: showing categories");
	ShowCategories(xmlDoc);
	ShowTickCount("OnCategoriesLoaded: showing map");
	ShowMap(xmlDoc);
	ShowTickCount("OnCategoriesLoaded: showing advertisement");
	UpdateTopItems(xmlDoc);
	ShowTickCount("OnCategoriesLoaded: exiting");
	//alert("OnCategoriesLoaded");
	
	//ShowTickCount("call UpdateAdvertisement");
	//UpdateAdvertisement(xmlDoc);
	//ShowTickCount("exit from main");
}

function OnItemsLoaded(xmlDoc, xmlCategoriesDoc)
{	
	//ShowTickCount("OnItemsLoaded " + xmlDoc);

	g_CartItemArray.UpdateXmlData(xmlDoc);
	
	UpdateTopCartPrice();
	
	var sSearchRequest = GET('search');
	var ItemsElement = document.getElementById('items');
	
	var xmlItems;
	var bCategories = false;
	if (sSearchRequest.length)
	{
		xmlItems = XmlSearchItems(xmlDoc, decodeURIComponent(sSearchRequest));
		// TODO: if (!xmlItems.length) then show that nothing were found
	} else if (sSelectedCategory.length)
	{
		xmlItems = GetCategorizedItems(xmlCategoriesDoc, xmlDoc, sSelectedCategory);			
	} else
	{
		xmlItems = GetChildNodesByTagName(GetChildNodesByTagName(g_categoriesXmlDoc, 'categories')[0], 'category');
		bCategories = true;		
	}
	
	var sPage = GET('page');
	var nPage = sPage.length > 0 ? parseInt(sPage) : 0;
	var nMaximumCells = 4, nMaximumRows = 4;

	if (xmlItems.length > 0)
	{		
		ItemsElement.appendChild(CreateItemsTable(xmlItems, nPage, nMaximumCells, nMaximumRows, bCategories));

		// Showing pages bookmarks
		var nPageCount = Math.floor(xmlItems.length / (nMaximumCells * nMaximumRows)) + ( xmlItems.length % (nMaximumCells * nMaximumRows) > 0 ? 1 : 0);
		if (nPageCount > 1)
		{
			var PagesDivElement = document.createElement('div');
			PagesDivElement.setAttribute('class', 'pagination');
			PagesDivElement.setAttribute('className', 'pagination');
			for (var nPageIndex = 0; nPageIndex < nPageCount; nPageIndex++)
				AddPageBookmark(PagesDivElement, nPageIndex, nPageIndex == nPage);
			ItemsElement.appendChild(PagesDivElement);
		}
	}
	
	RunGoogleAnalytics();	
}

function main()
{
	//ShowTickCount("main");
	InitializeMouseHandling();
	//ShowTickCount("call LoadItemsFromXML");
	//LoadItemsFromXML(OnXmlLoaded);
	InitializeStore(OnCategoriesLoaded, OnItemsLoaded);
}



