//
// Site
//
;(function(window) {

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

    /*#region Site -> Home*/
    Site.Home = function() {
        /******* Variables */
        var categoryCheckList = [];
        var checkedCategories = 0;   
        var postForm;    
        var searchPostForm;        

        /******** Page actions */

        var mycarousel_itemVisibleInCallback = function(carousel, item, i, state, evt) {
            // The index() method calculates the index from a
            // given index who is out of the actual item range.       
            var idx = carousel.index(i, totalFeaturedArticles);
            carousel.add(i, carousel_getItemHTML(featuredArticles[idx - 1]));
        };

        var mycarousel_itemVisibleOutCallback = function(carousel, item, i, state, evt) {
            carousel.remove(i);
        };

        var carousel_getItemHTML = function(item) {
            var thumbnailUrl = item.thumbnail == "" ? defaultFeaturedArticleImage : item.thumbnail;
            var imageTag = "<a href='" + item.fullUrl + "' class='thumb'><img src='" + thumbnailUrl + "' alt=''/></a>";
            return imageTag + "<div class='container'><p class='publish-details'>Published in <a class='category' href='" + item.categoryUrl + "'>" + item.category + "</a>, " + item.published + ", by <a class='category' href='/UserProfile/" + item.owner + "'>" + item.owner + "</a> </p><a class='title' href='" + item.fullUrl + "'>" + item.title + "</a> <p class='description'> " + item.description + "</p><a class='more' href= " + item.fullUrl + ">Read more &rsaquo;</a><p class='community'>Comments <span> " + item.comments + "</span>     Recommends <span>" + item.recommends + "</span></p></div>";

        };

         var advancedSearchClicked = function() {

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

        };        
        
        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() {
        
            if ($.trim($("a.prev").attr("href")) == "") {              
                $("a.prev").removeAttr("href");
            }

            if ($.trim($("a.next").attr("href")) == "") {
                $("a.next").removeAttr("href");
            }
        	if (sortBy != "")
        	{
        		$("#submenu-bar a."+sortBy).addClass("selected");
        	}            

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

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

            $('.featured-articles img').each(function(){
            	if ($(this).attr('src') == '')
            		$(this).attr('src',defaultFeaturedArticleImage);
            });
            
            var featuredArticlesCount = $('.featured-articles li').length;
            $('.featured-articles').jcarousel({
                itemVisibleOutCallback: function(a,b,c,d,e) { if (c > featuredArticlesCount) a.remove(c); },
                scroll: 1,
                wrap: "circular",
                auto: 10,
                size: featuredArticlesCount
            });           
            
            $("#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);         

            var checkAll = new PipenoUI.CheckBox($("#checkAll"), { checked: true });
            
            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();
            $("#advanced").bind("click", advancedSearchClicked);
            $("a.go-button").bind("click", search);
        })();
    };
    /*#endregion*/
})(window);
/* End Of File */

