﻿var isIE;
    var completeTable;
    var completeField;
    var autorow;

    function AJAXInteraction(url) {
        artno_global = completeField.value;
        this.url = url;
        var req = init();
        req.onreadystatechange = processRequest;
        
        function init() {
            if (window.XMLHttpRequest) {
                //return new XMLHttpRequest();
            } else if (window.ActiveXObject) {
                isIE = true;
                //return new ActiveXObject("Microsoft.XMLHTTP");
            }
      
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                http_request = new XMLHttpRequest();
                
                if (http_request.overrideMimeType) {
                    http_request.overrideMimeType('text/xml');
                }
            } else if (window.ActiveXObject) { // IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
            return http_request;
        }

        //completion
        function processRequest () {

            if (req.readyState == 4) {
                if (req.status == 200) {
                    postProcess(req.responseXML);
                }
            }
        }

        //show file
        function processFile () {
            if (req.readyState == 4) {
                if (req.status == 200) {
                    getFile(req.responseXML);
                }
            }
        }

        this.send = function() {
            req.open("GET", url, true);
            req.send(null);
        }
    }

    function getElementY(element){
        var targetTop = 0;
 
        if (element.offsetParent) {
            while (element.offsetParent) {
                targetTop  += element.offsetTop;
                element = element.offsetParent;
            }
        } else if (element.y) {
            targetTop += element.y;
        }
        return targetTop;
    }

    function getElementX(element){
        var targetLeft = 0;

        if (element.offsetParent) {
            while (element.offsetParent) {
                targetLeft += element.offsetLeft;
                element = element.offsetParent;
            }
        } else if (element.y) {
            targetLeft += element.y;
        }

        return targetLeft;
    }

    function init() {
        completeField = document.getElementById("complete-field");
        var menu = document.getElementById("auto-row");
        autorow = document.getElementById("menu-popup");
        autorow.style.top  = getElementY(menu) + menu.offsetHeight + "px";
        autorow.style.left  = getElementX(menu) + "px";
        autorow.style.width   = (menu.offsetWidth-2) + "px";
        autorow.style.visible = false;
        completeTable = document.getElementById("completeTable");
        completeTable.style.width = (menu.offsetWidth-2) + "px";
    }

    function doCompletion(topos, kind) {
        clearTable();
        
        if (completeField.value == "") {
            clearTable();
        } else {
            if( (kind == "input" ) && (artno_global != "") ){
                var url = "?str=" + escape(completeField.value.substring(0,artno_global.length+1)) + "&topos="+ topos;

            } else {

                if ( kind == "more"){
                    completeField.value = completeField.value.substring(0,artno_global.length)
                    var url = "?str=" + escape(completeField.value.substring(0,artno_global.length)) + "&topos="+ topos;
                } else {
                    var url = "?str=" + escape(completeField.value) + "&topos="+ topos;
                }
            }
        
            var ajax = new AJAXInteraction(url);
            ajax.send();
        }
    }

    var arrArticles = new Array();
    var artno_global = "";

    function postProcess(responseXML) {

        artno_global = completeField.value;
        var ausgabe = "";
        clearTable();
        var xmldoc = responseXML;
        var employees = responseXML.getElementsByTagName("dataroot")[0];
    
        if (employees.childNodes.length > 0) {
            completeTable.style.border = "1pt solid #000000";
            completeTable.className = "styleCompleteTable";
        } else {
            clearTable();
        }
    
        for (loop = 0; loop < responseXML.getElementsByTagName("files").length; loop++) {
            var base       = xmldoc.getElementsByTagName("files")[loop];
            var artno      = base.getAttribute("artno");
            appendArticle(artno,"","");
            arrArticles[artno] = artno.substring(0,3) + "." + artno.substring(3,5) + "." + artno.substring(5,8); //artno
        }
    
        //check if more articles then in current list
        /* change 2006-09-18
        if(responseXML.getElementsByTagName("entries").length == 1){
            appendMoreEntries(responseXML.getElementsByTagName("entries")[0].firstChild.nodeValue);
        }
        */
        
        if(responseXML.getElementsByTagName("last").length == 1){
            appendMoreEntries(responseXML.getElementsByTagName("entries")[0].firstChild.nodeValue, "last");
        } else if(responseXML.getElementsByTagName("entries").length == 1){
            appendMoreEntries(responseXML.getElementsByTagName("entries")[0].firstChild.nodeValue,"more");
        }
    }

    function clearTable() {
        if (completeTable) {
            completeTable.setAttribute("border", "0");
            completeTable.style.border = "0pt solid #000000";
            completeTable.style.visible = false;

            for (loop = completeTable.childNodes.length -1; loop >= 0 ; loop--) {
                completeTable.removeChild(completeTable.childNodes[loop]);
            }
        }
    }

    function appendArticle(artno,lastName,employeeId) {
        var artnoCell;
        var lastNameCell;
        var row;
        var nameCell;
        var strArtNo = "";
    
        strArtNo = artno.substring(0,3) + "." + artno.substring(3,5) + "." + artno.substring(5,8);

        if (isIE) {
            row = completeTable.insertRow(completeTable.rows.length);
            nameCell = row.insertCell(0);
        } else {
            row = document.createElement("tr");
            nameCell = document.createElement("td");
            row.appendChild(nameCell);
            completeTable.appendChild(row);
        }
    
        row.className = "popupRow";
        nameCell.setAttribute("bgcolor", "#FFFFFF");
        nameCell.setAttribute("colspan", "2");

        var linkElement = document.createElement("a");
        linkElement.className = "popupItem";
        linkElement.setAttribute("href", "javascript:setArticle('"+ artno +"')");
        linkElement.appendChild(document.createTextNode(artno));
    
        nameCell.innerHTML = '<a href="javascript:setArticle(\'' + strArtNo + '\');" id="' + artno + '" class="popupItem" onmouseover="selectRange(\'' + artno + '\');">' + strArtNo + "</a>";
    }

    function selectRange(artno){
 
        if (arrArticles[artno] != null && arrArticles[artno] != "") {
  
            var searchField = document.getElementById("complete-field");
            var start  = artno_global.length;
            var laenge = arrArticles[artno].length;

            searchField.value = arrArticles[artno];

            if (searchField.createTextRange) {
                var selArtNo = searchField.createTextRange();
                selArtNo.moveStart("character", start);
                selArtNo.moveEnd("character", laenge - start);
                selArtNo.select();
            } else if (searchField.setSelectionRange) {
                searchField.setSelectionRange(start, laenge);
            }

            searchField.focus();
        }
    }

    function setArticle(artno){
        document.getElementById("complete-field").value = artno;
        document.getElementById("complete-field").focus();
        clearTable();
    }

    function appendMoreEntries(cur_topos,cur_status) {
        var artnoCell;
        var lastNameCell;
        var row;
        var nameCell;
        var secNameCell;
    
        if (isIE) {
            row = completeTable.insertRow(completeTable.rows.length);
            secNameCell = row.insertCell(0);
            nameCell = row.insertCell(1);
        } else {
            row = document.createElement("tr");
            secNameCell = document.createElement("td");
            row.appendChild(secNameCell);
            nameCell = document.createElement("td");
            row.appendChild(nameCell);
            completeTable.appendChild(row);
        }

        row.className = "rowMoreEntries";
        secNameCell.className = "secMoreEntries";
        nameCell.className = "moreEntries";

        /* change 2006-0918
        if ((cur_topos-15) > 1 ){
            var secLinkElement = document.createElement("a");
            secLinkElement.className = "secMoreEntries";
            secLinkElement.setAttribute("href", "javascript:doCompletion(" + (cur_topos-32) + ",'more') ");
            secLinkElement.appendChild(document.createTextNode("<<"));
            secNameCell.appendChild(secLinkElement);
        }

        var linkElement = document.createElement("a");
        linkElement.className = "moreEntries";
        linkElement.setAttribute("href", "javascript:doCompletion(" + cur_topos + ",'more')");
        linkElement.appendChild(document.createTextNode(">>"));
        nameCell.appendChild(linkElement);
        */
        if ( ((cur_status == "more") && ((cur_topos-15) > 1) ) || ( (cur_status == "last") && ((cur_topos-15) > 1)) ){
            var secLinkElement = document.createElement("a");
            secLinkElement.className = "secMoreEntries";
            secLinkElement.setAttribute("href", "javascript:doCompletion(" + (cur_topos-32) + ",'more') ");
            secLinkElement.appendChild(document.createTextNode("<<"));
            secNameCell.appendChild(secLinkElement);
        }
        if (cur_status == "more"){
            var linkElement = document.createElement("a");
            linkElement.className = "moreEntries";
            linkElement.setAttribute("href", "javascript:doCompletion(" + cur_topos + ",'more')");
            linkElement.appendChild(document.createTextNode(">>"));
            nameCell.appendChild(linkElement);
        }

    }

    function file_window(){
        var winWidth  = 480;
        var winHeight = 345;
        var posX = (screen.width/2)-(winWidth/2);
        var posY = (screen.height/2)-(winHeight/2);
        var winfile = window.open("","fileresult","resizable=no,status=no,scrollbars=yes,toolbar=no,menubar=no,width="+winWidth+",height="+winHeight+",screenX="+posX+",screenY="+posY+",top="+posY+",left="+posX);
        winfile.focus();
    }
