﻿(function($) {
    $(function() {
        var baseHref = "http://" + (("localhost" != location.hostname) ? "www.medaille.edu" : location.host);

        var $networkBar = $("<div />"),
            $regions = {
                top: $("<div />"),
                left: $("<div />"),
                center: $("<div />"),
                right: $("<div />")
            };

        var settings = {};
        $.extend(settings, {
            text: { color: "#c0c8df" },
            link: { color: "#a0a8bf" },
            barHeight: 45,
            expandtime: 500
        });
        settings.linkHover = $.extend({}, settings.link, { textDecoration: "underline" });
        
        $.extend(settings, {
            socialNetworkContent: { "float": "left" },
            socialNetworkContentList: {
                display: "block",
                margin: "10px 0 0",
                padding: 0,
                overflow: "hidden",
                listStyle: "none",
                lineHeight: "15px",
                height: "30px",
                color: settings.textColor,
                textAlign: "left"
            },
            socialNetworkContentListItem: { height: 30 }
        });

        var hideBar = function() {
            $(document.body).animate({ marginTop: settings.barHeight }, settings.expandtime);
            $networkBar.animate({ marginTop: settings.barHeight * -1 }, settings.expandtime);
        },
            showBar = function() {
                $(document.body).animate({ marginTop: settings.barHeight * 2 }, settings.expandtime);
                $networkBar.animate({ marginTop: 0 }, settings.expandtime);
            },
            toggleBar = function() {
                if (parseInt($(document.body).css("marginTop")) == settings.barHeight) {
                    showBar();
                } else {
                    hideBar();
                }
                return false;
            }


        $regions.top
            .css({
                width: "100%",
                "float": "left",
                height: settings.barHeight,
                overflow: "hidden"
            })
            .appendTo($networkBar);

        $.each([$regions.left, $regions.center, $regions.right], function(k) {
            $(this)
                .css({
                    width: (this == $regions.center) ? "50%" : "25%",
                    "float": "left",
                    overflow: "hidden"
                })
                .appendTo($networkBar);
        });

        $(document.body)
            .css({
                marginTop: settings.barHeight
            });

        $networkBar
            .css({
                position: "absolute",
                top: 0,
                left: 0,
                marginTop: settings.barHeight * -1,
                height: settings.barHeight * 2,
                width: "100%",
                background: "#004681 url(" + baseHref + "/i/elements/network-bar/bar.png) repeat-x center bottom",
                fontFamily: "arial, helvetica, sans-serif"
            })
            .appendTo(document.body);

        $.ajax({ url: baseHref + "/SiteMapService.asmx/GetAllChildren",
            data: { absolutePath: "'/default.aspx'" },
            type: "GET",
            dataType: "jsonp",
            dataFilter: function(data, dataType) { eval(data); },
            success: function(r) {
                $("<a />")
                    .text("Home")
                    .attr("href", baseHref + "/")
                    .css($.extend({}, {
                        "float": "left",
                        height: settings.barHeight,
                        lineHeight: settings.barHeight + "px",
                        width: ((1 / (r.d.length + 1)) * 100) + "%",
                        textAlign: "center"
                    }, settings.link))
                    .appendTo($regions.top);

                $.each(r.d, function(i, node) {
                    $("<a />")
                        .text(node.Title)
                        .attr("href", ((node.Url.indexOf("://") > -1) ? "" : baseHref) + node.Url)
                        .css({
                            "float": "left",
                            height: settings.barHeight,
                            lineHeight: settings.barHeight + "px",
                            width: ((1 / (r.d.length + 1)) * 100) + "%",
                            textAlign: "center",
                            color: settings.link.color
                        })
                        .appendTo($regions.top);
                });

            }
        });




        $("<a />")
            .text("Medaille College")
            .attr("href", "http://www.medaille.edu")
            .css({
                overflow: "hidden",
                textIndent: "-9999px",
                height: settings.barHeight,
                width: 300,
                margin: 0,
                padding: 0,
                background: "transparent url(" + baseHref + "/i/elements/network-bar/bar-logo.png) no-repeat left center",
                "float": "left"
            })
            .click(toggleBar)
            .appendTo($regions.left);

        var $socialMedia = $("<ul />")
                    .css({
                        display: "block",
                        margin: 0,
                        padding: 0,
                        overflow: "hidden",
                        listStyle: "none",
                        lineHeight: "15px",
                        color: settings.text.color,
                        textAlign: "left"
                    }).appendTo($regions.center);




        var $twitter = $("<li />").css(settings.socialNetworkContent).appendTo($socialMedia);
        $("<a />")
            .attr("href", "http://twitter.com/medaille")
            .append(
                $("<img />")
                    .attr("src", baseHref + "/i/elements/network-bar/bar-twitter.png")
                    .attr("alt", "Follow Medaille on Twitter")
                    .attr("title", "Follow Medaille on Twitter")
                )
            .css({ "float": "left", margin: "10px 5px 0 0" })
            .appendTo($twitter);

        var $tweets = $("<ul />")
                    .css(settings.socialNetworkContentList)
                    .appendTo($twitter);

        var tweetPreProcessors = [
                    { exp: new RegExp("(http[s]?://[\\/A-z0-9:.?-_=&%#]+)", "gi"),
                        rep: "<a href='$1' target='_blank'>$1</a>"
                    },
                    { exp: new RegExp("@([A-z0-9_]+)", "gi"),
                        rep: "<a href='http://twitter.com/$1' target='_blank'>@$1</a>"
                    },
                    { exp: new RegExp("#([A-z0-9_]+)", "gi"),
                        rep: "<a href='http://search.twitter.com/search?q=%23$1' target='_blank'>#$1</a>"
                    }
                ];

        var getTweets = function() {
            $.getJSON(
                "http://twitter.com/statuses/user_timeline/medaille.json?callback=?",
                function(timeline) {
                    $tweets.empty();

                    $.each(timeline, function(k, tweet) {
                        var text = tweet.text;
                        $.each(tweetPreProcessors, function() {
                            text = text.replace(this.exp, this.rep);
                        });

                        $("<li />")
                            .html(text)
                            .css(settings.socialNetworkContentListItem)
                            .find("a")
                                .css(settings.link)
                                .end()
                            .appendTo($tweets);
                    }); //$.each
                }
            );
        };
        getTweets();
        setInterval(getTweets, 120000);


        var $youTube = $("<li />").css(settings.socialNetworkContent).appendTo($socialMedia);
        $("<a />")
            .attr("href", "http://youtube.com/user/medaillebuffalo")
            .append(
                $("<img />")
                    .attr("src", baseHref + "/i/elements/network-bar/bar-youtube.png")
                )
            .css({ "float": "left", margin: "10px 5px 0 0" })
            .appendTo($youTube);

        var $videos = $("<ul />").css(settings.socialNetworkContentList).appendTo($youTube);

        $.getJSON("http://gdata.youtube.com/feeds/api/users/medaillebuffalo/uploads?alt=jsonc&callback=?",
            { v: 2 },
            function(response) {
                $.each(response.data.items, function(i, item) {
                    $("<li />").append(
                        $("<a />")
                            .attr("href", item.player["default"])
                            .text(item.title)
                            .css(settings.link)
                    ).css(settings.socialNetworkContentListItem)
                    .appendTo($videos);
                });
            }
        );

        var scrollSocialMedia = function() {
            $socialMedia.children("li:first").fadeOut(settings.expandtime, function() {
                $(this)
                    .next()
                        .fadeIn(settings.expandtime)
                        .end()
                    .remove()
                    .appendTo($socialMedia);
            });
        }
        //setInterval(scrollSocialMedia, 10000);
        $socialMedia
            .children()
                .hide()
                .end()
            .children("li:first")
                .show();
    });
})(jQuery);