var xmlHttp = createXmlHttpRequestObject();
var lang = "";
var active = false;
var timeout = 100;

function createXmlHttpRequestObject()
{
    var xmlHttp = false;

    try
    {
        if (window.ActiveXObject)
        {
            xmlHttp = new window.ActiveXObject("Microsoft.XMLHTTP");
        }
        else
        {
            xmlHttp = new window.XMLHttpRequest();
        }
    }
    catch (e) { }
    
    return xmlHttp;
}

function ax_process()
{
    if (xmlHttp)
    {
        if (arguments.length > 0)
        {
            var pe = "";
            var pp = "";
            var q = "";

            for (n = 0; n < arguments.length; n++)
            {
                var arg = ax_process.arguments[n];

                pp += q + "'" + arg + "'";
                q = ",";

                if (n == 0)
                    elId = arg;
                else
                {
                    if (document.getElementById(arg))
                    {
                        pe += "&" + arg + "=" + encodeURIComponent(document.getElementById(arg).value);
                    }
                }
            }

            if (!active && (xmlHttp.readyState == 4 || xmlHttp.readyState == 0))
            {
                active = true;

                xmlHttp.open("GET", serverURL + "?ax_el=" + elId + pe, true);
                xmlHttp.onreadystatechange = handleServerResponseByID;
                xmlHttp.send(null);
            }
            else
            {
                setTimeout("ax_process(" + pp + ")", timeout);
            }
        }
    }
}

function ax_process_POST()
{
    if (xmlHttp)
    {
        if (arguments.length > 0)
        {
            var pe = "";
            var pp = "";
            var q = "";

            for (n = 0; n < arguments.length; n++)
            {
                var arg = ax_process_POST.arguments[n];

                pp += q + "'" + arg + "'";
                q = ",";

                if (n == 0)
                    elId = arg;
                else
                {
                    if (document.getElementById(arg))
                    {
                        pe += "&" + arg + "=" + encodeURIComponent(document.getElementById(arg).value);
                    }
                }
            }

            if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
            {
                var params = "ax_el=" + elId + pe;
                xmlHttp.open("POST", serverURL, true);

                xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                xmlHttp.setRequestHeader("Content-length", params.length);
                xmlHttp.setRequestHeader("Connection", "close");

                xmlHttp.onreadystatechange = handleServerResponseByID;

                xmlHttp.send(params);
            }
            else
            {
                setTimeout("ax_process_POST(" + pp + ")", timeout);
            }
        }
    }
}

function ax_init()
{
    if (xmlHttp && arguments.length >= 1)
    {
        for (n = 0; n < arguments.length; n++)
        {
            var arEl = ax_init.arguments[n];
            var otype = (arEl[0]==undefined)? "" : arEl[0];
            var oel = (arEl[1] == undefined) ? "" : arEl[1];
            var iurl = "";
            var iels = "";

            if (otype == "name")
            {
                if (!document.getElementsByName(oel))
                    continue;
            }
            else if (otype == "parent_name")
            {
                if (!window.parent || !window.parent.document.getElementsByName(oel))
                    continue;
            }
            else if (otype == "parent_id")
            {
                if (!window.parent || !window.parent.document.getElementById(oel))
                    continue;
            }
            else // if (otype == "id")
            {
                if (!document.getElementById(oel))
                    continue;
            }

            if (arEl.length >= 3)
            {
                var itype = "";
                var iel = "";
                
                for (i = 2; i < arEl.length; i++)
                {
                    if (i % 2 == 0)
                    {
                        itype = arEl[i];
                        continue;
                    }
                    else
                    {
                        iel = arEl[i];
                    }

                    iels += ",'" + itype + "', '" + iel + "'";

                    if (iel != "")
                    {
                        if (itype == "name")
                        {
                            if (document.getElementsByName(iel))
                            {
                                iurl += "&" + iel + "=" + encodeURIComponent(document.getElementsByName(iel).value);
                            }
                        }
                        else if (itype == "parent_name")
                        {
                            if (window.parent && window.parent.document.getElementsByName(iel))
                            {
                                iurl += "&" + iel + "=" + encodeURIComponent(window.parent.document.getElementsByName(iel).value);
                            }
                        }
                        else if (itype == "parent_id")
                        {
                            if (window.parent && window.parent.document.getElementById(iel))
                            {
                                iurl += "&" + iel + "=" + encodeURIComponent(window.parent.document.getElementById(iel).value);
                            }
                        }
                        else //if (itype == "id")
                        {
                            if (document.getElementById(iel))
                            {
                                iurl += "&" + iel + "=" + encodeURIComponent(document.getElementById(iel).value);
                            }
                        }
                    }
                }
            }

            if (active)
            {
                setTimeout("ax_init(['" + otype + "','" + oel + "'" + iels + "])", timeout);
            }
            else
            {
                if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
                {
                    active = true;
                    
                    try
                    {
                        xmlHttp.open("GET", serverURL + '?ax_ac=get&ax_el=' + oel + iurl + lang, true);

                        if (otype == "name")
                        {
                            xmlHttp.onreadystatechange = handleServerResponseByName;
                        }
                        else if (otype == "parent_name")
                        {
                            xmlHttp.onreadystatechange = handleServerResponseByParentName;
                        }
                        else if (otype == "parent_id")
                        {
                            xmlHttp.onreadystatechange = handleServerResponseByParentID;
                        }
                        else //if (otype == "id")
                        {
                            xmlHttp.onreadystatechange = handleServerResponseByID;
                        }

                        xmlHttp.send(null);
                    }
                    catch (e)
                    {
                        active = false;
                    }
                }
            }
        }
    }
}

function handleServerResponseByID()
{
    handleServerResponse("id");
}

function handleServerResponseByParentID()
{
    handleServerResponse("parent_id");
}

function handleServerResponseByName()
{
    handleServerResponse("name");
}

function handleServerResponseByParentName()
{
    handleServerResponse("parent_name");
}

function handleServerResponse(type)
{
    if (xmlHttp.readyState == 4)
    {
        if (xmlHttp.status == 200)
        {
            xmlResponse = xmlHttp.responseXML;
            xmlDocumentElement = xmlResponse.documentElement;

            if (xmlDocumentElement.getElementsByTagName("elId")[0].childNodes[0])
                elId = xmlDocumentElement.getElementsByTagName("elId")[0].childNodes[0].nodeValue;
            else
                elId = null;

            if (xmlDocumentElement.getElementsByTagName("data")[0].childNodes[0])
                retMsg = xmlDocumentElement.getElementsByTagName("data")[0].childNodes[0].nodeValue;
            else
                retMsg = "";

            if (elId && retMsg)
            {
                if (type == "name" || type == "parent_name")
                {
                    var arrElements = null;
                    
                    if (type == "name")
                        arrElements = document.getElementsByName(elId);
                    else if (type == "parent_name" && window.parent)
                        arrElements = window.parent.document.getElementsByName(elId);

                    if (arrElements.length)
                    {
                        for (i = 0; i < arrElements.length; i++)
                        {
                            arrElements[i].innerHTML = retMsg;
                        }
                    }
                }
                else if (type == "id")
                {
                    if (document.getElementById(elId))
                        document.getElementById(elId).innerHTML = retMsg;
                }
                else if (type == "parent_id")
                {
                    if (window.parent && window.parent.document.getElementById(elId))
                            window.parent.document.getElementById(elId).innerHTML = retMsg;
                }
            }
        }

        active = false;
    }
}

function SetLang(lng)
{
    lang = "&ax_l=" + encodeURIComponent(document.getElementById(lng).value);
}

