﻿function GetItemId(xmlItem)
{
	return GetAttribute(xmlItem, 'id');
}
function GetItemImages(xmlItem)
{
	return GetChildNodesByTagName(xmlItem, 'image')
}
function GetItemImageBig(xmlImagesNode, nIndex)
{
	return GetAttribute(xmlImagesNode[nIndex], 'big');
}
function GetItemImageThumbnail(xmlImagesNodes, nIndex)
{
	var sThumbnailPath = GetAttribute(xmlImagesNodes[nIndex], 'thumb');
	if (!sThumbnailPath.length)
		return GetItemImageBig(xmlImagesNodes, nIndex) 
	return GetAttribute(xmlImagesNodes[nIndex], 'thumb');
}
function GetItemThumbnail(xmlItem)
{
	var xmlFields = xmlNodes.getElementsByTagName('image');
	if (xmlFields.length == 0)
		alert('No image for item . sField \"' + sField + '\", sAttributeName \"' + sAttributeName + "\"");
	if (xmlFields.length == 0)
		return '';
	return xmlFields[0].attributes.getNamedItem(sAttributeName).nodeValue;
}
function GetCategoryHref(sCategoryId)
{
	var Location = new CLocation('index');
	Location.AddArgument('category', sCategoryId)
	return Location.GetLocation();
}
function GetItemHref(sItemId)
{
	var Location = new CLocation('info');
	if (sSelectedCategory)
		Location.AddArgument('category', sSelectedCategory);
	Location.AddArgument('item', sItemId);
	return Location.GetLocation();
}

function OpenSubcategoriesMenu(sCategoryId)
{	
    var xmlSubcategories = g_categoriesXmlDoc.getElementsByTagName('subcategory');
	var xmlCateorySubcategories = GetCategorizedNodes(xmlSubcategories, sCategoryId);
	var ContextMenuItemArray = new Array();
	for (var nIndex = 0; nIndex < xmlCateorySubcategories.length; nIndex++)
	{
		ContextMenuItemArray[ContextMenuItemArray.length] = new
			CContextMenuItem(
				GetTitle(xmlCateorySubcategories[nIndex]), 
				GetCategoryHref(GetItemId(xmlCateorySubcategories[nIndex])) );
	}
	var sLocation = '';
	switch (ContextMenuItemArray.length)
	{
	case 0:
	case 1:
		window.location.href = GetCategoryHref(sCategoryId);
		break;
		
	default:
		OpenContextMenu(ContextMenuItemArray);
	}
}
function CreateItemsTable(xmlItems, nCurrentPage, nMaximumCells, nMaximumRows, bCategoriesArg)
{			
	var bCategories = bCategoriesArg ? bCategoriesArg : false;
	var nFirstIndex = 0;
	if (nMaximumCells > 0 && nMaximumRows > 0)
		nFirstIndex = nMaximumCells * nMaximumRows * nCurrentPage;		   
	var TBodyElement = document.createElement('tbody');
	var nCellIndex = 0, nRowIndex = 0;
	var TBodyElement = document.createElement('tbody');
	var TRElement;
	var HiddentImagesDivElement = document.getElementById('hiddenimages');
	for (var nIndex = nFirstIndex; nIndex < xmlItems.length; nIndex++)
	{
		var xmlItem = xmlItems[nIndex];
		if (nCellIndex == 0) // Creating new row
		{
			TRElement = document.createElement('tr');
			TBodyElement.appendChild(TRElement);
			var BordTRElement = document.createElement('tr');
			for (var nBordIndex = 0; nBordIndex < nMaximumCells; nBordIndex++)
			{
				var BordTDElement = document.createElement('td');
				if (nIndex + nBordIndex < xmlItems.length)
				{
					BordTDElement.setAttribute('class', 'bord');
					BordTDElement.setAttribute('className', 'bord');
				}
				BordTRElement.appendChild(BordTDElement);
			}
			TBodyElement.appendChild(BordTRElement);
		}
		var TDElement = document.createElement('td');
		var sStyleClass = ((nIndex + 1) == xmlItems.length || nCellIndex == (nMaximumCells - 1)) ? 'jacejka1' : 'jacejka';
		TDElement.setAttribute('class', sStyleClass);
		TDElement.setAttribute('className', sStyleClass);
		TDElement.setAttribute('width', '150');
		var ImageAElement = document.createElement('a');
		var sId = GetAttribute(xmlItem, 'id');
		var sHref = bCategories ? 'javascript:OpenSubcategoriesMenu("' + sId + '")' : GetItemHref(sId);
		ImageAElement.setAttribute('href', sHref);
		var xmlItemImageNodes = GetItemImages(xmlItem);
		if (!xmlItemImageNodes.length)
			alert('item with id ' + GetItemId(xmlItem) + ' does not have images ');
		var sThumbnailSrc = GetItemImageThumbnail(xmlItemImageNodes, 0);
		var ImgElement = new CResizedImage(HiddentImagesDivElement, ImageAElement, 140, 140, sThumbnailSrc, null);
		TDElement.appendChild(ImageAElement);
		var TextPElement = document.createElement('p');
		var TextAElement = document.createElement('a');
		TextAElement.setAttribute('href', sHref);
		var sTitleHtml = GetTitle(xmlItem);
		AddHtmlFormatedText(TextAElement, sTitleHtml);
		TextAElement.appendChild(document.createElement('br'));
		var sPrice = GetAttribute(xmlItem, 'price');
		if (sPrice.length)
		{
			var TextPriceBElement = document.createElement('b');
			TextPriceBElement.appendChild(document.createTextNode(sPrice + '\u00a0' + GetCurrencyString()));
			TextAElement.appendChild(TextPriceBElement);
		}
		TextPElement.appendChild(TextAElement);
		TDElement.appendChild(TextPElement);
		TRElement.appendChild(TDElement);
		nCellIndex++;
		if (nCellIndex == nMaximumCells)
		{
			nCellIndex = 0;
			nRowIndex++;
			if (nRowIndex == nMaximumRows)
				break;
		}
	}
	if (nCellIndex > 0 && xmlItems.length > 0)
		for (; nCellIndex < nMaximumCells; nCellIndex++)
		{
			var TDElement = document.createElement('td');
			var sStyleClass = 'pustajajacejka';
			TDElement.setAttribute('class', sStyleClass);
			TDElement.setAttribute('className', sStyleClass);
			TDElement.appendChild(document.createTextNode(' '));
			TRElement.appendChild(TDElement);
		}
	var TableElement = CreateTableElement(TBodyElement);
	TableElement.setAttribute('width', '100%');
	TableElement.setAttribute('cellpadding', 0);
	TableElement.setAttribute('cellspacing', 0);
	return TableElement;
}
function GetCategoryById(xmlCategories, sCategoryId)
{
	for (var nIndex = 0; nIndex < xmlCategories.length; nIndex++)
		if (GetAttribute(xmlCategories[nIndex], 'id') == sCategoryId)
			return xmlCategories[nIndex];
	return null;
}
function AddTopCategory(Parent, sCategoryId, xmlCategories, xmlSubcategories)
{
	var xmlCategory = GetCategoryById(xmlCategories, sCategoryId);
	if (!xmlCategory)
		xmlCategory = GetCategoryById(xmlSubcategories, sCategoryId);
	if (!xmlCategory)
	{
		alert('Unable to found category with ' + sCategoryId + ' identifier');
		return;
	}
	var ANode = document.createElement('a');
	ANode.setAttribute('href', GetCategoryHref(GetAttribute(xmlCategory, 'id')));
	var sTitle = GetTitle(xmlCategory);
	AddHtmlFormatedText(ANode, sTitle);
	//ANode.appendChild(document.createTextNode(sTitle));
	var LiNode = document.createElement('li');
	LiNode.appendChild(ANode);
	Parent.appendChild(LiNode);
}
function AddCategory(Parent, xmlCategory)
{
	var DivNode = document.createElement('div');
	DivNode.setAttribute('class', 'left2');
	DivNode.setAttribute('className', 'left2');
	var ANode = document.createElement('a');
	ANode.setAttribute('href', GetCategoryHref(xmlCategory.attributes.getNamedItem('id').nodeValue));
	var sTitle = GetTitle(xmlCategory);
	AddHtmlFormatedText(ANode, sTitle);
	//ANode.appendChild(document.createTextNode(sTitle));
	DivNode.appendChild(ANode);
	Parent.appendChild(DivNode);
}
function AddSubcategory(Parent, xmlCategory)
{	
	var DivNode = document.createElement('div');
	DivNode.setAttribute('class', 'left3');
	DivNode.setAttribute('className', 'left3');
	var ANode = document.createElement('a');
	ANode.setAttribute('href', GetCategoryHref(xmlCategory.attributes.getNamedItem('id').nodeValue));
	var sTitle = GetTitle(xmlCategory);
	sTitle = '\u00a0-\u00a0' + sTitle;
	AddHtmlFormatedText(ANode, sTitle);
	//ANode.appendChild(document.createTextNode('\u00a0-\u00a0' + sTitle));
	DivNode.appendChild(ANode);
	Parent.appendChild(DivNode);
}
function ShowCategories(xmlDoc)
{
    // Show top panel's categories
    var xmlCategories = xmlDoc.getElementsByTagName('category');	
    var xmlSubcategories = xmlDoc.getElementsByTagName('subcategory');

	var CategoriesNode = document.getElementById('topcategories');
	var xmlTopCategories = xmlDoc.getElementsByTagName('topcategories');
	if (xmlTopCategories.length)
	{
		var Categories = new Array();
		Categories = GetAttribute(xmlTopCategories[0], 'id').split(',');
		for (var nIndex = 0; nIndex < Categories.length; nIndex++)
			AddTopCategory(CategoriesNode, Categories[nIndex], xmlCategories, xmlSubcategories);
	}
	//alert(xmlTopCategories.length);

	// Show left panel's categories and subcategories
	CategoriesNode = document.getElementById('leftcategories');
	for (var nIndex = 0; nIndex < xmlCategories.length; nIndex++)
	{
		var sCategoryId = xmlCategories[nIndex].attributes.getNamedItem('id').nodeValue;
		if (sCategoryId == 'all')
			continue;
		AddCategory(CategoriesNode, xmlCategories[nIndex]);
		var xmlCateorySubcategories = GetCategorizedNodes(xmlSubcategories, sCategoryId);
		for (var nSubIndex = 0; nSubIndex < xmlCateorySubcategories.length; nSubIndex++)
			AddSubcategory(CategoriesNode, xmlCateorySubcategories[nSubIndex]);
	}
}
function CMapItem(sName, sHref, bCanBack)
{
	this.sName = sName;
	this.sHref = sHref;
	this.bCanBack = bCanBack ? bCanBack : false;
}
function GetMapItemArray(xmlDoc, xmlItems)
{
	var MapItemArray = new Array;
	var sSearchRequest = GET('search');
	if (sSearchRequest)
		MapItemArray[MapItemArray.length] = new CMapItem(GetSearchString(), '');
	if (sSelectedCategory)
	{
		var xmlCategory = GetElementByAttribute(xmlDoc.getElementsByTagName('category'), 'id', sSelectedCategory);
		var xmlSubcategory = GetElementByAttribute(xmlDoc.getElementsByTagName('subcategory'), 'id', sSelectedCategory);
		if (!xmlCategory && xmlSubcategory)
			xmlCategory = GetElementByAttribute(xmlDoc.getElementsByTagName('category'), 'id', GetAttribute(xmlSubcategory, 'category'));
		if (xmlCategory)
			MapItemArray[MapItemArray.length] = new CMapItem(
				GetTitle(xmlCategory),
				GetCategoryHref(GetAttribute(xmlCategory, 'id')),
				true
				);
		if (xmlSubcategory)
			MapItemArray[MapItemArray.length] = new CMapItem(
				GetTitle(xmlSubcategory),
				GetCategoryHref(sSelectedCategory),
				true
				);
	}
	if (sSelectedItem && xmlItems)
	{
		var xmlItem = GetElementByAttribute(xmlItems.getElementsByTagName('item'), 'id', sSelectedItem);
		MapItemArray[MapItemArray.length] = new CMapItem(
			GetTitle(xmlItem),
			GetItemHref(sSelectedItem),
			true
			);
	}
	if (GetCurrentLocation().sPage == 'cart' || GetCurrentLocation().sPage == 'order' || GetCurrentLocation().sPage == 'sm')
	{
		var Location = GetCurrentLocation();
		Location.sPage = 'cart';
		MapItemArray[MapItemArray.length] = new CMapItem(GetCartString(), Location.GetLocation());
	}
	if (GetCurrentLocation().sPage == 'order' || GetCurrentLocation().sPage == 'sm')
	{
		var Location = GetCurrentLocation();
		Location.sPage = 'order';
		MapItemArray[MapItemArray.length] = new CMapItem(GetOrderString(), Location.GetLocation());
	}
	if (GetCurrentLocation().sPage == 'sm')
	{
		MapItemArray[MapItemArray.length] = new CMapItem(GetFinishOrderString(), '');
	}
	if (!MapItemArray.length)
	{
		// All categories
		var Location = new CLocation("index", GetLanguage());
		MapItemArray[MapItemArray.length] = new CMapItem(GetAllCategoriesString(), Location.GetLocation(), true);
	}
	return MapItemArray;
}
function CreateMapItemElement(MapItem)
{
	var AElement = document.createElement('a');
	AElement.setAttribute('href', MapItem.sHref);
	AddHtmlFormatedText(AElement, MapItem.sName);
	//AElement.appendChild(document.createTextNode(MapItem.sName));
	return AElement;
}
function ShowMap(xmlDoc)
{
	//<div id="map"><a href="">Visas kategorijas</a> > <a href="">Sports</a> > <a href="">Vingrošanas komplekti</a> > <b>Zviedru siena (10cm)</b></div> 
	var DivElement = document.getElementById('map');
	if (!DivElement)
	{
		alert('ShowMap()::DivElement has not been found');
		return;
	}
	var MapItemArray = GetMapItemArray(xmlDoc);
	for (var nIndex = 0; nIndex < MapItemArray.length - 1; nIndex++)
	{
		DivElement.appendChild(CreateMapItemElement(MapItemArray[nIndex]));
		if (nIndex < MapItemArray.length - 1)
			DivElement.appendChild(document.createTextNode(' > '));
	}
	// Selected element
	var BElement = document.createElement('b');
	AddHtmlFormatedText(BElement, MapItemArray[MapItemArray.length - 1].sName);
	//BElement.appendChild(document.createTextNode(MapItemArray[MapItemArray.length - 1].sName));
	DivElement.appendChild(BElement);
}
function SearchItems()
{
	var SearchRequestElement = document.getElementById('searchrequest');
	var sSearchRequest = encodeURIComponent(SearchRequestElement.value);
	var Location = new CLocation('index');
	Location.AddArgument('search', sSearchRequest);
	window.location.href = Location.GetLocation();
}
function OpenCart()
{
	var Location = GetCurrentLocation();
	Location.sPage = 'cart';
	window.location.href = Location.GetLocation();
}
