String.prototype.linkify = function(){
    return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/, function(m) {
        return m.link(m);
    });
};

$(document).ready(function(){
    var base_url = '';
  
    // Intercept any form in a popup submit
    $('div.popup form').live('submit', function(event){
        event.preventDefault();
        var wrapper = $(this).parents('div.popup:first');
        var url = base_url + $(this).attr('action');
        var data = $(this).serialize();
        wrapper.html(' ');
        wrapper.addClass('loading');
        $.ajax({
            url: url,
            data: data,
            async: false,
            type: 'POST',
            cache: false,
            success: function(data){
                wrapper.removeClass('loading');
                if (data.indexOf('{') == 0)
                {
                    var obj = $.parseJSON(data);
                    if (obj.status == 'success')
                    {                    
                        if (obj.location != undefined)
                            window.location = obj.location;
                        else if (obj.updates != undefined)
                        {
                            // Update nodes with html. todo
                        }
                    }
                    else 
                        alert("An unexpected error occurred");
                }
                else
                    wrapper.html(data);
            }
        });
    });

    // Pre-load signin form
    var url = base_url + '/signin/';
    $.get(url, {}, function(data){$('div#sign_pop_inner').html(data)});

    // Pre-load password reset form
    var url = base_url + '/password_reset/';
    $.get(url, {}, function(data){$('div#forgot_pop_inner').html(data)});

    $("#forgot-link").live('click', function(event){
		event.preventDefault(event);
		swapInnerHTML('sign-in-form-holder','forgot-password-holder',200);
	});

    $("#sign-in-link-swap").live('click', function(event){
		event.preventDefault(event);
		swapInnerHTML('forgot-password-holder','sign-in-form-holder',200);
	});

    // General likes fix
    $('a.liker').live('click', function(event){
        event.preventDefault();
        var el = $(this);
        // Karbon stole the 'likes' class so use our own wrapper class
        var replace_target = el.parents('span.likes-wrapper:first');
        $.get(base_url + el.attr('href'), {}, function(data){ replace_target.html(data); }); 
    }); 

    // Twitter portlet
    $.getJSON('http://twitter.com/status/user_timeline/SABC_2.json?count=3&callback=?', function(data){
        $.each(data, function(i, item) {
            $("#twitter-portlet").append("<div class=\"tweet\">"
                + item.text.linkify()
                + " <span>" 
                + item.source
                + " - posted on "
                + item.created_at.substring(0, item.created_at.length-14)
                + "</span>"
                + "</div>");
        });
    });

    // CSS switch for daytime and nighttime.
    var hour_of_the_day = (new Date()).getHours();
    if ( hour_of_the_day > 4  && hour_of_the_day < 18 ) {
        $('body').addClass('daytime').removeClass('evening');
    };
});

