﻿/*
* jQuery UI System 2.0.1
*
*
* Depends:
* ui.core.js 
* Author ljj
*/
(function ($) {

    $.widget("ui.system_tabs", {
        _create: function () {
            var tabs = this.element;
            var c = $(".i-tabs-container", tabs);
            var event = tabs.attr("event") || 'mouseover';
            var auto = tabs.attr("auto") == "true" ? true : false;
            var timeout = parseInt(tabs.attr("timeout")) || 3;
            var items = $(".i-tabs-item", tabs);
            items.each(function (i, v) {
                var item = $(this);
                if (i == 0)
                    item.addClass("i-tabs-item-active");
                var content = null;
                var anchor = null;
                var mid = item.attr("mid");
                var eid = item.attr("eid");
                if (!!mid) {
                    anchor = $('a[name=' + mid + ']');
                    if (anchor.size() == 1) {
                        content = anchor.next();
                        c.append(anchor.hide())
                    }
                }
                else
                    if (!!eid) {
                        content = $('#' + eid);
                    }
                if (content == null)
                    return;
                c.append(content.addClass("i-tabs-content"));
                if (i > 0)
                    content.hide();
            });
            items.live(event, function (i) {
                index = items.index(this);
                showContent();
            });
            var contents = $(".i-tabs-content", tabs);
            var index = 0;
            var showContent = function () {
                items.removeClass("i-tabs-item-active").eq(index).addClass("i-tabs-item-active");
                contents.hide().eq(index).show();
            };
            var __autoPlay = function () {
                index++;
                if (index >= items.size())
                    index = 0;
                showContent();
            };
            var autoPlay = null;

            if (auto) {
                autoPlay = setInterval(__autoPlay, 1000 * timeout);
                tabs.hover(function () {
                    clearInterval(autoPlay);
                }, function () {
                    autoPlay = setInterval(__autoPlay, 1000 * timeout);
                });
            }




        }
    });

    $.widget("ui.system_columns", {
        _create: function () {
            var columns = this.element;
            var items = $(".i-columns-item", columns);
            items.each(function (i, v) {
                var item = $(this);
                var mid = item.attr("mid");
                var anchor = $('a[name=' + mid + ']');
                if (anchor.size() != 1)
                    return;
                var content = anchor.next();
                item.append(anchor).append(content);
            });
        }
    });


    $.widget("ui.system_news", {
        _create: function () {
            var news = this.element;
            var pagesize = parseInt(news.attr("pagesize")) || 3;
            var pageindex = 1;
            var effect = news.attr("effect") || "show"; //fade
            var event = news.attr("event") || 'click'; //mouse over
            var auto = news.attr("auto") == "true" ? true : false;
            var timeout = parseInt(news.attr("timeout")) || 3;
            var createPager = news.attr("createpager") != "false";


            var newsitems = $(".i-news-item", news);

            var total = newsitems.size();


            var pagecount = Math.ceil(total / pagesize);



            var pagerPre = $(".i-news-page-pre", news);

            var pagerNext = $(".i-news-page-next", news);



            var itemcontainer = $('.i-news-item-container', news);

            var pagecontainer = $('.i-news-page-container', news);

            if (itemcontainer.size() == 1) {
                itemcontainer.append(newsitems);
            }

            if (pagecontainer.size() == 1) {
                pagecontainer.append($('.i-news-page-pre', news));
                if (createPager) {
                    var $ul = $("<ul/>").appendTo(pagecontainer);
                    for (var i = 0; i < pagecount; i++) {
                        $ul.append("<li class=\"i-news-page\"><span>" + (i + 1) + "</span></li>");
                    }
                }
                else {
                    pagecontainer.append($(".i-news-page", news));
                }
                pagecontainer.append($('i-news-page-next', news));
            }

            var pager = $(".i-news-page", news);
            newsitems.filter(":odd").addClass("i-news-item-alt");
            pager.filter(":odd").addClass("i-news-page-alt");
            var showNews = function () {
                if (pageindex == 1)
                    pagerPre.addClass("i-news-page-pre-disable");
                else
                    pagerPre.removeClass("i-news-page-pre-disable");

                if (pageindex == pagecount)
                    pagerNext.addClass("i-news-page-next-disable");
                else
                    pagerNext.removeClass("i-news-page-next-disable");

                pager.removeClass("i-news-page-active");
                pager.eq(pageindex - 1).addClass("i-news-page-active");

                var l = (pageindex - 1) * pagesize;
                var u = l + pagesize;
                newsitems.each(function (i, v) {
                    if (i >= l && i < u) {
                        if (effect == "show") {
                            $(this).show();
                        }
                        else {
                            $(this).fadeIn();
                        }
                        $(this).addClass("i-news-item-active");
                    }
                    else {
                        $(this).hide();
                        $(this).removeClass("i-news-item-active");
                    }
                });
            };

            pagerPre.bind(event, function () {
                if (pageindex > 1) {
                    pageindex--;
                    showNews();
                }
                return false;
            });
            pagerNext.bind(event, function () {
                if (pageindex < pagecount) {
                    pageindex++;
                    showNews();
                }
                return false;
            });
            pager.bind(event, function () {
                pageindex = parseInt($(this).attr("page"));
                if (!pageindex) {
                    pageindex = $.inArray(this, pager.get()) + 1;
                }
                showNews();
                return false;
            });
            var __autoPlay = function () {
                pageindex++;
                if (pageindex > pagecount)
                    pageindex = 1;
                showNews();

            };

            var autoPlay = null;

            if (auto) {
                autoPlay = setInterval(__autoPlay, 1000 * timeout);
            }
            $('.i-news-item,.i-news-page,.i-news-page-pre,.i-news-page-next', news).hover(function () {
                if (autoPlay)
                    clearInterval(autoPlay);
            }, function () {
                if (auto)
                    autoPlay = setInterval(__autoPlay, 1000 * timeout);
            });
            showNews();
        }
    });



})(jQuery);

