/* 

	JavaScript Библиотека по работе с CSS
 	Copyright ©  2008 Студия веб-дизайна Dlab.RU
 	Все права защищены. 
	Копирование и использование без лицензии запрещено
	
	v1.5	15.08.2008
	
*/


var IE;
switch (navigator.appName)
	{
	case "Microsoft Internet Explorer":
		IE=true;
		break;
	}


function href (url)
	{
	document.location=url;
	}

function browserVersion()
	{
	 //Определение числового номера версии для IE
 	var ua = navigator.userAgent;
	var IEoffset = ua.indexOf("MSIE ");
	var MSIEVersionNumber = parseFloat(ua.substring(IEoffset+5, ua.indexOf(";", IEoffset)));
 	return (MSIEVersionNumber);
	}

// изменить hidden у элемента
function CSS_Hidden (ID, On, Timer) 
	{
	// need f
	if (typeof (ID)!='object') { var El=document.getElementById (ID);} else { El=ID;}		
	if (Timer) 
		{
		if (On==1) 
			{
			var f='CSS_Hidden("'+ID+'", "'+0+'")';
			setTimeout(f, Timer);
			} else {
			var f='CSS_Hidden("'+ID+'", "'+On+'")';
			setTimeout(f, Timer);
			return;
			}
		}

	var El=document.getElementById (ID);
	if (El) 
		{
		if (On==1) 
			{
			El.style.visibility='visible';
			} else {
			El.style.visibility='hidden';				
			}
		}
	}

// массив с открытыми
var CSS_OC_Status=new Array();

// поменять hidden/visible у элемента
function CSS_Open_Close (ID, On, Cookie) 
	{
	// need f
	if (typeof (ID)!='object') { var El=document.getElementById (ID);} else { El=ID;}		

	var El=document.getElementById (ID);
	if (El) 
		{
		var ID=El.id;
		ID=ID.toString();
		

		// init
		if (!CSS_OC_Status[ID]) {if (El.style.visibility!='hidden') { CSS_OC_Status[ID]='0';  } else { CSS_OC_Status[ID]='1';} }
		
		if (On && On==1) { CSS_OC_Status[ID]='1'; }
		if (On && On!='1') { CSS_OC_Status[ID]='0'; }

		if (CSS_OC_Status[ID]=='1') 
			{
			CSS_OC_Status[ID]='0';
			El.style.visibility='visible';
			El.style.display='block';
			} else {
			CSS_OC_Status[ID]='1';
			El.style.visibility='hidden';				
			El.style.display='none';
			}
		}

	if (Cookie==1) 
		{
		// далее надо кукисы поставить в известность
		document.cookie=ID+'='+CSS_OC_Status[ID]+'; path=; expires=Mon, 01-Jan-2020 00:00:00 GMT'; 		
		}
	}

// закрыть все открытые
function CSS_Open_Close_All (Cookie)
	{
	if (!CSS_OC_Status) return;
	for (key in CSS_OC_Status) 
		{
		if (CSS_OC_Status[key]=='1') continue;
		ID=key;
		var El=document.getElementById (ID);
		document.cookie=ID+'='+CSS_OC_Status[ID]+'; path=; expires=Mon, 20-Jan-2000 00:00:00 GMT'; 	
		El.style.visibility='hidden';				
		El.style.display='none';
		CSS_OC_Status[ID]=0;
		}
	}

// изменить класс у элемента
function CSS_Class (ID, New_Class) 
	{
	// need f
	if (typeof (ID)!='object') { var El=document.getElementById (ID);} else { El=ID;}		
		
	if (El) 
		{
		El.className=New_Class;
		}
	}

// здесь хранятся class
var CSS_L=new Array();

// добавить класс элементу и убрать если ""
function CSS_Class_Add (ID, New_Class) 
	{
	var Old_Class='';
	// need f
	if (typeof (ID)!='object') { var El=document.getElementById (ID);} else { El=ID; }		

	// имя
	var ID=El.id;

	// восстановление
	if (CSS_L[ID]) 
		{
		Old_Class=CSS_L[ID];
		}		
	
	// элемент есть 
	if (El) 
		{
		var CSSClass=El.className;
		if (New_Class.length>0) 
			{
			if (!CSS_L[ID]) 
				{
				CSS_L[ID]=CSSClass;
				CSSClass=CSSClass+' '+New_Class;
				} else {
				CSSClass=Old_Class+' '+New_Class;
				}
			} else {
			CSSClass=Old_Class;
			}
		El.className=CSSClass;
		}
	//	document.all.big.innerHTML=CSSClass;
	}



var ZIndex=0;
var DivStat=new Array();
// открыть закрыть DIV
function DivOn(ID, type, Cookie) 
	{
	var El=getElement (ID);

	if (!El) { return false; }
	
	// только инфо
	if (type==undefined) 
		{
		var visi=getStyle(ID, 'visibility');
		if (visi!='hidden') 
			{
			return '1';
			} else {
			return '0';
			}
		}

	// type
	type=type.toString();

	// block
	var Display='block';
	if (El.tagName) 
		{
		var Tag=El.tagName.toLowerCase();
		if (Tag=='tr') 
			{
			Display='table-row';
			}
		if (Tag=='th' || Tag=='td') 
			{
			Display='table-cell';
			}
		if (Tag=='tbody') 
			{
			if (browserVersion()==7)
				{
				Display='block';	// ie7
				} else {
				Display='table-row-group';
				}
			}
		}

	// auto
	if (type=='auto')
		{
		var visi=getStyle(ID, 'visibility');
		if (visi!='hidden') 
			{
			type='0';
			} else {
			type='1';
			}
		}
	
	// if (El.style.zIndex) { ZIndex=El.style.zIndex; }
	
	switch (type)
		{
		case '1':
			if (ZIndex) 
				{
				El.style.zIndex=ZIndex;
				}
			El.style.display=Display;
			El.style.visibility="visible";
			ZIndex++;
			DivStat[ID]=0;
			// только отправка в кукис
			if (Cookie) 
				{ 
				var Val=getCookie('divOn');
				if (!Val) { Val=''; } else { Val=Val+','; }
				var Rx=new RegExp (ID+'\:[0-9],?', 'g');
				Val=Val.replace(Rx, '');
				document.cookie='divOn='+Val+ID+':1; path=/; expires=Mon, 01-Jan-2020 00:00:00 GMT'; 
				}			
			return 1;
			break;
		case '0':
			El.style.display="none";
			El.style.visibility="hidden";
			DivStat[ID]=1;
			if (Cookie) 
				{ 
				var Val=getCookie('divOn');
				if (!Val) { Val=''; } else { Val=Val+','; }
				var Rx=new RegExp (ID+'\:[0-9],?', 'g');
				Val=Val.replace(Rx, '');
				document.cookie='divOn='+Val+ID+':0; path=/; expires=Mon, 01-Jan-2020 00:00:00 GMT';
				}			
			return 0;
			break;
		}
	
	
	return type;
	}

function getElement (ID)
	{
	if (typeof (ID)!='elem' && typeof (ID)!='object') 
		{ 
		var ID=document.getElementById (ID);
		}
	return ID;
	}



function getStyle(ID, name) 
	{
	// Если необходимое свойство содержится в аттрибуте style[]
	// тогда, оно является текущим
	
	if (!ID) { return; }

	var ID=getElement (ID);
	
	if (ID.style[name])
		{
		return ID.style[name];
		} else if (ID.currentStyle)
			{
		       // Вычисляем значение стиля используя метод IE
			return ID.currentStyle[name];
			} else if (document.defaultView && document.defaultView.getComputedStyle) 
				{
				// или W3C метод, если таковой имеется
				name = name.replace(/([A-Z])/g,"-$1");
				name = name.toLowerCase();
				var style = document.defaultView.getComputedStyle(ID,'');
				return style && style.getPropertyValue(name);
		} else {
		return null;
		}
	}



function getCookie(name) 
	{
	var Cookie='';
	var cookieString = " " + document.cookie;
	var searchCookie = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookieString.length > 0) {
		offset = cookieString.indexOf(searchCookie);
		if (offset != -1) {
			offset += searchCookie.length;
			end = cookieString.indexOf(";", offset)
			if (end == -1) {
				end = cookieString.length;
			}
			Cookie = unescape(cookieString.substring(offset, end));
		}
	}
	if (Cookie) { return(Cookie);}
	return '';
	}


function divJS ()
	{
	var Cook=getCookie('divOn');
	var All=Cook.split(',');
	for (var i=0; i<All.length; i++)
		{
		var Val=All[i];
		var Rx=new RegExp ('^([a-z_0-9]+):([01])$', '');
		var Z=Val.match (Rx);
		if (Z)
			{
			var Id=Z[1];
			var Do=Z[2];
			DivOn (Id, Do);
			}
		}
	}
