// Файл со вспомогательными функциями общего характера
//
// javascript:void(0) - используется в поле HREF гипертекстовой ссылки, при необходимости произвести
//                      действия с данными страницы, не перегружая ее 

//Вспомогательная функция. Получает номер первого элемента в зависимости от Браузера (0 или 1)
function getNum(num)
{
   return ((isIE()) ? (num+0) : (num+1));
}

//Вспомогательные функции. Присваивают различные значения стилевого параметра "display"
function show_block(id)
{
    document.getElementById(id).style.display = "block";
}
function show_inline(id)
{
    document.getElementById(id).style.display = "inline";
}
function hide(id)
{
    document.getElementById(id).style.display = "none";
}

// Вспомагательная функция. Определяет размер рабочей поверхности страницы. 
// Без панелей проводника и строки состояния
//      axis = "x" - получаем Ширину
//      axis = "y" - получаем Высоту
function GetSize(axis)
{
    var x,y;	
    if (self.innerHeight) 
    {
         x = self.innerWidth;	    
         y = self.innerHeight;	
    } 
    else if (document.documentElement && document.documentElement.clientHeight)
    {	
         x = document.documentElement.clientWidth;	    
         y = document.documentElement.clientHeight;	
    } 
    else if (document.body) 
    {
         x = document.body.clientWidth;	    
         y = document.body.clientHeight;	
    }
    return (axis == "x") ? x : (axis == "y") ? y : 0;
}

//Вспомогательные функции. Получают расстояние от начала страницы до объекта (любой вложености) в пикселях
//Расстояние сверху.
function getTop(obj)
{
    var i = 0;
    while(obj.tagName != "BODY")
    {
        i += obj.offsetTop;
        obj = obj.offsetParent;
    }
    return i;
}
//Расстояние слева.
function getLeft(obj)
{
    var i = 0;
    while(obj.tagName != "BODY")
    {
        i += obj.offsetLeft;
        obj = obj.offsetParent;
    }
    return i;
}

//Функции определения браузера
//isIE() - определяет, является ли браузер Internet Explorer-ом 
function isIE()
{
    var str = navigator.userAgent;
    var result = true;
    result = ((str.indexOf('Firefox') == -1) && (str.indexOf('Opera') == -1));
    return result;
}
//isIE() - определяет, является ли браузер Internet Explorer-ом версии 6 и ниже 
function isIEOld()
{
    return ((navigator.userAgent.indexOf("IE") != -1)&&(navigator.userAgent.indexOf("IE 7") == -1)&&(navigator.userAgent.indexOf("Opera") == -1));
}

//Функции для работы со всплывающими DIV-ами

function pop_close()
{
    var obj = document.getElementById("pop_under");
    obj.style.display = "none";
    obj = document.getElementById("pop_shadow");
    obj.style.display = "none";
    if(isIEOld()) document.getElementById("ie_bug").style.display = "none";
}

function pop_show(source, title, text, width, shadow)
{
    var obj = document.getElementById("pop_under");
    /*
        Определение текста и заголовка блока.
        Если параметры заданы, создаем текстовый нод в соответствующем месте...
    */
    if(title)
    {
        var pop_title = document.getElementById("pop_title");
        if(pop_title.firstChild)
            pop_title.removeChild(pop_title.firstChild);
        pop_title.appendChild(document.createTextNode(title));
    }
    if(text)
    {
        var pop_text = document.getElementById("pop_text");
        if(pop_text.firstChild)
            pop_text.removeChild(pop_text.firstChild);
        pop_text.appendChild(document.createTextNode(text));
    }
    /* Конец определения текста */
    var wid = (width) ? width : 300; //Проверяем передана ли ширина блока. Если нет, приваиваем значение по умолчанию 
    x = getLeft(source);
    y = getTop(source);
    var winWidth = GetSize("x");
    var winHeight = GetSize("y");
    //устанавливаем параметры блока
    obj.style.top = y+"px";
    obj.style.width = wid+"px";
    obj.style.display = "block";
    //проверяем горизонтальное попадение блока в ширину окна
    x = (winWidth-x > obj.offsetWidth+2) ? x : (winWidth - obj.offsetWidth-2);    
    x = x > 0 ? x : 0; 
    //присваиваем координату X
    obj.style.left = x+"px";
    //<!--Исправление ошибки 6-го и ниже IE связаную с некорректным отображением SELECT-ов...
    if(isIEOld())
    {
        var ie_bug = document.getElementById("ie_bug");
        ie_bug.style.display = "block";
        ie_bug.style.position = "absolute";
        ie_bug.style.top = (y-8)+"px";
        ie_bug.style.left = (x-8)+"px";
        ie_bug.style.width = (obj.offsetWidth+10)+"px";
        ie_bug.style.height = (obj.offsetHeight+10)+"px";
    }
    //Конец исправления-->
    //управление Тенью
    shad = (shadow == null) ? true : shadow;
    if(shad)
    {
        var shadow = document.getElementById("pop_shadow");
        shadow.style.top = (y-8)+"px";
        shadow.style.left = (x-8)+"px";
        shadow.style.display = "block";
        shadow.style.height = obj.offsetHeight + "px";
    }
}

//Предзагрузка картинок...
//вызов : ImagePreload("Путь\к\картинке\1.gif", "Путь\к\картинке\2.gif", ..., "Путь\к\картинке\n.gif");
//        где каждый параметр  - путь к картине, которую необходимо загрузить в кэш
function ImagePreload() 
{
    var images = (document.images) ? document.images : document.getElementsByTagName("IMG");
    if(images)
    { 
        if(!document._preloadedImages) document._preloadedImages=new Array();    
        var i;
        var j=document._preloadedImages.length;
        var a=ImagePreload.arguments; 
        for(i=0; i<a.length; i++)
        {
            if (a[i].indexOf("#")!=0)
            { 
                document._preloadedImages[j]=new Image; 
                document._preloadedImages[j++].src=a[i];
            }
        }
     }
}
//Избавление ActiveX объектов от рамки "Click to activate..."
//Использование: Шаг 1. ActiveX объект обернуть тэгом <noscript id="someFlashId"></noscript>
//               Шаг 2. вызывается функция processFlash(someFlashId), 
//                      где someFlashId - id Блока NOSCRIPT, который был указан выше
function processFlash(flashName)
{
	var flashContainer = document.getElementById(flashName);
	var flashMovie = document.createElement("div");
	flashMovie.innerHTML = decode(flashContainer.innerHTML);
	flashContainer.parentNode.insertBefore(flashMovie, flashContainer);
}
//Вспомогательная функция непонятного назначения	
function decode(input)
{
	var output = input;
	output = output.replace(/</g, "<");
	output = output.replace(/>/g, ">");
	return output;
}
//Модуль, исправляющий ошибку, связаную с некорректным отображением PNG файлов в IE 6 и ниже
function fixPNG()
{
    for(var i = 0; i < document.images.length; i++)
    {
        var img = document.images[i];
        imgSrc = img.src;
        if (imgSrc.substr(imgSrc.length-3).toLowerCase() == "png")
        {
            var w, h;
            w = img.width, h = img.height;
            img.src = "resource/px.gif";
            img.width = w, img.height = h;
            img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'" + imgSrc + "\', SizingMethod='scale');";
        }
    }
}
var isIE = isIE();
if( isIE )
{
    window.attachEvent("onload", fixPNG);
}
//Функция, исправляющая один конкретный объект
function fixPNG_Single(obj)
{
    if(obj)
    {
        if(obj.tagName.toLowerCase() == "img")
        {
            imgSrc = obj.src;
            if (imgSrc.substr(imgSrc.length-3).toLowerCase() == "png")
            {
                var w, h;   
                w = obj.width, h = obj.height;
                obj.src = "resource/blank.gif";
                obj.width = w, img.height = h;
                img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'" + imgSrc + "\', SizingMethod='scale');";
            }
        }
    }
}

