	var lang = 1;

	function Category(_id, _parentId, _name, _nameEn, _order, _isOpened) {
		this.id = _id;
		this.parentId = _parentId;
		this.name = _name;
		this.nameEn = _nameEn;
		this.order = _order;
		this.isOpened = _isOpened;
	}
	
	var ROOT_CAT_TEMP = '<div onclick="onClickCategory(ID_TEMPL)" class="lmenu_btn" onmouseover="onMouseLeftMenuOver(this)" onmouseout="onMouseLeftMenuOut(this)" style="background-image: url(\'images/lftmnu_bgr.jpg\');">NAME_TEMPL</div>\n'+
			'<div id="cntnrIdID_TEMPL" class="cntnrOp">CHILDREN_TEMPL</div>\n';
	var CAT_TEMPL = '<div id="catID_TEMPL" onclick="onClickCategory(ID_TEMPL)" class="catcntr"><div id="expsgnID_TEMPL" class="collapsed">&nbsp;</div><div class="catname">NAME_TEMPL</div></div>'+
			'<div id="cntnrIdID_TEMPL" class="cntnrOp">CHILDREN_TEMPL</div>\n';
	
	var currentCategory = '';
	var categories = new Array();
	
	function fillCategories(jsonObj) {
		for(var i=0; i<jsonObj.length; i++) {
			var id = jsonObj[i][0];
			var opened = false;
			if (currentCategory!='' && currentCategory==id)
				opened=true;
			categories[categories.length] = new Category(id, jsonObj[i][1], jsonObj[i][2], jsonObj[i][3], jsonObj[i][4], opened);
		}
		var categoriesInnerHTML = getCategoriesStr(null);
		document.getElementById('cntnrId').innerHTML = categoriesInnerHTML;
		setOpenCloseStatus();
		/*try {
			var selCatDiv = document.getElementById('cat'+currentCategory);
			window.scroll(0,findPos(selCatDiv));
		}catch(e){}*/
	}

	function setOpenCloseStatus() {
		for(var i=0; i<categories.length; i++) {
			if (hasOpenedChild(categories[i].id))
				categories[i].isOpened=true;
			if (categories[i].isOpened) {
				if (categories[i].parentId!=null)
					document.getElementById('expsgn'+categories[i].id).className='expanded';
				document.getElementById('cntnrId'+categories[i].id).className='cntnrOp';
			}
			else {
				if (categories[i].parentId!=null)
					document.getElementById('expsgn'+categories[i].id).className='collapsed';
				document.getElementById('cntnrId'+categories[i].id).className='cntnrHd';
			}
		}		
	}
	
	function hasOpenedChild(catId) {
		for(var i=0; i<categories.length; i++) {
			if (categories[i].parentId==catId) {
				if (categories[i].isOpened)
					return true;
				else {
					var result = hasOpenedChild(categories[i].id);
					if (result)
						return true;
				}
			}
		}
		return null;
	}
	
	function getCategoriesStr(parentId) {
		var catsStrBuff = '';
		for(var i=0; i<categories.length; i++) {
			var category = categories[i];
			if (category.parentId==parentId) {
				var name = category.name;
				if (lang!=undefined)
					name = (lang!=null && lang==0)? category.nameEn:category.name;
				var currentTemplate = (category.parentId==null)? ROOT_CAT_TEMP:CAT_TEMPL;
				var categoryStr = currentTemplate.replace(/ID_TEMPL/g, category.id).replace(/NAME_TEMPL/g, name)+'\n';
				var children = '';
				children = getCategoriesStr(category.id);
				catsStrBuff += categoryStr.replace(/CHILDREN_TEMPL/g, children);
			}
		}
		return catsStrBuff;
	}

	function onClickCategory(catId) {
		for(var i=0; i<categories.length; i++) {
			if (categories[i].id==catId) {
				if (categories[i].isOpened)
					closeCategory(categories[i]);
				else
					openCategory(categories[i]);
				try {
					//loadCategoryProducts(catId);
				} catch(e){}
				break;
			}
		}
		document.getElementById('categoryId').value=catId;
		document.getElementById('command').value="selCategory";
		document.getElementById('srchproduct').submit();
	}
	
	function openCategory(category) {
		category.isOpened = true;
		if (category.parentId!=null)
			document.getElementById('expsgn'+category.id).className = 'expanded';
		document.getElementById('cntnrId'+category.id).className='cntnrOp';
	}
	
	function closeCategory(category) {
		category.isOpened = false;
		if (category.parentId!=null)
			document.getElementById('expsgn'+category.id).className = 'collapsed';
		document.getElementById('cntnrId'+category.id).className='cntnrHd';
	}
	
	function findPos(obj) {
		var curtop = 0;
		if (obj.offsetParent) {
			do {
				curtop += obj.offsetTop;
			} while (obj = obj.offsetParent);
		return [curtop];
		}
	}
	