/* 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 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 ParentByClass(aparent, aclass)
{
    var cn;

    if (typeof(aparent) == 'string') 
        aparent = ById(aparent);
		
    if (!aparent) 
        return;
	
	cn = aparent.parentNode;
	
	while (cn)
	{
		if (cn.className == aclass) 
			return cn;
		cn = cn.parentNode;
	}
}

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();
}
