﻿
function mouseX(evt) 
{
    if (evt.pageX) return evt.pageX;
    else if (evt.clientX)
       return evt.clientX + (document.documentElement.scrollLeft ?
       document.documentElement.scrollLeft :
       document.body.scrollLeft);
    else return null;
}

function mouseY(evt) 
{
    if (evt.pageY) return evt.pageY;
    else if (evt.clientY)
       return evt.clientY + (document.documentElement.scrollTop ?
       document.documentElement.scrollTop :
       document.body.scrollTop);
    else return null;
}

function ReplaceLinkFormatString(linkFormatString, docId, colId, repNumb, srcInd, blockInd)
{
    var tmpString =  linkFormatString;
    tmpString = tmpString.replace('{0}',docId);
    tmpString = tmpString.replace('{1}',colId);
    tmpString = tmpString.replace('{2}',repNumb);
    tmpString = tmpString.replace('{3}',srcInd);
    tmpString = tmpString.replace('{4}',blockInd);
    tmpString = tmpString.replace('{4}',blockInd);
    return tmpString;
}

var showedIndex;
function ShowTT(event)
{
    var sender; 
    if(__nonMSDOMBrowser)
        sender = event.target;
    else
        sender = event.srcElement;
    
    if(sender.id == "")
        sender = sender.parentNode;
        
    var blockNumber = sender.getAttribute('cbi');
    showedIndex = sender.id;
    
    var srcLink;
    if(isuAnon != 0)
    {
        srcLink = srcNames[sender.getAttribute('srcI')];
    }
    else
    {
        srcLink = srcNames[sender.getAttribute('srcI')];
        var link = ReplaceLinkFormatString(linkFormatString, docId, colId, repNumb, sender.getAttribute('srcI')-1, sender.getAttribute('bI'));
        srcLink = "<a href='" + link + "'>" + srcLink + "</a>";
    }
    srcLink = "<nobr>" + srcLink + "</nobr>";
    
    var srcUrl;
    var srcHref = srcUrls[sender.getAttribute('srcI')];
    if(typeof(srcHref) != "undefined")
    {srcUrl = "<nobr>" + srcUrls[sender.getAttribute('srcI')] + "</nobr>";}
    else
    {srcUrl="";}
    
    var tooltip;
    if(blockNumber != null)
        tooltip = GetElementById('toolTip');
    else
        tooltip = GetElementById('fcToolTip');
        
    var docWidth = GetDocumentWidth();

    if(docWidth - (mouseX(event) + GetScrollX()) < tooltip.clientWidth)
        SetElementX(tooltip, docWidth - tooltip.clientWidth - 10);
    else
        SetElementX(tooltip, mouseX(event));

    SetElementY(tooltip, mouseY(event));
    
    var verticalScroll = (document.documentElement.scrollTop ?
       document.documentElement.scrollTop :
       document.body.scrollTop);
       
    if(typeof(delBlockFormatString) != 'undefined')
    {
        var tmplinkString = delBlockFormatString.replace('{2}',verticalScroll);
        var srcIndex = sender.getAttribute('srcI') - 1;
        tmplinkString = tmplinkString.replace('{1}',srcIndex);
    }
    
    if(blockNumber != null)
    {
        GetElementById('fcToolTip').style.visibility='hidden';
        GetElementById('linkCont').innerHTML = srcLink;
        GetElementById('urlCont').innerHTML = srcUrl;
        GetElementById('citeCont').innerHTML = "<nobr>Цитируемость: " + blockCiteVal[blockNumber] + "%</nobr>";
        GetElementById('docText').innerHTML = docCites[blockNumber];
        GetElementById('srcText').innerHTML = srct[blockNumber];
        if(typeof(delBlockFormatString) != 'undefined' && isuAnon == 0 && GetElementById('linkDelBlock') != null)
        {
            GetElementById('linkDelBlock').href = tmplinkString.replace('{0}',sender.getAttribute('bI'));
        }
    }
    else
    {
        GetElementById('toolTip').style.visibility='hidden';
        GetElementById('fcLinkCont').innerHTML = srcLink;
        GetElementById('fcUrlCont').innerHTML = srcUrl;
        GetElementById('fcCite').innerHTML = "<nobr>Цитируемость: 100%</nobr>";
        if(typeof(delBlockFormatString) != 'undefined' && isuAnon == 0 && GetElementById('fclinkDelBlock') != null)
        {
            GetElementById('fclinkDelBlock').href = tmplinkString.replace('{0}',sender.getAttribute('bI'));
        }
    }

    tooltip.style.visibility='visible';
}

function HideToolTip(event)
{
    var sender; 
    if(__nonMSDOMBrowser)
        sender = event.target;
    else
        sender = event.srcElement;
    
    if(sender.id == "")
    {
        if(sender.parentNode.id == showedIndex)
            return;
    }
        
    var parent = sender;
    if(parent.id=='toolTip' || parent.id=='fcToolTip')
        return;
    
    while (parent) {
        if(parent.id=='toolTip' || parent.id=='fcToolTip')
            return;
        parent = parent.parentNode;
    }

    if(sender.getAttribute('srcI') != null)
        return;
        
    
    
    GetElementById('toolTip').style.visibility='hidden';
    GetElementById('fcToolTip').style.visibility='hidden';
}

function Navigate(event)
{
    var sender; 
    if(__nonMSDOMBrowser)
        sender = event.target;
    else
        sender = event.srcElement;
        
    var blockId = sender.getAttribute('lb');
    var block = GetElementById('mb' + blockId);
    if(!block && sender.getAttribute('blockUrl') == null)
        return;
    else if(!block && sender.getAttribute('blockUrl') != null)
    {
        window.location.href = sender.getAttribute('blockUrl');
        return;
    }
    var blockPosition = GetElementPosition(block);
    
    window.scrollBy(0, blockPosition.y - mouseY(event) + 15);
}

function CreatePositioners()
{ 
    if(typeof(prevPBN) != 'undefined' && typeof(nextPBN) != 'undefined')
    {
        if(prevPBN == -1 && nextPBN == -1 && mbNumb<=1)
            return;
    }
    else if(mbNumb<=1)
        return;
    
    for(i=0;i<mbNumb;i++){
        var block = GetElementById('mb' + i);
        CreatePositioner(i);
    }
}

function CreatePositioner(blockNumber)
{
    var mainDiv = document.createElement("div");
    mainDiv.style.position='absolute';
    var pDiv = document.createElement("div");
    
    pDiv.className="Positioner";
    var pTable = document.createElement("table");
    var tr = document.createElement("tr");
    var td1 = document.createElement("td");
    var td2 = document.createElement("td");
    td1.className="prevBlock";
    td2.className="nextBlock";
    td1.setAttribute('lb',parseInt(blockNumber) - 1);
    td2.setAttribute('lb',parseInt(blockNumber) + 1);
    tr.appendChild(td1);
    tr.appendChild(td2);
    var tBody = document.createElement("tbody");
    tBody.appendChild(tr);
    pTable.appendChild(tBody);
    pDiv.appendChild(pTable);
    mainDiv.appendChild(pDiv);
    
    var block = GetElementById('mb' + blockNumber);
    
    if(blockNumber == 0)
    {
        if(typeof(prevPBN) != 'undefined' && typeof(blockFormatString) != 'undefined' && prevPBN != -1)
            td1.setAttribute('blockUrl', blockFormatString.replace('{0}',prevPBN) + '#lastB'); 
        else
            td1.style.visibility='hidden';
    }
    if(blockNumber == mbNumb-1)
    {
        if(typeof(nextPBN) != 'undefined' && typeof(blockFormatString) != 'undefined' && nextPBN != -1)
            td2.setAttribute('blockUrl', blockFormatString.replace('{0}',nextPBN)+ '#firstB'); 
        else
            td2.style.visibility='hidden';
    }
    
    block.parentNode.insertBefore(mainDiv,block);
    
    if(__nonMSDOMBrowser)
        pDiv.addEventListener('click',Navigate,false);
    else
        pDiv.attachEvent('onclick',Navigate);
}