﻿Search2 = function() {
    this.imgServer = "";
    this.tmplContainerUrl = "/wcgzone/javascript/template/tmpl_SearchContentList.html";
    this.tmplUrl = "/wcgzone/javascript/template/tmpl_SearchResult.html";
    this.tmplContainer = "";
    this.tmplContents = "";
}

Search2.prototype = {
    ViewSearchResult: function(isAuthenticated, identityName, imgServer, siteRoot, category, searchWord) {
        
        $("#oSearchResult").html(this.Loading(imgServer));

        OpenDiv("oSearchResult");

        var oActionLayer = document.getElementById("oActionLayer");
        if (oActionLayer != null) {
            oActionLayer.parentNode.removeChild(oActionLayer);

            var oActionLayerSendMessages = document.getElementById("oActionLayerSendMessages");

            if (oActionLayerSendMessages != null) {
                oActionLayerSendMessages.parentNode.removeChild(oActionLayerSendMessages);
            }

            var oActionLayerAddFriend = document.getElementById("oActionLayerAddFriend");

            if (oActionLayerAddFriend != null) {
                oActionLayerAddFriend.parentNode.removeChild(oActionLayerAddFriend);
            }
        }

        $.get(oSearch.tmplContainerUrl, function(html) {
            oSearch.tmplContainer = html;
            $.get(oSearch.tmplUrl, function(html) {
                oSearch.tmplContents = html;
                
                var containerData = {
                    ImgServer: imgServer,
                    SiteRoot: siteRoot,
                    IsAuthenticated: isAuthenticated,
                    IdentityName: identityName,
                    SearchCategory: category,
                    SearchWord: searchWord,
                    TotalCount: 0,
                    ForumCount: 0,
                    MCityCount: 0,
                    ReplayCount: 0
                };

                oSearch.SetTotalCount(containerData);
            });
        });
    },

    CloseView: function() {

        CloseDiv();

        var oActionLayer = document.getElementById("oActionLayer");
        if (oActionLayer != null) {
            oActionLayer.parentNode.removeChild(oActionLayer);

            var oActionLayerSendMessages = document.getElementById("oActionLayerSendMessages");

            if (oActionLayerSendMessages != null) {
                oActionLayerSendMessages.parentNode.removeChild(oActionLayerSendMessages);
            }

            var oActionLayerAddFriend = document.getElementById("oActionLayerAddFriend");

            if (oActionLayerAddFriend != null) {
                oActionLayerAddFriend.parentNode.removeChild(oActionLayerAddFriend);
            }
        }

    },

    SetTotalCount: function(data) {

        switch (data.SearchCategory) {
            case "ALL":
                oSearch.SetTotalCountTotal(data);
                break;
            case "Forum":
                oSearch.SetTotalCountForum(data);
                break;
            case "M-City":
                oSearch.SetTotalCountMCity(data);
                break;
            case "Replay":
                oSearch.SetTotalCountReplay(data);
                break;
        }
    },

    SetTotalCountForum: function(data) {
        var oIndexScript = new IndexScript();
        var tmplHtml = oSearch.tmplContainer;
        var fn = oSearch.SetSearchResult;

        oIndexScript.SearchForumCount(1, data.SearchWord, function(result) {
            data.ForumCount = result;
            data.TotalCount = result;

            var tmpl = parseTemplate(tmplHtml, data);
            $("#oSearchResult").html(tmpl);

            fn(data.SearchCategory, data.IsAuthenticated, data.IdentityName, data.ImgServer, data.SiteRoot, data.SearchWord);
        });
    },

    SetTotalCountMCity: function(data) {
        var oIndexScript = new IndexScript();
        var tmplHtml = oSearch.tmplContainer;
        var fn = oSearch.SetSearchResult;

        oIndexScript.SearchContentCount(1, 0, data.SearchWord, function(result) {
            data.MCityCount = result;
            data.TotalCount = result;

            var tmpl = parseTemplate(tmplHtml, data);
            $("#oSearchResult").html(tmpl);

            fn(data.SearchCategory, data.IsAuthenticated, data.IdentityName, data.ImgServer, data.SiteRoot, data.SearchWord);
        });
    },

    SetTotalCountReplay: function(data) {
        var oIndexScript = new IndexScript();
        var tmplHtml = oSearch.tmplContainer;
        var fn = oSearch.SetSearchResult;

        oIndexScript.SearchContentCount(1, 5, data.SearchWord, function(result) {
            data.ReplayCount = result;
            data.TotalCount = result;

            var tmpl = parseTemplate(tmplHtml, data);
            $("#oSearchResult").html(tmpl);

            fn(data.SearchCategory, data.IsAuthenticated, data.IdentityName, data.ImgServer, data.SiteRoot, data.SearchWord);
        });
    },

    SetTotalCountTotal: function(data) {
        this.totalCount = 0;
        var Total = 0;
        var oIndexScript = new IndexScript();
        var tmplHtml = oSearch.tmplContainer;
        var fn = oSearch.SetSearchResult;

        oIndexScript.SearchForumCount(1, data.SearchWord, function(result1) {
            
            Total += result1;
            data.ForumCount = result1;

            oIndexScript.SearchContentCount(1, 0, data.SearchWord, function(result2) {
                
                Total += result2;
                data.MCityCount = result2;

                oIndexScript.SearchContentCount(1, 5, data.SearchWord, function(result3) {
                    
                    Total += result3;
                    data.TotalCount = Total;
                    data.ReplayCount = result3;

                    var tmpl = parseTemplate(tmplHtml, data);
                    $("#oSearchResult").html(tmpl);
                    
                    fn(data.SearchCategory, data.IsAuthenticated, data.IdentityName, data.ImgServer, data.SiteRoot, data.SearchWord);
                });

            });

        });
    },

    SetSearchResult: function(category, isAuthenticated, identityName, imgServer, siteRoot, searchWord) {
        switch (category) {
            case "ALL":
                oSearch.SetSearchResultForum(isAuthenticated, identityName, imgServer, siteRoot, searchWord, 3, 1);
                oSearch.SetSearchResultMCity(isAuthenticated, identityName, imgServer, siteRoot, searchWord, 3, 1);
                oSearch.SetSearchResultReplay(isAuthenticated, identityName, imgServer, siteRoot, searchWord, 3, 1);
                break;
            case "Forum":
                oSearch.SetSearchResultForum(isAuthenticated, identityName, imgServer, siteRoot, searchWord, 3, 1);
                break;
            case "M-City":
                oSearch.SetSearchResultMCity(isAuthenticated, identityName, imgServer, siteRoot, searchWord, 3, 1);
                break;
            case "Replay":
                oSearch.SetSearchResultReplay(isAuthenticated, identityName, imgServer, siteRoot, searchWord, 3, 1);
                break;
        }
    },

    SetSearchResultForum: function(isAuthenticated, identityName, imgServer, siteRoot, searchWord, PageSize, PageNo) {
        var oIndexScript = new IndexScript();
        var tmplHtml = oSearch.tmplContents;

        $("#oSearchResultForum").html(oSearch.Loading(imgServer));

        oIndexScript.SearchForumCount(1, searchWord, function(result) {
            if (result > 0) {
                oSearch.InitializePagingProgressbar(document.getElementById("oSearchResultForumProgressbar"), result, PageSize, PageNo, 10, "oSearch.SetSearchResultForum", imgServer, isAuthenticated, identityName, siteRoot, searchWord);

                oIndexScript.SearchForum2(1, searchWord, PageSize, PageNo, function(result) {
                    var tmpl = "";
                    for (var i = 0; i < result.oSearchForumEntities.length; i++) {
                        var oSearchForumEntity = result.oSearchForumEntities[i];
                        
                        var data = {
                            ImgServer: imgServer,
                            SiteRoot: siteRoot,
                            IsAuthenticated: isAuthenticated,
                            IdentityName: identityName,
                            LinkUrl: siteRoot + "/forum/FR_Topic_View.aspx?roomNo=" + oSearchForumEntity.RoomNo + "&topicNo=" + oSearchForumEntity.TopicNo,
                            Title: oSearchForumEntity.Title,
                            Contents: CutLength(KillHtml(oSearchForumEntity.Contents)),
                            NationName: oSearchForumEntity.NationName,
                            NationNo: oSearchForumEntity.NationNo,
                            MemberNo: oSearchForumEntity.MemberNo,
                            MemberID: oSearchForumEntity.Id,
                            RegDate: oSearchForumEntity.regDate
                        };

                        tmpl += parseTemplate(tmplHtml, data);
                    }

                    $("#oSearchResultForum").html(tmpl);

                    oLayerModalPopUp._layout();
                });
            }
            else {
                getMultiLangNoData("oSearchResultForum", "B");

                oLayerModalPopUp._layout();
            }
        });
    },

    SetSearchResultMCity: function(isAuthenticated, identityName, imgServer, siteRoot, searchWord, PageSize, PageNo) {
        var oIndexScript = new IndexScript();
        var tmplHtml = oSearch.tmplContents;

        $("#oSearchResultMCity").html(oSearch.Loading(imgServer));

        oIndexScript.SearchContentCount(1, 0, searchWord, function(result) {
            if (result > 0) {
                oSearch.InitializePagingProgressbar(document.getElementById("oSearchResultMCityProgressbar"), result, PageSize, PageNo, 10, "oSearch.SetSearchResultMCity", imgServer, isAuthenticated, identityName, siteRoot, searchWord);

                oIndexScript.SearchContent2(1, 0, searchWord, PageSize, PageNo, function(result) {
                    var tmpl = "";

                    for (var i = 0; i < result.oSearchContentEntities.length; i++) {
                        var oSearchContentEntity = result.oSearchContentEntities[i];
                        var data = {
                            ImgServer: imgServer,
                            SiteRoot: siteRoot,
                            IsAuthenticated: isAuthenticated,
                            IdentityName: identityName,
                            LinkUrl: siteRoot + "/content/CT_View.aspx?contentNo=" + oSearchContentEntity.ContentNo,
                            Title: oSearchContentEntity.Title,
                            Contents: CutLength(KillHtml(oSearchContentEntity.Content)),
                            NationName: oSearchContentEntity.NationName,
                            NationNo: oSearchContentEntity.NationNo,
                            MemberNo: oSearchContentEntity.MemberNo,
                            MemberID: oSearchContentEntity.Id,
                            RegDate: oSearchContentEntity.regDate
                        };

                        tmpl += parseTemplate(tmplHtml, data);
                    }

                    $("#oSearchResultMCity").html(tmpl);

                    oLayerModalPopUp._layout();
                });

            }
            else {
                getMultiLangNoData("oSearchResultMCity", "B");

                oLayerModalPopUp._layout();
            }
        });
    },

    SetSearchResultReplay: function(isAuthenticated, identityName, imgServer, siteRoot, searchWord, PageSize, PageNo) {
        var oIndexScript = new IndexScript();
        var tmplHtml = oSearch.tmplContents;

        $("#oSearchResultReplay").html(oSearch.Loading(imgServer));

        oIndexScript.SearchContentCount(1, 5, searchWord, function(result) {
            if (result > 0) {
                oSearch.InitializePagingProgressbar(document.getElementById("oSearchResultReplayProgressbar"), result, PageSize, PageNo, 10, "oSearch.SetSearchResultReplay", imgServer, isAuthenticated, identityName, siteRoot, searchWord);

                oIndexScript.SearchContent2(1, 5, searchWord, PageSize, PageNo, function(result) {
                    var tmpl = "";

                    for (var i = 0; i < result.oSearchContentEntities.length; i++) {

                        var oSearchContentEntity = result.oSearchContentEntities[i];
                        var data = {
                            ImgServer: imgServer,
                            SiteRoot: siteRoot,
                            IsAuthenticated: isAuthenticated,
                            IdentityName: identityName,
                            LinkUrl: siteRoot + "/replay/RF_View.aspx?contentNo=" + oSearchContentEntity.ContentNo,
                            Title: oSearchContentEntity.Title,
                            Contents: CutLength(KillHtml(oSearchContentEntity.Content)),
                            NationName: oSearchContentEntity.NationName,
                            NationNo: oSearchContentEntity.NationNo,
                            MemberNo: oSearchContentEntity.MemberNo,
                            MemberID: oSearchContentEntity.Id,
                            RegDate: oSearchContentEntity.regDate
                        };

                        tmpl += parseTemplate(tmplHtml, data);
                    }

                    $("#oSearchResultReplay").html(tmpl);

                    oLayerModalPopUp._layout();
                });

            }
            else {
                getMultiLangNoData("oSearchResultReplay", "B");

                oLayerModalPopUp._layout();
            }
        });
    },

    ValidateNationNo: function(No) {
        var returnValue = No;

        if (No.length == 1)
            returnValue = "0" + returnValue;

        return returnValue;
    },

    InitializePagingProgressbar: function(locationObj, totalCount, pageRow, pageNo, progressBarRow, scriptName, imgServer, isAuthenticated, identityName, siteRoot, searchWord) {
        var p = PagingCalc(pageNo, pageRow, progressBarRow, totalCount);

        var data = {
            ImgServer: imgServer,
            PagingClass: "searchm_divpaging",
            PageNo: pageNo,
            PageStart: p.PageStart,
            PageEnd: p.PageEnd,
            PrevPageYN: p.PrevPageYN,
            NextPageYN: p.NextPageYN,
            ScriptFunc: scriptName + "('" + isAuthenticated + "', '" + identityName + "', '" + imgServer + "', '" + siteRoot + "', '" + searchWord + "', " + pageRow + ", '{i}')",
            ScriptPrevFunc: scriptName + "('" + isAuthenticated + "', '" + identityName + "', '" + imgServer + "', '" + siteRoot + "', '" + searchWord + "', " + pageRow + ", '" + ((p.PageStart * 1) - 1) + "')",
            ScriptNextFunc: scriptName + "('" + isAuthenticated + "', '" + identityName + "', '" + imgServer + "', '" + siteRoot + "', '" + searchWord + "', " + pageRow + ", '" + ((p.PageEnd * 1) + 1) + "')"
        };

        var url = siteRoot + "/javascript/template/tmpl_CommonPaging.html";
        $.get(url, function(html) {
            var tmpl = parseTemplate(html, data);

            $(locationObj).html(tmpl);
        });

    },

    Loading: function(imgServer) {
        var loading;
        loading = "     <div align=\"center\" style=\"vertical-align:middle;\">";
        loading += "        <object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0\" width=\"57\" height=\"58\" id=\"Object8\" align=\"center\">";
        loading += "            <param name=\"wmode\" value=\"transparent\" />";
        loading += "            <param name=\"menu\" value=\"false\" />";
        loading += "            <param name=\"movie\" value=\"" + imgServer + "/loading_ani.swf\" />";
        loading += "            <param name=\"quality\" value=\"high\" />";
        loading += "            <param name=\"bgcolor\" value=\"#FFFFFF\" />";
        loading += "            <embed src=\"" + imgServer + "/loading_ani.swf\" quality=\"high\" width=\"57\" name=\"top1\" align=\"\" type=\"application/x-shockwave-flash\" pluginpage=\"http://www.macromedia.com/go/getflashplayer\" wmode=\"transparent\" bgcolor=\"#FFFFFF\" menu=\"false\">";
        loading += "            </embed>";
        loading += "        </object>";
        loading += "    </div>";
        return loading;
    },

    Search: function(isAuthenticated, identityName, imgServer, siteRoot, category, searchWord, e) {

        if (!e) e = window.event;

        var keyCode = e.keyCode | e.witch;

        if (keyCode != 13) return false;

        var eventElement = (e) ? e.srcElement : e.target;

        if (!eventElement)
            eventElement = e.currentTarget;

        eventElement.blur();

        this.ViewSearchResult(isAuthenticated, identityName, imgServer, siteRoot, category, searchWord);

        if (e.preventDefault) {
            e.preventDefault();
        }
        else {
            e.returnValue = false;
        }

    }
}