	var d=document;
	var req;
	
	function initJsHTTPRequest(){
		req = new JsHttpRequest();
		req.onreadystatechange = function(){
			if (req.readyState == 4) {
			
				if (req.responseText) {					
					var wnd = window.open('debug', 'jsdebug');
					wnd.document.write('<pre>' + req.responseText + '</pre>');
				}
				else {
					var resp = req.responseJS;
					eval(resp.callback);
				}
			}
		}
	}

	function documentLoaded(){
		initJsHTTPRequest();
		if (window.setupZoom) 
			setupZoom();
			
		if (window.customModuleFunction)
			customModuleFunction();
			
		
	}
	
	function addInCompare(prod_id){
		req.open(null,'/jscript/common.php',true);
		req.send({
			param:prod_id,
			query:'addToCompareList',
			callback:'addInCompareOut'
		})
	}
	
	function addInCompareOut(msg_type){
		if (msg_type==1)
				alert('Товар не найден');
				
		if (msg_type==2)
				alert('Нельзя сравнивать товары из разных категорий');
			
		if (msg_type==3)
				alert('Товар уже присутсвует в списке сравнения');
				
		if (msg_type==4)
				window.location='/compare/';
	}

	function deleteFromCompare(prod_id){
		req.open(null,'/jscript/common.php',true);
		req.send({
			param:prod_id,
			query:'deleteFromCompare',
			callback:'deleteFromCompareOut'
		})

	}
	
	function deleteFromCompareOut(param){
		window.location='/compare/'+param;
	}

	function openCategory(cat_id){		
		var table=d.createElement('table');
		table.cellPadding='2';
		table.cellSpacing='0';
		table.border='0';
		table.className='table19';
		table.id="left_menu_subcats_table_"+cat_id;
		
		var tr=d.createElement('tr');
		var td=d.createElement('td');
		//td.className='td20';
		var img=new Image();
		img.src='/images/wait.gif';
		td.appendChild(img);
		tr.appendChild(td);
		var tbody=d.createElement('tbody');
		tbody.appendChild(tr);
		table.appendChild(tbody);
		d.getElementById('left_menu_root_'+cat_id).appendChild(table);
		
		
			
		req.open(null,'/jscript/common.php',true);
		req.send({
			param:cat_id,
			query:'mphGetSubcatsToCat',
			callback:'openCategoryOut'
		})		;
				
	}
	
	function openCategoryOut(params){
		
		var cat_id=params.cat_id;
		var cats=params.list;
		
		var div=d.getElementById('left_menu_root_'+cat_id);
		div.getElementsByTagName('img')[0].src='/images/minus.gif';
		div.getElementsByTagName('a')[1].onclick=function(){
			closeCategory(cat_id);
		}
		div.getElementsByTagName('a')[0].onclick=function(){
			closeCategory(cat_id);
		}


		
		var table=d.getElementById('left_menu_subcats_table_'+cat_id).getElementsByTagName('tbody')[0];
		var rows=table.getElementsByTagName('tr');
		while (rows.length>0){
			table.removeChild(rows[rows.length-1]);
		}
		
		for (i=0;i<cats.length;i++){			
			var tr=d.createElement('tr');
			tr.id='left_menu_subcats_'+cats[i].id;			
			var td=d.createElement('td');			
			var a=d.createElement('a');
			a.href='/catalog/'+cats[i].url+'/';
			a.innerHTML=cats[i].name;
			
			var a2=d.createElement('a');
			a2.href='javascript:void(0);';
			a2.id=cats[i].id
			a2.onclick=function(){
				openSubCategory(this.id);
			}
			
			var img=new Image();
			img.src='/images/plus.gif';
			a2.appendChild(img);
			
			var span=d.createElement('span');
			span.innerHTML='&nbsp;';
			
			if (cats[i].need_more==1) {
			td.appendChild(a2);
			}
			td.appendChild(span);
			td.appendChild(a);			
			tr.appendChild(td);
			table.appendChild(tr);
			
		}
	}

	function closeCategory(cat_id){
		var div=d.getElementById('left_menu_root_'+cat_id);
		div.removeChild(div.getElementsByTagName('table')[0]);
		div.getElementsByTagName('img')[0].src='/images/plus.gif';
		div.getElementsByTagName('a')[1].onclick=function(){
			openCategory(cat_id);
		}
		div.getElementsByTagName('a')[0].onclick=function(){
			openCategory(cat_id);
		}
		
	}
	

	function openSubCategory(cat_id){		
		var td=d.getElementById('left_menu_subcats_'+cat_id).getElementsByTagName('td')[0];
		var div=d.createElement('div');
		div.className='div_left_menu_brand';
		var img=new Image();
		img.src='/images/wait.gif';
		div.appendChild(img);
		td.appendChild(div);
		
		req.open(null,'/jscript/common.php',true);
		req.send({
			param:cat_id,
			query:'mpgGetBrandsToSubcat',
			callback:'openSubCategoryOut'
		});		
		
	}
	
	function openSubCategoryOut(params){
		var cat_id=params.cat_id;
		var brands=params.brands;
		var cat_url=params.url;
		
		var td=d.getElementById('left_menu_subcats_'+cat_id).getElementsByTagName('td')[0];
		
		td.getElementsByTagName('img')[0].src='/images/minus.gif';
		td.getElementsByTagName('a')[0].onclick=function(){
			closeSubCategory(cat_id);
		}
		
		var div=td.getElementsByTagName('div');
		while (div.length>0){
			td.removeChild(div[div.length-1]);
		} 
		
		for (i=0;i<brands.length;i++){
			var div=d.createElement('div');
			div.className='div_left_menu_brand';
			var a=d.createElement('a');
			a.href='/catalog/'+cat_url+'/'+brands[i].url+'/';
			a.innerHTML=brands[i].name;
			
			div.appendChild(a);
			td.appendChild(div);
		}
	}
	
	function closeSubCategory(cat_id){
		var td=d.getElementById('left_menu_subcats_'+cat_id).getElementsByTagName('td')[0];
		var div=td.getElementsByTagName('div');
		while (div.length>0){
			td.removeChild(div[div.length-1]);
		}
		
		td.getElementsByTagName('img')[0].src='/images/plus.gif';
		td.getElementsByTagName('a')[0].onclick=function(){
			openSubCategory(cat_id);
		}
		
	}
	
	function addProductInBracket(prod_id,count){
		var frm=d.getElementById('form_add_in_bracket');
		frm.add_prod_in_bracket.value=prod_id;
		frm.add_prod_in_bracket_count.value=count;
		frm.submit();
		
	}

function addAccessInBasket(prod_id, access_id, count){
    var frm = d.getElementById('form_add_in_bracket');
    frm.add_prod_in_bracket_parent_prod.value = prod_id;
    addProductInBracket(access_id, count);
}

	
	function getToBasket(){
		window.location='/basket/'
	}
	
	function getOffsetSum(elem) {
    var top=0, left=0
    while(elem) {
        top = top + parseInt(elem.offsetTop)
        left = left + parseInt(elem.offsetLeft)
        elem = elem.offsetParent
    }

    return {top: top, left: left}
}

	
	window.onload = documentLoaded;
	
	
/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

	function showGlobalSearchList(){
		var frm=d.getElementById('frm_global_search');
		if (frm.globalSearchString.value)
			frm.submit();
	}
	
	function showSampleSearchResult(param){
		d.getElementById('globalSearchString').value=param;
		showGlobalSearchList();
	}
	
	function openQuickProd(url){
		if (url!=0){
			window.location=url;
		}
	}
	function setValueList(){
			d.getElementById('frm_valute_list').submit();
	}
	
	
	function ReviewChangeBrand(param){
		if (param.value)
			window.location='/review/'+param.value;
	}
	
	
	
	function fixBigCardImgWidth(img){
		if (img.width>200)
			img.width=200;
	}


	function userNeedRegister(){
			if (confirm('Уведомления доступны только зарегистрированным пользователям. Войти на сайт?')){
					window.location='/user/';
			}
	}

	function UfixThumbImage(img,width,height){		
		if (img.height>height){
				img.width=img.width*height/img.height;
				img.height=height;
		}
				
		if (img.width>width){
			img.height=img.height*width/img.width;
			img.width=width;
		}
			
		img.style.maxHeight=height+'px';
		img.style.maxWidth=width+'px';
		img.style.display='block';
	}		
	
	function changeAccess(url){
		if (url!='0')
			window.location=url;
	}			
