﻿function ElementFind(elementPath, relativeElement)
{
    var element;
    
    var w = window;
    
    if (elementPath.substring(0, 1) == "/")//apsolutna putanja, putanja koja krece od root-a
    {
        var elementId = "ctl00_cph1";
        var elementsIds = elementPath.substring(1).split('.');
        for (var i = 0; i < elementsIds.length; i++)
        {
            elementId += "_" + elementsIds[i];
            
            element = w.document.getElementById(elementId);
            
            if (element != null && element.tagName == "IFRAME")
            {
                w = element.contentWindow;
                elementId = "ctl00_cph1";
            }
        }
        
        return element;
    }
    else//relativna putanja
    {
        //Racunamo broj vracanja unazad
        var iBack;
        var match = elementPath.match(RegExp("\.\.\/", "g"));
        if (match == null)
        {
            iBack = 1;
        }
        else
        {
            iBack = match.length + 1;
        }
        
        //Racunamo apsolutnu putanju relativnog elementa, odsecamo "ctl00_ctl1_"
        var relativeElementAbsolutePath = "/" + relativeElement.id.substring(11).StringReplaceAll("_", ".");
        
        //Pronalazimo pocetak apsolutne putanje elementa tako sto odsecamo krajeve od apsolutne putanje relativnog elementa,
        //Takodje pronalazimo window na kom se nalazi element koji trazimo
        var iStart = relativeElementAbsolutePath.length;
        for (var i = 0; i < iBack; i++)
        {
            iStart = relativeElementAbsolutePath.lastIndexOf(".", iStart);
        }
        var elementAbsolutePathStart = relativeElementAbsolutePath.substring(0, iStart);
        if (elementAbsolutePathStart == "")
        {
            elementAbsolutePathStart = "/";
        }
        
        //Pronalazimo kraj apsolutne putanje elementa
        var iEnd = elementPath.lastIndexOf("/");
        var elementAbsolutePathEnd = elementPath.substring(iEnd).StringReplaceAll("_", ".");
        
        //Sastavljamo pocetak i kraj i dobijamo apsolutnu putanju elementa
        var elementAbsolutePath;
        if (elementAbsolutePathStart == "/")
        {
            elementAbsolutePath = elementAbsolutePathStart + elementAbsolutePathEnd;
        }
        else
        {
            var elementAbsolutePath = elementAbsolutePathStart + "." + elementAbsolutePathEnd;
        }
        
        //Pozivamo ponovo metod, ali sa apsolutnom putanjom elementa
        return ElementFind(elementAbsolutePath);
    }
}




function ElementGetValues(searchString, realtiveElement)
{
    var values = new Array();
    
    var data1 = searchString.split(';');
    for (var i = 0; i < data1.length; i++)
    {
        var data2 = data1[i].split(',');
        
        var value;
        var type = data2[0];
        if (type == "C")
        {
            var controlPath = data2[1];
            var control = ElementFind(controlPath, realtiveElement);
            if (control == null)
            {
                value = null;
            }
            else
            {
                if (control.tagName == "INPUT")
                {
                    value = control.value;
                }
                else if (control.tagName == "TEXTAREA")
                {
                    value = control.value;
                }
                else if (control.tagName == "SPAN")
                {
                    value = control.innerText;
                }
                else
                {
                    value = null;
                }
            }
        }
        else if (type == "Q")
        {
            var queryStringKey = data2[1];
            var queryStringValue = UrlGetQueryString(window.location.href, queryStringKey);
            value = queryStringValue;
        }
        
        values[values.length] = value;
    }
    return values;
}




function ElementGetVisible(element)
{
    if (element.className == "Hidden")
    {
        element.className = "";
        element.style.position = "absolute";
        element.style.top = "-3000px";
        element.style.left = "-3000px";
        return false;
    }
    else if (element.style.position == "absolute" &&
        element.style.top == "-3000px" &&
        element.style.left == "-3000px")
    {
        return false;
    }
    else
    {
        return true;
    }
}
function ElementSetVisible(element, visible)
{
    //Za sakrivanje elementa nije moglo da se koristi display: none, jer u opstem slucaju element koji se
    //sakriva moze da sadrzi iframe (specijalno kada je element zapravo asp:Panel koji predstavlja jedan tab),
    //a Mozilla nece setovati src atribut iframe ako je on display: none ili ako mu je parent element display: none
    if (visible)
    {
        element.style.position = "";
        element.style.top = "";
        element.style.left = "";
        
        ElementSetTabIndex(element, 0, true);
    }
    else
    {
        element.style.position = "absolute";
        element.style.top = "-3000px";
        element.style.left = "-3000px";
        
        ElementSetTabIndex(element, -1, true);
    }
}
function ElementShowHide(element)
{
    if (ElementGetVisible(element))
    {
        ElementSetVisible(element, false);
    }
    else
    {
        ElementSetVisible(element, true);
    }
}
function ElementSetTabIndex(element, tabIndex, recursive)
{
    if (element.tagName == "A" || element.tagName == "AREA" || element.tagName == "BUTTON" ||
        element.tagName == "INPUT" || element.tagName == "OBJECT" || element.tagName == "SELECT" ||
        element.tagName == "TEXTAREA")
    {
        element.tabIndex = tabIndex;
    }
    
    if (recursive)
    {
        for (var i = 0; i < element.childNodes.length; i++)
        {
            if (typeof element.childNodes[i].tabIndex != "undefined")
            {
                ElementSetTabIndex(element.childNodes[i], tabIndex, true);
            }
        }
    }
}




//Problem je sto ne postoji element.previousElementSibling u IE browser-u
function ElementGetPreviousElementSibling(element)
{
    var previousElement = element.previousSibling;
    while (previousElement.nodeType != 1)
    {
        previousElement = previousElement.previousSibling;
    }
    return previousElement;
}
//Problem je sto ne postoji element.nextElementSibling u IE browser-u
function ElementGetNextElementSibling(element)
{
    var nextElement = element.nextSibling;
    while (nextElement.nodeType != 1)
    {
        nextElement = nextElement.nextSibling;
    }
    return nextElement;
}
//Problem je sto ne postoji element.firstElementChild u IE browser-u
function ElementGetFirstElementChild(element)
{
    var firstChild = element.childNodes[0];
    var i = 0;
    while (firstChild.nodeType != 1)
    {
        i++;
        firstChild = element.childNodes[i];
    }
    return firstChild;
}
//Problem je sto ne postoji element.lastElementChild u IE browser-u
function ElementGetLastElementChild(element)
{
    var lastChild = element.childNodes[element.childNodes,length - 1];
    var i = 0;
    while (lastChild.nodeType != 1)
    {
        i--;
        lastChild = element.childNodes[i];
    }
    return lastChild;
}




//Ova funkcija se koristi kod uslovne validacije
function ElementEnableValidation(element, enable)
{
    if (typeof(element.isvalid) != "undefined")
    {
        ValidatorEnable(element, enable);
        return;
    }
    
    var spans = element.getElementsByTagName("span");
    for (var i = 0; i < spans.length; i++)
    {
        var span = spans[i];
        if (typeof(span.isvalid) == "undefined")
        {
            continue;
        }
        
        var validator = span;
        ValidatorEnable(validator, enable);
    }
}
//Ova funkcija sluzi da kada se prozor ucita, ako je neki FormView na primer disable-ovan,
//da se disable-uju i iframe-ovi koji su u njemu
function ElementEnableIFrames(element, enable)
{
    var iframes = element.getElementsByTagName("iframe")
    for (var i = 0; i < iframes.length; i++)
    {
        if (iframes[i].contentWindow.document.getElementById("IFrameDIV") == null)
        {
            //Ima iframe-ova u skmMenu kontroli, njih preskacemo
            continue;
        }
        iframes[i].contentWindow.document.documentElement.disabled = !enable;
    }
}

