$.support.cors = true;
function getCookie(name) {
    var matches = document.cookie.match(new RegExp(
    "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
    ))
    return matches ? decodeURIComponent(matches[1]) : undefined 
}
function setCookie(name, value, props) {
    props = props || {}
    var exp = props.expires
    if (typeof exp == "number" && exp) {
        var d = new Date()
        d.setTime(d.getTime() + exp*1000)
        exp = props.expires = d
    }
    if(exp && exp.toUTCString) { props.expires = exp.toUTCString() }

    value = encodeURIComponent(value)
    var updatedCookie = name + "=" + value
    for(var propName in props){
        updatedCookie += "; " + propName
        var propValue = props[propName]
        if(propValue !== true){ updatedCookie += "=" + propValue }
    }
    document.cookie = updatedCookie
}
var show_overlay = function() { $('div.comments_container div.overlay').show(); }
var show_error = function() { 
    if(!$('div.comments_container div.overlay').length)
        return;
    var overlay = $('div.comments_container div.overlay');
    overlay.removeClass('overlay');
    overlay.addClass('overlay_blank');
    overlay.show();
    $('div.comments_container div.error').fadeIn();
    setTimeout(hide_error, 4000);
}
var hide_error = function() {
    if(!$('div.comments_container div.error').length)
        return;
    var overlay = $('div.comments_container div.overlay_blank');
    overlay.addClass('overlay');
    overlay.removeClass('overlay_blank');
    $('div.comments_container div.error').fadeOut();
    overlay.hide();
}
var set_comments_body = function(html) {
    var element = $('table.comments_table').length?$('table.comments_table'):$('div.comments_container');
    element.replaceWith(html);
    init_comments();
    $('div.comments_container div.overlay').hide();
}
function append_request(url, type, data) {
    var session_id = getCookie('uafootball_sess_id');
    if(!session_id) {
        var host = url.match(/https?:\/\/[^\/]+/);
        if(!host)
            host = '';
        r = $.ajax({ async: false, url: host + '/comments/getcookie' });
        if((r.status != 200) || (!r.responseText)) {
            show_error();
            return;
        }
        session_id = r.responseText;
        setCookie(session_id, 'uafootball_sess_id');
    }
    if(!type)
        type = 'get';
    show_overlay();
    url = url + (/\?/.test(url)?'&':'?') + 'session_id=' + session_id;
    $.ajax({
        url: url,
        type: type,
        success: set_comments_body,
        error: show_error,
        data: data
    });
}
var init_comments = function() {
    $('div.comments_container form#add-comment').unbind();
    $('div.comments_container form#add-comment').bind('submit', function(event) {
        event.preventDefault();
        append_request($(this).attr('action'), 'post', $(this).serialize());
    });
    $('div.comments_container table.comments a').unbind();
    $('div.comments_container table.comments a').bind('click', function(event){
        event.preventDefault();
        append_request($(this).attr('href'));
    });
    $('div.comments_container table.comments form').unbind();
    $('div.comments_container table.comments form').bind('submit', function(event){
        event.preventDefault();
        append_request($(this).attr('action') + '?page=' + $(this).find('input[name=page]').val());
    });
}
