var golo = new Object();

golo.yes_no_dialog = function(opener_div, size, title, text, yes_cb, no_cb){
    golo.yes_no_dialog.close();

    golo.yes_no_dialog.title = title;
    golo.yes_no_dialog.text = text;
    golo.yes_no_dialog.yes_cb = yes_cb;
    golo.yes_no_dialog.no_cb = no_cb;

    $('yes_no_dialog').style.width = size.x + 'px';
    $('yes_no_dialog').style.height = size.y + 'px';
    $('yes_no_dialog').style.left = ($(opener_div).getLeft()) + 'px';
    $('yes_no_dialog').style.top = ($(opener_div).getTop()) + 'px';
    $('yes_no_dialog').style.display = 'block';
    $('yes_no_dialog_title').innerHTML = '<strong>' + title + '</strong>';
    $('yes_no_dialog_text').innerHTML = text;
}
golo.yes_no_dialog.close = function(){
    $('yes_no_dialog').style.display = 'none';
}
golo.yes_no_dialog.yes_clicked = function(){
    golo.yes_no_dialog.close();
    if (golo.yes_no_dialog.yes_cb != null){
        golo.yes_no_dialog.yes_cb();
    }
}
golo.yes_no_dialog.no_clicked = function(){
    golo.yes_no_dialog.close();
    if (golo.yes_no_dialog.no_cb != null){
        golo.yes_no_dialog.no_cb();
    }
}

golo.ok_dialog = function(opener_div, size, title, text, ok_cb){
    golo.ok_dialog.close();

    golo.ok_dialog.title = title;
    golo.ok_dialog.text = text;
    golo.ok_dialog.ok_cb = ok_cb;

    $('ok_dialog').style.width = size.x + 'px';
    $('ok_dialog').style.height = size.y + 'px';
    $('ok_dialog').style.left = ($(opener_div).getLeft()) + 'px';
    $('ok_dialog').style.top = ($(opener_div).getTop()) + 'px';
    $('ok_dialog').style.display = 'block';
    $('ok_dialog_title').innerHTML = '<strong>' + title + '</strong>';
    $('ok_dialog_text').innerHTML = text;
}
golo.ok_dialog.close = function(){
    $('ok_dialog').style.display = 'none';
}
golo.ok_dialog.ok_clicked = function(){
    golo.ok_dialog.close();
    if (golo.ok_dialog.ok_cb != null){
        golo.ok_dialog.ok_cb();
    }
}


golo.delete_comment = function(id, opener_div)
{
    golo.delete_comment.id = id;
    golo.delete_comment.opener_div = opener_div;

    golo.yes_no_dialog(opener_div,
        {'x': 200, 'y': 100},
        "Delete Comment",
        "Are you sure you want to delete this comment?",
        golo.delete_comment.confirmed,
        null
    );
}

golo.delete_comment.confirmed = function()
{
    var url = "/diesel/apps/ajax/delete_comment.php";
	var jSonRequest = new Json.Remote(url, {
		onComplete: golo.delete_comment.ajax_callback
	});
    jSonRequest.send({'id' : golo.delete_comment.id});
}

golo.delete_comment.ajax_callback = function(ary)
{
    if (ary)
    {
        if (ary.result)
        {
            var comment_div = 'comment_' + golo.delete_comment.id;
            $(comment_div).parentNode.removeChild($(comment_div));
            return;
        }
        else
        {
            golo.ok_dialog(golo.delete_comment.opener_div,
                {'x': 200, 'y': 150},
                "Delete Comment",
                "Failed to delete comment: " + ary.message,
                null
            );
            return;
        }
    }
    golo.ok_dialog(golo.delete_comment.opener_div,
        {'x': 200, 'y': 100},
        "Delete Comment",
        "Failed to delete comment.",
        null
    );
}




golo.report_abuse = function(id, opener_div)
{
    golo.report_abuse.id = id;
    golo.report_abuse.opener_div = opener_div;

    golo.yes_no_dialog(opener_div,
        {'x': 200, 'y': 100},
        "Report Abuse",
        "Are you sure you want to report abuse?",
        golo.report_abuse.confirmed,
        null
    );
}

golo.report_abuse.confirmed = function()
{
    var url = "/diesel/apps/ajax/report_abuse.php";
	var jSonRequest = new Json.Remote(url, {
		onComplete: golo.report_abuse.ajax_callback
	});
    jSonRequest.send({'id' : golo.report_abuse.id});
}

golo.report_abuse.ajax_callback = function(ary)
{
    if (ary)
    {
        if (ary.result)
        {
            golo.ok_dialog(golo.report_abuse.opener_div,
                {'x': 200, 'y': 100},
                "Report Abuse",
                "Thank you for your abuse report.",
                null
            );
            return;
        }
        else
        {
            golo.ok_dialog(golo.report_abuse.opener_div,
                {'x': 200, 'y': 125},
                "Report Abuse",
                "Failed to file abuse report: " + ary.message,
                null
            );
            return;
        }
    }
    golo.ok_dialog(golo.report_abuse.opener_div,
        {'x': 200, 'y': 125},
        "Report Abuse",
        "Failed to file abuse report.",
        null
    );
}


golo.add_to_favorites = function(id, opener_div)
{
    golo.add_to_favorites.id = id;
    golo.add_to_favorites.opener_div = opener_div;

    golo.yes_no_dialog(opener_div,
        {'x': 200, 'y': 100},
        "Add to Favorites",
        "Are you sure you want to add this to your favorites?",
        golo.add_to_favorites.confirmed,
        null
    );
}

golo.add_to_favorites.confirmed = function()
{
    var url = "/diesel/apps/ajax/add_to_favorites.php";
	var jSonRequest = new Json.Remote(url, {
		onComplete: golo.add_to_favorites.ajax_callback
	});
    jSonRequest.send({'id' : golo.add_to_favorites.id});
}

golo.add_to_favorites.ajax_callback = function(ary)
{
    if (ary)
    {
        if (ary.result)
        {
            golo.ok_dialog(golo.add_to_favorites.opener_div,
                {'x': 200, 'y': 100},
                "Add to Favorites",
                "Added to your favorites.",
                null
            );
            return;
        }
        else
        {
            golo.ok_dialog(golo.add_to_favorites.opener_div,
                {'x': 200, 'y': 125},
                "Add to Favorites",
                "Failed to add to favorites: " + ary.message,
                null
            );
            return;
        }
    }
    golo.ok_dialog(golo.add_to_favorites.opener_div,
        {'x': 200, 'y': 125},
        "Add to Favorites",
        "Failed to add to favorites.",
        null
    );
}

golo.request_friendship = function(id, opener_div)
{
    golo.request_friendship.id = id;
    golo.request_friendship.opener_div = opener_div;

    golo.yes_no_dialog(opener_div,
        {'x': 200, 'y': 100},
        "Request Friendship",
        "Ask this person to be your friend?",
        golo.request_friendship.confirmed,
        null
    );
}

golo.request_friendship.confirmed = function()
{
    var url = "/apps/ajax/golo/request_friendship.php";
	var jSonRequest = new Json.Remote(url, {
		onComplete: golo.request_friendship.ajax_callback
	});
    jSonRequest.send({'id' : golo.request_friendship.id});
}

golo.request_friendship.ajax_callback = function(ary)
{
    if (ary)
    {
        if (ary.result)
        {
            golo.ok_dialog(golo.request_friendship.opener_div,
                {'x': 200, 'y': 125},
                "Request Friendship",
                "Thanks for offering a friendly handshake.  Check your friends list often to see if your friend said yes!",
                null
            );
            return;
        }
        else
        {
            golo.ok_dialog(golo.request_friendship.opener_div,
                {'x': 200, 'y': 150},
                "Request Friendship",
                "Failed to request friendship: " + ary.message,
                null
            );
            return;
        }
    }
    golo.ok_dialog(golo.request_friendship.opener_div,
        {'x': 200, 'y': 100},
        "Request Friendship",
        "Failed to request friendship.",
        null
    );
}

golo.join_group = function(id, opener_div, type)
{
    golo.join_group.id = id;
    golo.join_group.opener_div = opener_div;
    golo.join_group.type = type;
    var text = "";
    if (type == "apply"){
        golo.join_group.title = "Apply to Group";
        text = "Apply to join this group?";
    }
    else if (type == "accept"){
        golo.join_group.title = "Accept Group Invitation";
        text = "Accept this group invitation?";
    }
    else {
        golo.join_group.title = "Join Group";
        text = "Join this group?";
    }
    
    golo.yes_no_dialog(opener_div,
        {'x': 200, 'y': 100},
        golo.join_group.title,
        text,
        golo.join_group.confirmed,
        null
    );
}

golo.join_group.confirmed = function()
{
    var url = "/apps/ajax/golo/join_group.php";
	var jSonRequest = new Json.Remote(url, {
		onComplete: golo.join_group.ajax_callback
	});
    jSonRequest.send({'id' : golo.join_group.id});
}

golo.join_group.ajax_callback = function(ary)
{
    if (ary)
    {
        if (ary.result)
        {
            var text = "";
            var cb = null;
            if (golo.join_group.type == "apply"){
                text = "Thanks for applying to join this group.";
            }
            else if (golo.join_group.type == "accept"){
                text = "The group invitation has been accepted. Click Ok to continue.";
                cb = golo.refresh_page;
            }
            else {
                text = "Welcome to the group! Click Ok to continue.";
                cb = golo.refresh_page;
            }
            golo.ok_dialog(golo.join_group.opener_div,
                {'x': 200, 'y': 100},
                golo.join_group.title,
                text,
                cb
            );
            return;
        }
        else
        {
            golo.ok_dialog(golo.join_group.opener_div,
                {'x': 200, 'y': 150},
                golo.join_group.title,
                "The request to join the group did not succeed: " + ary.message,
                null
            );
            return;
        }
    }
    golo.ok_dialog(golo.join_group.opener_div,
        {'x': 200, 'y': 100},
        golo.join_group.title,
        "The request to join the group did not succeed.",
        null
    );
}

golo.leave_group = function(id, opener_div)
{
    golo.leave_group.id = id;
    golo.leave_group.opener_div = opener_div;

    golo.yes_no_dialog(opener_div,
        {'x': 200, 'y': 100},
        "Leave Group",
        "Leave this group?",
        golo.leave_group.confirmed,
        null
    );
}

golo.leave_group.confirmed = function()
{
    var url = "/apps/ajax/golo/leave_group.php";
	var jSonRequest = new Json.Remote(url, {
		onComplete: golo.leave_group.ajax_callback
	});
    jSonRequest.send({'id' : golo.leave_group.id});
}

golo.leave_group.ajax_callback = function(ary)
{
    if (ary)
    {
        if (ary.result)
        {
            golo.ok_dialog(golo.leave_group.opener_div,
                {'x': 200, 'y': 100},
                "Leave Group",
                "You have left the group. Click Ok to continue.",
                golo.refresh_page
            );
            return;
        }
        else
        {
            golo.ok_dialog(golo.leave_group.opener_div,
                {'x': 200, 'y': 150},
                "Leave Group",
                "Failed to leave group: " + ary.message,
                null
            );
            return;
        }
    }
    golo.ok_dialog(golo.leave_group.opener_div,
        {'x': 200, 'y': 100},
        "Leave Group",
        "Failed to leave group.",
        null
    );
}



golo.recommend = function(id, update_div, message_on_failure)
{
    golo.recommend.id = id;
    golo.recommend.update_div = update_div;
    if (message_on_failure != undefined)  {
        golo.recommend.failure_message = message_on_failure;
    }
    if ($(update_div).className != 'recommend')
        $(update_div).className = 'recommend';

    var url = "/apps/ajax/golo/recommend.php";
	var jSonRequest = new Json.Remote(url, {
		onComplete: golo.recommend.ajax_callback
	});
    jSonRequest.send({'id' : golo.recommend.id});
}

golo.recommend.ajax_callback = function(ary)
{
    if (ary)
    {
        if (ary.result)
        {
            $(golo.recommend.update_div).innerHTML = ary.recommended_votes;
            return;
        }
        else  {
            if (ary.message == "You've already recommended this.")  {
                if (golo.recommend.failure_message)  {
                    alert(golo.recommend.failure_message);
                }
            }
        }
    }
}



golo.refresh_page = function()
{
    document.location.reload(true);
}
