﻿function wireMenu(menuSelector) {
    try {
        var $el, leftPos, newWidth,
        $mainNav = $(menuSelector);

        var width = $(".current_page_item a").outerWidth();
        //$(".current_page_item a").width(width);
        $mainNav.append("<li id='magic-line'></li>");
        var $magicLine = $("#magic-line");
        $magicLine
        .width(width)
        .css("left", $(".current_page_item a").position().left)
        .data("origLeft", $magicLine.position().left)
        .data("origWidth", $magicLine.width());

        $(menuSelector + " li a").hover(function () {
            $el = $(this);
            leftPos = $el.position().left;
            newWidth = $el.outerWidth();
            $magicLine.stop().animate({
                left: leftPos,
                width: newWidth
            });
        }, function () {
            $magicLine.stop().animate({
                left: $magicLine.data("origLeft"),
                width: $magicLine.data("origWidth")
            });
        });
    } catch (e) {
        handleError(e);
    }
}


function wireBannerScoller() {

    try {
        $(window).load(function () {
            var bannerImg = $("#home-client-strip img");
            var moreClients = $("#home-client-strip-more-clients img");
            var aniSpeed = 1000;
            var marginL = (bannerImg.parent().width() - bannerImg.outerWidth());
            moreClients.unbind('mouseover').unbind('mouseout').bind('mouseover', function () {
                bannerImg.stop().animate({ marginLeft: marginL }, aniSpeed);
            }).bind('mouseout', function () {
                bannerImg.stop().animate({ marginLeft: 0 }, aniSpeed);
            });
        });
    } catch (e) {
        handleError(e);
    }
}


var tweetNum = 4;

function wireTwitterFeed() {
    try {
        $.ajax({
            cache: true,
            dataType: "json",
            url: 'http://api.twitter.com/statuses/user_timeline.json?screen_name=greenohmtweets&callback=?',
            success: function (data) {
                $("#twitter-holder").html('');
                $("#twitter-holder").append($("<div id='twitter-header'> <img src='Images/greenohm-twitter-header.png' /></div>"));
                for (var obj in data) {
                    if (obj >= tweetNum)
                        break;
                    pushTweet(data[obj]);
                }
                $("#twitter-holder").append($("<div id='twitter-footer'></div>"));
            },
            statusCode: {
                404: function () {
                    $("#twitter-loading-message").html("error connecting to twitter.");
                },
                400: function () {
                    $("#twitter-loading-message").html("error connecting to twitter. too many requests!");
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                $("#twitter-loading-message").html("error connecting to twitter.");
            }
        });
    } catch (e) {
        handleError(e);
    }
}

function wireHomeThumbs() {
    try {
        $(".section-icon").each(function () {
            var parent = $(this);
            var slider = parent.find(".section-icon-cover");
            parent.unbind('mousein').unbind('mouseout').bind('mouseover', function () {
                slider.css("height", "20px");
                slider.stop().slideDown('fast');
            }).bind('mouseout', function () {
                slider.css("height", "20px");
                slider.stop().slideUp('fast');
            });

        });
    } catch (e) {
        handleError(e);
    }
}


function wireCaseStudiesThumbs() {
    try {
        $("[bigurl]").each(function () {
            var title = $(this).attr('title');
            var url = $(this).attr('bigurl');
            var group = $(this).attr();
            $(this).colorbox({ href: url, title: title, rel: group });
        });
    } catch (e) {
        handleError(e);
    }
}

function wireColorboxes() {
    try {
        $("[bigurl]").each(function () {
            var title = $(this).attr('title');
            var url = $(this).attr('bigurl');
            $(this).colorbox({ href: url, title: title, rel: 'home_images' });
        });
    } catch (e) {
        handleError(e);
    }
}

function pushTweet(twitters) {
    try {
        var holder = $("<div class='twitter-holder'></div>");
        var message = $("<div class='twitter-message'></div>");
        var date = $("<div class='twitter-date'></div>");

        var username = twitters.user.screen_name;
        var status = twitters.text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function (url) {
            return '<a href="' + url + '">' + url + '</a>';
        }).replace(/\B@([_a-z0-9]+)/ig, function (reply) {
            return reply.charAt(0) + '<a href="http://twitter.com/' + reply.substring(1) + '">' + reply.substring(1) + '</a>';
        });


        message.append(status);
        date.append(relative_time(twitters.created_at));

        holder.append(message);
        holder.append(date);

        $("#twitter-holder").append(holder);
    } catch (e) {
        handleError(e);
    }
}

function relative_time(time_value) {
    try {
        var values = time_value.split(" ");
        time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
        var parsed_date = Date.parse(time_value);
        var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
        var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
        delta = delta + (relative_to.getTimezoneOffset() * 60);

        if (delta < 60) {
            return 'less than a minute ago';
        } else if (delta < 120) {
            return 'about a minute ago';
        } else if (delta < (60 * 60)) {
            return (parseInt(delta / 60)).toString() + ' minutes ago';
        } else if (delta < (120 * 60)) {
            return 'about an hour ago';
        } else if (delta < (24 * 60 * 60)) {
            return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
        } else if (delta < (48 * 60 * 60)) {
            return '1 day ago';
        } else {
            return (parseInt(delta / 86400)).toString() + ' days ago';
        }
    } catch (e) {
        handleError(e);
    }
}


if (!window.console) console = { log: function () { } };

function handleError(e) {
    alert(e);
}
