/* JavaScript MiniFramework 
 Last edition: 27.01.08
 � SovNarKom
 */
/* traversing */

// This functions returns only one node

function ById(id)
{
	return (document.getElementById(id));
}

function ByHref(ahref)
{
	var itms = ByTag(document, 'a');
	if (itms.length != null) 
		for (var i = 0; i < itms.length; i++) 
			if (itms[i].href == ahref) 
				return (itms[i]);
}

// This functions returns set of nodes
function ByTag(aparent, atag)
{
	var itms = [];
	if (typeof(aparent) == 'string') 
		aparent = ById(aparent);
	if (!aparent) 
		return;
	if (!aparent.childNodes) 
	{
		for (var i = 0; i < aparent.length; i++) 
			itms = itms.concat(aparent[i].getElementsByTagName(atag));
	}
	else 
		itms = aparent.getElementsByTagName(atag);
	return (itms);
}

function ParentByClass(aelement, aclass) 
{
	if (typeof(aelement) == 'string') 
		aelement = ById(aparent);
	if (!aelement) 
		return;
	
	aelement = aelement.parentNode;
	while (aelement)
	{
		if (aelement.className.indexOf(aclass)==0)
		{
			return aelement;
		}
		aelement = aelement.parentNode;
	}
	
	return null;
}

function ParentByTag(aelement, atag) 
{
	if (typeof(aelement) == 'string') 
		aelement = ById(aparent);
	if (!aelement) 
		return;
	
	aelement = aelement.parentNode;
	while (aelement)
	{
		if (aelement.tagName==atag)
		{
			return aelement;
		}
		aelement = aelement.parentNode;
	}
	
	return null;
}

function ByClass(aparent, aclass, req)
{
	var itms = [];
	var cn;
	if (typeof(aparent) == 'string') 
		aparent = ById(aparent);
	if (!aparent) 
		return;
	function Cycle(aparent)
	{
		if (aparent.childNodes) 
			for (var i = 0; i < aparent.childNodes.length; i++) 
			{
				cn = (aparent.childNodes[i].className);
				if (cn && cn.indexOf(aclass) == 0)
					itms.push(aparent.childNodes[i]);
				if (req) 
				{
					var p = ByClass(aparent.childNodes[i], aclass, req);
					if (p.length != null) 
					{
						itms = itms.concat(p);
					}
					else 
						itms.push(p);
				}
			}
	}
	if (!aparent.childNodes) 
		for (var i = 0; i < aparent.length; i++) 
		{
			Cycle(aparent[i]);
		}
	else 
		Cycle(aparent);
	return (itms);
}

function ByFullClass(aparent, aclass, req)
{
	var itms = [];
	var cn;
	if (typeof(aparent) == 'string') 
		aparent = ById(aparent);
	if (!aparent) 
		return;
	function Cycle(aparent)
	{
		if (aparent.childNodes) 
			for (var i = 0; i < aparent.childNodes.length; i++) 
			{
				cn = (aparent.childNodes[i].className);
				if (cn == aclass) 
					itms.push(aparent.childNodes[i]);
				if (req) 
				{
					var p = ByFullClass(aparent.childNodes[i], aclass, req);
					if (p.length != null) 
					{
						itms = itms.concat(p);
					}
					else 
						itms.push(p);
				}
			}
	}
	if (!aparent.childNodes) 
		for (var i = 0; i < aparent.length; i++) 
		{
			Cycle(aparent[i]);
		}
	else 
		Cycle(aparent);
	return (itms);
}

/* cookies */

function setCookie(name, value, expires, path, domain, secure)
{
	var lcookie = name + "=" + escape(value) +
	((expires) ? "; expires=" + expires : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
	document.cookie = lcookie;
}

function getCookie(name)
{
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) 
	{
		offset = cookie.indexOf(search);
		if (offset != -1) 
		{
			offset += search.length;
			end = cookie.indexOf(";", offset);
			if (end == -1) 
				end = cookie.length;
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return (setStr);
}

function saveScroll(aobj)
{
	if (!aobj) // aobj = document.body;
		aobj = ById('nbody');
	setCookie('auto-scroll-x', aobj.scrollTop);
}

function loadScroll()
{
	var lscroll = getCookie('auto-scroll-x');
	if (lscroll) 
	{
		//	window.scrollTo(0, lscroll);
		ById('nbody').scrollTop = lscroll;
		setCookie('auto-scroll-x', 0);
	}
}


/* css */

function AddCSS(cssfile)
{
	var cssref = document.createElement("link");
	cssref.setAttribute("rel", "stylesheet");
	cssref.setAttribute("type", "text/css");
	cssref.setAttribute("href", cssfile);
	ByTag(document, "head").appendChild(cssref);
}

function DefineBaseClass(elem)
{
	elem.BaseClass = elem.className;
}

function SetClass(elem, aclass)
{
	elem.className = aclass;
}

function SetSubClass(elem, subclass)
{
	elem.className = elem.BaseClass + ' ' + subclass;
}

function SetHoverStyle(whereid, whatid, subclass)
{
	var clinks = ByClass(whereid, whatid, true);
	for (var i = 0; i < clinks.length; i++) 
	{
		DefineBaseClass(clinks[i]);
		clinks[i].onmouseover = new Function("SetSubClass(this, '" + subclass + "')");
		clinks[i].onmouseout = new Function("SetSubClass(this, '')");
	}
}

/* Simple element view*/

function Show(aelement)
{
	aelement.style.display = 'block';
}

function Hide(aelement)
{
	aelement.style.display = 'none';
}

function Toggle(aelement)
{
	aelement.style.display = (aelement.style.display == "none") ? "block" : "none";
}

// to fix mozilla bug
function pageResize()
{
	ByTag(ById("nbody"), 'table', false)[0].className = "mtw";
	setTimeout("ByTag(ById('nbody'), 'table', false)[0].className = 'mt';", 0);
}

/* fix png */

function fixPNG(element)
{
	if (/MSIE (5\.5|6|7).+Win/.test(navigator.userAgent)) 
	{
		var src;
		
		if (element.tagName == 'IMG') 
		{
			if (/\.png$/.test(element.src)) 
			{
				element.oldsrc = element.src;
				element.src = "/images/blank.gif";
			}
		}
		else 
		{
			src = element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i);
			if (src) 
			{
				element.oldsrc = src[1];
				element.runtimeStyle.backgroundImage = "none";
			}
		}
		
		if (element.oldsrc) 
			element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + element.oldsrc + "',sizingMethod='crop')";
	}
}

function addBookmark(url, title)
{
	if (!url) 
		url = location.href;
	if (!title) 
		title = document.title;
	
	//Gecko
	if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function")) 
		window.sidebar.addPanel(title, url, "");
	//IE4+
	else 
		if (typeof window.external == "object") 
			window.external.AddFavorite(url, title);
		//Opera7+
		else 
			if (window.opera && document.createElement) 
			{
				var a = document.createElement('A');
				if (!a) 
					return false; //IF Opera 6
				a.setAttribute('rel', 'sidebar');
				a.setAttribute('href', url);
				a.setAttribute('title', title);
				a.click();
			}
			else 
				return false;
	
	return true;
}

/* keys */

function getKeyCode(akey)
{
	if (!akey) 
		akey = window.event;
	if (akey.keyCode) 
		return (akey.keyCode);
	else 
		if (akey.which) 
			return (akey.which);
}

function open_Picture(id, name, w, h, title)
{
	var vvv = open('', id + 'pic', 'width=' + w + ',height=' + h + ', top=40, left=50, toolbar=0, location=0, directories=0, status=0,menuBar=0,scrollBars=0,resizable=1');
	vvv.document.write('<html><head><title>' + title + '</title></head><body leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>');
	vvv.document.write('<img border=0  ondblclick="window.close();" alt="���� ����������� �� �������� ������" src="' + name + '"  width=' + w + ' height=' + h + '>');
	vvv.document.write('</body></html>');
	vvv.document.close();
	vvv.focus();
}

function open_g_Picture(id, url, w, h, title)
{
	var vvv = open('/' + url + '/full/?id=' + id, id + 'pic', 'width=' + (w + 42) + ',height=' + (h + 62) + ', top=40, left=50, toolbar=0, location=0, directories=0, status=0,menuBar=0,scrollBars=1,resizable=1');
	vvv.focus();
}

