//
// Site -> Category
//
; (function(window) {

    /**
    * Site Object
    **/
    window.Site = Site = new Object();

    /*#region Site -> Category*/

    Site.Category = function() {

        /*******************************
        Variables
        */
        var categoryCheckList = [];
        var checkedCategories = 0;
        var postForm;
        var searchPostForm;

        /*******************************
        Page actions
        */
        var advancedSearchClicked = function() {

            $(this).toggleClass('selected');
            $("#complex").toggle();

        };

        function onNextButtonClick(pageNumber) {
            window.location = "/Category/" + categoryTitle + "/" + pageNumber;
        }
        
        var inputKeyPressed = function(event) {

            var searchWord = $(this).val().trim();
            var charCode;

            if (event && event.which) {
                charCode = event.which;
            } else if (window.event) {
                event = window.event;
                charCode = event.keyCode;
            }
            if (charCode == '13' && searchWord != "" && searchWord != "search") {
                window.location = articleSearchUrl + "?searchWord=" + searchWord + "&categories=" + sendSearchCategories + "&sort=" + sortBy;
            }
        };

        var search = function() {

            var localSearchCategories = "";
            sendSearchCategories = "";

            $("#category-list").find('div[id*=check]').each(function() {

                if ($(this).hasClass('checked') && $(this).attr("id") != "checkAll") {

                    var thisCheck = $(this).attr('id').toString();
                    localSearchCategories += thisCheck.substring(5, thisCheck.length) + ",";
                }

            });

            sendSearchCategories = localSearchCategories.toString().substring(0, localSearchCategories.length - 1);

            if (sendSearchCategories.toString() == "") {

                var allCategories = "";
                $("#category-list").find('div[id*=check]').each(function() {

                    var thisCheck = $(this).attr('id').toString();
                    allCategories += thisCheck.substring(5, thisCheck.length) + ",";
                });

                sendSearchCategories = allCategories.toString().substring(4, allCategories.length - 1);
            }

            var searchWord = $("input#search").val().trim();

            if (searchWord != "") {

                window.location = articleSearchUrl + "?searchWord=" + searchWord + "&categories=" + sendSearchCategories + "&sort=" + sortBy;
            }
        };
        /*******************************
        Initialize everything
        */
        (this.Init = function() {

            $.cookie("categoryTitle", categoryTitle, { path: '/' });

            var checkAll = new PipenoUI.CheckBox($("#checkAll"), { checked: true });

            $(".pagination").pagination(totalArticles, { items_per_page: articlesPerPage,
                num_display_entries: 5,
                current_page: pageNumber - 1,
                num_edge_entries: 1,
                link_to: pageBaseUrl + "__id__",
                prev_text: prevText,
                next_text: nextText,
                ellipse_text: "...",
                prev_show_always: true,
                next_show_always: true,
                callback: function(page_index, jq) {}
            });
            
            if (totalArticles <= articlesPerPage) {
                $(".pagination").hide();
            }

            if (totalArticles == 0) {
                $(".pagination").hide();
            } else {
               // $(".search.list").hide();
            }
            if(sortBy != "")
            {
                $("#" + sortBy).addClass("selected");
            }

            var searchCategoriesList = searchCategories.split(',');

            $("#category-list").find('div[id*=check]').each(function() {

                if ($(this).attr("id") != "checkAll") {

                    var categoryCheck = new PipenoUI.CheckBox($(this));

                    categoryCheckList.push(categoryCheck);

                    var categId = $(this).attr('id').toString().substring(5);
                    var isSearchCategory = false;

                    if ($(this).attr("id") != "checkAll") {
                        $.each(searchCategoriesList, function(index, value) {
                            if (searchCategoriesList[index] == categId) {
                                isSearchCategory = true;
                            }
                        });
                    }
                    if (isSearchCategory) {
                        categoryCheck.Check(true);
                    }
                    else {
                        checkAll.Check(false);
                    }
                    $(categoryCheck).bind("change", function(evt, checked) {

                        checkedCategories = 0;

                        $.each(categoryCheckList, function(index, value) {
                            if (categoryCheckList[index].IsChecked()) {
                                checkedCategories++;
                            }
                        });

                        if (checkedCategories == searchCategoriesNumber) {
                            if (checkAll.IsChecked() == false) {
                                checkAll.Check(true);
                            }
                        } else if (checkAll.IsChecked()) {
                            checkAll.Check(false);
                        }
                    });

                }
            });

            $(checkAll).bind("change", function(evt, checked) {

                $.each(categoryCheckList, function(index, value) {

                    if (checked == true) {

                        categoryCheckList[index].Check(true);

                    } else {

                        if (checkedCategories == searchCategoriesNumber || checkedCategories == 0) {
                            categoryCheckList[index].Check(false);
                            checkedCategories = 0;
                        }
                    }
                });

            });

            $("#complex").hide();

            postForm = new PipenoUI.SubmitForm("/Category/" + categoryTitle, {});

            $(".entry img").each(function() {
                if ($(this).attr("src") == "") {
                    $(this).attr("src", defaultArticleImage);
                }
            });

            $("#menu-bar div.search input").bind("click", searchInputClicked);
            $('#menu-bar div.search input').bind("keypress", searchInputKeypress);
            $("#menu-bar div.search a").bind("click", menuSearchClicked);
            $(".panel-button").children().bind("click", panelButtonClickHandler);
            $("div.tab.container a.see-all").bind("click", { form: postForm }, seeAllButtonClicked);
            $("#advanced").bind("click", advancedSearchClicked);
            $("a.go-button").bind("click", search);

        })();
    };
    /*#endregion*/


})(window);
/* End Of File */

