﻿/* Copyright Commcam Limited 2008. All rights reserved. (See licence/licence.txt) */
function floatyCategoriesLauncher(objDiv, iLevel)
{
	var objLastDiv = document.getElementById("categoryLevelDiv" + (iLevel - 1));
	
	hideMenus();
		
	if (objDiv.className != "categoryButtonDisabled")
	{
		strValue = objDiv.getAttribute("code");
		strDesc = objDiv.getAttribute("description");
		strDesc = escape(strDesc);
		
		startLoading("_floatyCategories('" + objDiv.getAttribute("id") + "', '" + strValue + "', '" + strDesc  + "', " + iLevel + ")");
	}
}

function hideMenus()
{
	for (i = 1; i <=4; i++)
	{
		objFloatyDiv = document.getElementById("floatyCat_" + i);
		
		if (objFloatyDiv)
		{
			document.body.removeChild(objFloatyDiv);
		}
	}
}

function floatyCategories(objDiv, iLevel)
{
	if (objDiv.className != "categoryButtonDisabled")
	{
		strValue = objDiv.getAttribute("code");
		strDesc = escape(objDiv.getAttribute("description"));

		startLoading("_floatyCategories('" + objDiv.getAttribute("id") + "', '" + strValue + "', '" + strDesc  + "', " + iLevel + ")");
	}
}

function showNextCategory(strCode)
{
	startLoading("_showNextCategory('" + strCode + "')");
}

function _showNextCategory(strCode)
{
	var objAjax = new CAjax();
	var strDivId = "product_" + strCode;
	var objDiv;
	
	if (objAjax.open("dynamic/categoriesExtra.php?getcount=true&parentCode=" + strCode, true))
	{
		objDiv = document.getElementById("innerContent");
		
		objDiv.innerHTML = objAjax.getResponse();
	}
	
	endLoading();	
}


function _floatyCategories(strId, strValue, strDesc, iLevel)
{
	var objAjax = new CAjax();
	var objDiv = document.getElementById(strId);
	var objFloatyDiv = document.getElementById("floatyCat_" + iLevel);
	var iNextLevel = iLevel + 1;
	var iClearStart = iLevel;
	var objFloatyBody;
	var objCatSelect;
	
	strDesc = unescape(strDesc);
	
	if (!objFloatyDiv)
	{
		objFloatyDiv = document.createElement("div");
		objFloatyDiv.id = "floatyCat_" + iLevel;
		objFloatyDiv.setAttribute("menu", "true");
		document.body.appendChild(objFloatyDiv);
	}
	
	objFloatyDiv.className = "floatyMenu";
		
	objFloatyDiv.style.left = findRight(objDiv) + 18;
	objFloatyDiv.style.top = findTop(document.getElementById("innerContent"));// - objDiv.parentNode.scrollTop;

	if (objAjax.open("dynamic/categories.php?parentCode=" + strValue + "&level=" + iLevel, true))
	{
		if (iLevel > 1)
		{
			objCatSelect = document.getElementById("categoryLevelDiv" + (iLevel - 1));
			objCatSelect.innerHTML = strDesc;
		}
		
		objCatSelect = document.getElementById("categoryLevelDiv" + iLevel);
		objCatSelect.className = "categoryButton";
		objCatSelect.innerHTML = "Please select...";
		objCatSelect.setAttribute("description", strDesc);
		objCatSelect.setAttribute("code", strValue);
		
		objFloatyDiv.innerHTML = objAjax.getResponse();
		
		if(objFloatyDiv.innerHTML.length == 0)
		{
			document.body.removeChild(objFloatyDiv);
			_quickSearch(strValue, 'productgroup', 0);
			hideMenus();
		}
		else
		{
			iClearStart ++;
					
			iPageHeight = getHeight();
			objFloatyBody = document.getElementById("floatyMenuBody" + iLevel);
			
			if (findBottom(objFloatyBody) >= iPageHeight + document.body.scrollTop)
			{
				var iHeight = iPageHeight - document.body.scrollTop - findTop(objFloatyBody);
				
				objFloatyBody.style.height = iHeight;
			}	
		}
		
	}
	
	for (i = iClearStart; i <=4; i++)
	{
		objFloatyDiv = document.getElementById("floatyCat_" + i);
		
		if (objFloatyDiv)
		{
			document.body.removeChild(objFloatyDiv);
		}
		
		objCatSelect = document.getElementById("categoryLevelDiv" + i);
		objCatSelect.className = "categoryButtonDisabled";
		objCatSelect.innerHTML = "";
	}
	
	addFloatyMenuCheck();
	
	endLoading();
}

function closeFloatyMenu(iLevel)
{
	for (i = iLevel; i <=4; i++)
	{
		objFloatyDiv = document.getElementById("floatyCat_" + i);
		
		if (objFloatyDiv)
		{
			document.body.removeChild(objFloatyDiv);
		}
	}
}

function selectCategories(objSelect, iLevel)
{
	var strValue = objSelect.value;

	startLoading("_selectCategories('" + strValue + "'," + iLevel + ")");
}

function _selectCategories(strValue, iLevel)
{
	var objAjax = new CAjax();
	var iNextLevel = iLevel + 1;
	var iClearStart = iNextLevel;
	var objDiv, objSelect, arrResults;
	
	if (strValue != "")
	{
		
		if (iLevel > 3)
		{
			categorySearch(strValue);
		}
		else
		{
			
			if (objAjax.open("dynamic/categories.php?parentCode=" + strValue + "&level=" + iNextLevel, true))
			{
				objDiv = document.getElementById("categoryLevelDiv" + iNextLevel);

				objDiv.innerHTML = objAjax.getResponse();
				
				if(objDiv.innerHTML.length == 0)
				{
					_quickSearch(strValue, 'productgroup', 0);
				}
				else
				{
					iClearStart ++;
				}
				
			}
		}	
	}
	
	for (i = iClearStart; i <=4; i++)
	{
		objSelect = document.getElementById("categoryLevel" + i);
		objSelect.innerHTML = "";
		objSelect.disabled = true;
	}
	
	endLoading();
}

function checkFloatyMenu(e)
{
	var objElement, objMenu, bReturnVal;
	var j, bFound = false;
	
	bReturnVal = false;
	
	objElement = (e.target) ? e.target : e.srcElement;
	objMenu = document.getElementsByTagName("div");

	if (objElement.getAttribute("menu") != "true")
	{
		for (var i = 0; i < objMenu.length; i++)
		{
			if (objMenu[i].getAttribute("menu") == "true")
			{
				while (objElement != null && !bFound)
				{
					objElement = objElement.parentNode;
					
					for (j = 0; j < objMenu.length; j++)
					{
						if (objElement == objMenu[j])
						{
							bFound = true;
							break;
						}
					}
				}
			
				if (objElement != null)
				{
					break;
				}
			}
		}
	}
	
	if (!bFound)
	{
		closeFloatyMenu(0);
		bReturnVal = true;
	}
	
	if (bReturnVal)
	{
		removeFloatyMenuCheck();
	}
	
	return bReturnVal;
}

function removeFloatyMenuCheck()
{
	try
	{
		document.detachEvent("onmousedown", checkFloatyMenu);
	}
	catch (e)
	{
		document.removeEventListener("mousedown", checkFloatyMenu, false);
	}
}

function addFloatyMenuCheck()
{
	try
	{
		document.attachEvent("onmousedown", checkFloatyMenu);
	}
	catch (e)
	{
		document.addEventListener("mousedown", checkFloatyMenu, false);
		
	}
}

function showProductGroup(strCode)
{
	var objAjax = new CAjax();
	
	if (objAjax.open("dynamic/productGroups.php?mode=DESC&code=" + strCode, true))
	{
		objDiv = document.getElementById("descriptionArea");
		objDiv.innerHTML = objAjax.getResponse();
	}

	if (objAjax.open("dynamic/productGroups.php?mode=PRODUCTS&code=" + strCode, true))
	{
		objDiv = document.getElementById("productArea");
		objDiv.innerHTML = objAjax.getResponse();
	}
	
	document.location.href = "#";
	saveHistory();
}

