﻿var CompanyViewer = new __CompanyViewer();

function __CompanyViewer() {}

(function()
{

    var SORT_BY = 1;
    var SORT_ORDER = 0;
    var STAT_MSG = "";
    
    __CompanyViewer.prototype.ViewIndustry = function(link, industryId)
    {
        if(document.getElementById("LoadingPanel")) return;

        INDUSTRY_ID = industryId;
        SEARCH_TERM = "";
        STAT_MSG = "<div style=\"padding:0px;color:#666;font-size:14px;\">Found <span style=\"font-size:18px;color:#e66d00;font-style:italic;font-family:Georgia;\">{0}</span> startups for <span style=\"font-size:18px;color:#e66d00;font-style:italic;font-family:Georgia;\">" + link.innerHTML + "</span></div>";
        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
        GetCompanyList(CURRENT_PAGE);
    }
    
    __CompanyViewer.prototype.ShowRegion = function(link, page, lat, lon, dist, level)
    {
        GetCompanyList(page, lat, lon, dist, level);
        STAT_MSG = "<div style=\"padding:0px;color:#666;font-size:14px;\">Found <span style=\"font-size:18px;color:#e66d00;font-style:italic;font-family:Georgia;\">{0}</span> startups for <span style=\"font-size:18px;color:#e66d00;font-style:italic;font-family:Georgia;\">" + link.innerHTML + "</span></div>";
    }
    
    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, lat, lon, dist, level)
    {
        var companyTable = document.getElementById("companyTable");
        var tbody = companyTable.getElementsByTagName("tbody")[0];
        var sortBy = parseInt(SORT_BY);
        var sortOrder = SORT_ORDER;

        // Make HTTP request
        function callback(xmlDoc)
        {
            var hasResult = false;

            var childLen = tbody.childNodes.length;
            for(var i=0; i<childLen; i++)
            {
                tbody.removeChild(tbody.childNodes[0]);
            }

            MAP_DATA = new Array();
            
            var companyList = $$(xmlDoc, "company");
            
            MapViewer.ClearMarker();

            for(var i=0; i<companyList.length; i++)
            {
                if(!hasResult) hasResult = true;  // Indicate this result set has data

                var panelRow = document.createElement("tr");
                
                for(var j=0; j<1; j++)
                {
                    var cell = panelRow.appendChild(document.createElement("td"));
                    cell.style.whiteSpace = "normal";
                }
                
                var companyId = $$(companyList[i], "companyId")[0].firstChild.nodeValue;
                var companyName = $$(companyList[i], "companyName")[0].firstChild.nodeValue;
                var latitude = $$(companyList[i], "latitude")[0].firstChild.nodeValue;
                var longitude = $$(companyList[i], "longitude")[0].firstChild.nodeValue;
                var companyLink = "../Companies/" + companyName.replace(new RegExp("[\\W_1234567890]+", "ig"), "_") + "_" + companyId + ".aspx";

                MAP_DATA.push(["", "", latitude, longitude, "", companyId]);

                panelRow.childNodes[0].innerHTML = "<a href=\"" + companyLink + "\">" + companyName + "</a>";
                panelRow.childNodes[0].style.padding = "5px 0px";
                
                $$(panelRow.childNodes[0], "a")[0].__marker = MapViewer.CreateMarker(i);
                $$(panelRow.childNodes[0], "a")[0].onclick = function()
                {
                    MapViewer.OpenInfoWindow(this.__marker);
                    return false;
                }
                
                tbody.appendChild(panelRow);
            }

            $("companyListCaption").innerHTML = xmlDoc.documentElement.getAttribute("count") + " Startups";
            statsLabel.innerHTML = STAT_MSG.format(xmlDoc.documentElement.getAttribute("count"));

            // 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.ShowLoadingPanel();
        if(lat && lon && dist)
        {
            Daedalus.Ajax.OpenConnection("GET", "Ajax/GetCompanyListByRegion.aspx?lat=" + lat + "&lon=" + lon + "&dist=" + dist, "", callback);
            MapViewer.ZoomTo(lat, lon, level);
        }
        else
        {
            Daedalus.Ajax.OpenConnection("GET", "Ajax/GetCompanyList.aspx?p=" + pageNumber + "&sb=" + sortBy + "&so=" + sortOrder + "&id=" + INDUSTRY_ID + "&s=" + Daedalus.Utility.UrlEncode(SEARCH_TERM), "", callback);
        }
    }

})();
