﻿var CompanyViewer = new __CompanyViewer();

function __CompanyViewer() {}

(function()
{

    var SORT_BY = 1;
    var SORT_ORDER = 0;
    
    __CompanyViewer.prototype.ViewIndustry = function(link, industryId)
    {
        if(document.getElementById("LoadingPanel")) return;

        INDUSTRY_ID = industryId;
        SEARCH_TERM = "";
        this.RefreshList(1);
    }    

    __CompanyViewer.prototype.Sort = function(sortId)
    {
        if(document.getElementById("LoadingPanel")) return;

        var table = document.getElementById("companyTable");
        var thead = table.getElementsByTagName("thead")[0];
        var img = thead.getElementsByTagName("img")[0];
        var th = thead.getElementsByTagName("th");
        
        SORT_BY = sortId;
        SORT_ORDER = (SORT_ORDER == "0" ? "1" : "0");

        img.src = img.src.replace((SORT_ORDER == "0" ? "Desc" : "Asc"), (SORT_ORDER == "0" ? "Asc" : "Desc"));
        
        th[sortId].appendChild(img.parentNode.removeChild(img));
        
        this.RefreshList(CURRENT_PAGE);
    }

    __CompanyViewer.prototype.RefreshList = function(page)
    {
        if(document.getElementById("LoadingPanel")) return;

        // Make HTTP request
        function callback(xmlDoc)
        {
            CURRENT_PAGE = parseInt(xmlDoc.documentElement.attributes[0].nodeValue);
            var pagination = xmlDoc.documentElement.firstChild.nodeValue;
            var holder = document.getElementById("companyPaginationPanel");

            holder.innerHTML = pagination;

            GetCompanyList(CURRENT_PAGE);
        }

        Daedalus.Ajax.ShowLoadingPanel();
        Daedalus.Ajax.OpenConnection("GET", "Ajax/GetCompanyPagination.aspx?p=" + page + "&id=" + INDUSTRY_ID + "&s=" + Daedalus.Utility.UrlEncode(SEARCH_TERM) + "&surl=" + GetStaticUrl(), "", callback);
    }
    
    function GetStaticUrl()
    {
        var staticUrl = window.location.href;
        
        if(staticUrl.indexOf("p=") > 0)
        {
            staticUrl = staticUrl.replace(new RegExp("p=[^&]*", "ig"), "p={0}");
        }
        else
        {
            staticUrl = (staticUrl.indexOf('?') > 0 ? staticUrl + "&p={0}" : staticUrl + "?p={0}");
        }
        
        return Daedalus.Utility.UrlEncode(staticUrl);
    }

    function GetCompanyList(pageNumber)
    {
        var companyTable = document.getElementById("companyTable");
        var tbody = companyTable.getElementsByTagName("tbody")[0];
        var headerRow = companyTable.getElementsByTagName("thead")[0].getElementsByTagName("tr")[0];
        var sortBy = parseInt(SORT_BY);
        var sortOrder = SORT_ORDER;

        // Make HTTP request
        function callback(xmlDoc)
        {
            var index = (xmlDoc.evaluate ? 1 : 0);
            var hasResult = false;

            var childLen = tbody.childNodes.length;
            for(var i=0; i<childLen; i++)
            {
                tbody.removeChild(tbody.childNodes[0]);
            }

            for(var i=0; i<xmlDoc.documentElement.childNodes.length; i++)
            {
                if(xmlDoc.documentElement.childNodes[i].nodeName == "company")
                {
                    if(!hasResult) hasResult = true;  // Indicate this result set has data

                    var panelRow = document.createElement("tr");
                    
                    for(var j=0; j<3; j++)
                    {
                        var cell = panelRow.appendChild(document.createElement("td"));
                        if(j == 1) cell.style.whiteSpace = "normal";
                    }
                    
                    var companyId = Daedalus.Ajax.SelectSingleNode(xmlDoc, "//data/company[" + index + "]/companyId").firstChild.nodeValue;
                    var companyName = Daedalus.Ajax.SelectSingleNode(xmlDoc, "//data/company[" + index + "]/companyName").firstChild.nodeValue;
                    var mission = Daedalus.Ajax.SelectSingleNode(xmlDoc, "//data/company[" + index + "]/mission");
                    var employees = Daedalus.Ajax.SelectSingleNode(xmlDoc, "//data/company[" + index + "]/employees").firstChild.nodeValue;
                    var logo = Daedalus.Ajax.SelectSingleNode(xmlDoc, "//data/company[" + index + "]/logo").firstChild.nodeValue;

                    var companyLink = "../Companies/" + companyName.replace(new RegExp("[\\W_1234567890]+", "ig"), "_") + "_" + companyId + ".aspx";
                    
                    mission = (mission.firstChild ? mission.firstChild.nodeValue : "");
                    
                    panelRow.childNodes[0].innerHTML = (logo != "0" ? "<a href=\"" + companyLink + "\"><img src=\"" + logo + "\"  alt=\"" + companyName + "\" title=\"" + companyName + "\" /></a>" : "<div class=\"LogoPlaceHolder\">&nbsp;</div>");
                    panelRow.childNodes[1].innerHTML = "<div style=\"font-weight:bold;\"><a href=\"" + companyLink + "\">" + companyName + "</a></div><div style=\"font-size:95%;line-height:160%;\">" + mission + "</div>";
                    panelRow.childNodes[2].innerHTML = employees;
                    
                    panelRow.childNodes[sortBy].className = "SortedColumn";

                    tbody.appendChild(panelRow);
                    index++;
                }
            }

            // Toggle no result message
            var resultPanel = document.getElementById("resultPanel");
            var noResultPanel = document.getElementById("noResultPanel");
            
            if(!hasResult)
            {
                resultPanel.style.display = "none";
                noResultPanel.style.display = "";
            }
            else
            {
                noResultPanel.style.display = "none";
                resultPanel.style.display = "";
            }

            Daedalus.Ajax.HideLoadingPanel();
        }

        Daedalus.Ajax.OpenConnection("GET", "Ajax/GetCompanyList.aspx?p=" + pageNumber + "&sb=" + sortBy + "&so=" + sortOrder + "&id=" + INDUSTRY_ID + "&s=" + Daedalus.Utility.UrlEncode(SEARCH_TERM), "", callback);
    }

})();