var sEmptyImg='/i/tp.gif';
//делается на всякий случай, т.к. у меня иногда не срабатывал behavior
function RepairImages(){
	var bIsIE = ((navigator.userAgent.indexOf('MSIE') + 1) && !window.opera)
	var bGoodResize = ((navigator.userAgent.indexOf('Mac') + 1) || bIsIE );
	//var bGoodResize = 1;
	//~ var oTab=document.getElementById('Products');
	var oTab, oDivs, oImg;
	
	var oTables=document.getElementsByTagName('table');
	for(var j=0; j<oTables.length; j++){
		if(matchClass(oTables[j], 'with-items')){
			oTab=oTables[j];
			var oDivs=oTab.getElementsByTagName('div');
			for(var i=0; i<oDivs.length; i++){
				if(oDivs[i].className == 'img-wrap'){
					oImg = oDivs[i].getElementsByTagName('img')[0];
					if(oImg && bGoodResize){
						if(bIsIE){
							oImg.src=sEmptyImg;
							//if(oDivs[i].style.backgroundImage)
							oImg.style.backgroundImage=oDivs[i].style.backgroundImage;
							oImg.className='ie-resize';
						}
						else{
							oImg.src=oDivs[i].style.backgroundImage.substr(4, oDivs[i].style.backgroundImage.length - 5);
							oImg.className='resize';
						}
					}
					oDivs[i].style.backgroundImage='';
				}
			}
		}
	}
}

// достает все dl, у которых есть класс collapsable, и передает их на CL_Prepare
function UpdateCollapsableLists(){
	//чтобы не выводить лишние данные - сделаю клон структуры каталога
	var oRef=document.getElementById('Reference');
	var oClone=document.getElementById('Clone');
	if(oRef && oClone){
		oClone.insertBefore(oRef.getElementsByTagName('dd')[0].cloneNode(true), oClone.firstChild);
		oClone.firstChild.className='expanded';
		oClone.insertBefore(oRef.getElementsByTagName('dt')[0].cloneNode(true), oClone.firstChild);
		oClone.firstChild.className='expanded';
	}
	var oDLs=document.getElementsByTagName('dl');
	for(var i=0; i < oDLs.length; i++)
		if(matchClass(oDLs[i], 'collapsable'))
			CL_Prepare(oDLs[i]);
}

// аттачит нужные события и элементы сворачивающимся спискам
function CL_Prepare(oList){
	var oDiv;
	var oDTs=oList.getElementsByTagName('dt');
	for(var i=0; i < oDTs.length; i++)
		oDTs[i].insertBefore(CL_CreateControl(), oDTs[i].firstChild);
	
	var oDDs=oList.getElementsByTagName('dd');
	for(var i=0; i < oDDs.length; i++)
		oDDs[i].appendChild(CL_CreateControl());
}

function CL_CreateControl(){
	var oDiv=document.createElement('div');
	oDiv.className = 'control';
	addEvent(oDiv, 'click', CL_Expand);
	return oDiv;
}

// сворачивает/разворачивает списки
function CL_Expand(evt){
	if( (evt = checkEvent(evt)) ){
		var oElem=evt.target.parentNode;
		var oDT, oDD, oSibling;
		switch(oElem.tagName){
			case 'DT':
				if( (oSibling=CL_SearchSibling(oElem, 'DD', 'next')) ){
					oDT=oElem;
					oDD=oSibling;
				}
				break;
			case 'DD':
				if( (oSibling=CL_SearchSibling(oElem, 'DT', 'previous')) ){
					oDT=oSibling;
					oDD=oElem;
				}
				break;
		}
		
		if(oDD && oDT){
			if(matchClass(oDD, 'expanded')){
				removeClass(oDD, 'expanded');
				removeClass(oDT, 'expanded');
			}
			else{
				addClass(oDD, 'expanded');
				addClass(oDT, 'expanded');
			}
		}
	}
}

//ищет ближайший соседний элемент и проверяет его название
function CL_SearchSibling(oElem, sSiblingName, sWay){
	var oSibling=oElem;
	switch(sWay){
		case 'next':
			while( (oSibling = oSibling.nextSibling) )
				if(oSibling.nodeType == 1)
					return (oSibling.tagName == sSiblingName) ? oSibling : null;
			break;
		case 'previous':
			while( (oSibling = oSibling.previousSibling) )
				if(oSibling.nodeType == 1)
					return (oSibling.tagName == sSiblingName) ? oSibling : null;
			break;
	}
	
	return null;
}
