function setIframeDimensions() {
    var frame = $('frame');
    var theleftframe = $('theleftframe');
    var frameWidth = document.viewport.getWidth() - theleftframe.getWidth();
    frame.style.width = frameWidth + 'px';
    frame.style.height = document.viewport.getHeight() + 'px';
    frame.style.left = theleftframe.getWidth() + 'px';
    //IE6 footer positioning fix
    $('main').style.height = document.viewport.getHeight() + 'px';
}

function toggleSideBar() {
    $('main').toggle();
    $('toggleLink').toggleClassName('on');
    setIframeDimensions();
}


//Editing Actions
function showEdit() {
    $('details').style.display = 'none';
    $('addWatchForm').style.display = 'block';
}

function hideAddWatchLinkBox() {
    $('details').style.display = 'block';
    $('addWatchForm').style.display = 'none';
}

//Remove Functions
function rateWatchLink(watchLinkId, atomIdAsLink, rating) {
    var url = atomIdAsLink + "/_watchlink/" + watchLinkId + "/_rating";
    return new makeAjaxPost(url, {action:"add", rating: rating},
            handleRateWatchLinkReturn, handleRateWatchLinkReturn)
}

function handleRateWatchLinkReturn() {
    document.getElementById("watchLinkRating").innerHTML = "Thanks for the feedback!";
}

//Admin Functions
function watchLinkManagerRemove(atomIdAsLink, watchLinkId) {
    return makeAjaxPost(atomIdAsLink + "/_watchlink/" + watchLinkId, {action: 'delete'},
            watchLinkManagerRemoveSuccess, watchLinkManagerRemoveFailure)
}

function watchLinkManagerRemoveSuccess() {
    updateWatchLinkTools("removed");
}

function watchLinkManagerRemoveFailure() {
    updateWatchLinkTools("error removing watchlink");
}

function watchLinkManagerAdd(atomIdAsLink, url, season, episode, title) {
    return makeAjaxPost(atomIdAsLink + "/_watchlink", {action: 'add', url: url, season: season, episode: episode, title: title},
            watchLinkManagerAddSuccess, watchLinkManagerAddFailure)
}

function watchLinkManagerAddSuccess() {
    updateWatchLinkTools("added");
}

function watchLinkManagerAddFailure() {
    updateWatchLinkTools("error adding watchlink");
}

function updateWatchLinkTools(message) {
    $('watchLinkTools').update(message);
}

function handleUpdateWatchLinkSuccess(transport) {
    makeAjaxRequest(atomLink + "/_watchlink/" + linkId, "GET", {},
            handleGetLinkInfoSuccess, handleUpdateWatchLinkFailure);
}

function handleGetLinkInfoSuccess(transport) {
    var linkDetailsContent = transport.responseText;
    $('linkDetailsInner').update(linkDetailsContent);
}

function handleUpdateWatchLinkFailure() {
    $('linkDetailsInner').update("ERROR: Link no longer exists.");
}

function canonicalizeId(id) {
    return (id.toString()).gsub(/_/, '');
}

function handleFailed403WatchlinkResponse() {
    window.location.reload();
}

function makeAjaxRequest(url, method, params, successFunc, errorFunc) {
    var request = new Ajax.Request(url,
    {
        method: method,
        parameters: params,
        requestHeaders: {Accept: "application/json"},
        onSuccess: successFunc,
        onFailure: errorFunc
    });
    return request;
}

function makeAjaxPost(url, postParams, successFunc, errorFunc) {
    return makeAjaxRequest(url, "POST", postParams, successFunc, errorFunc);
}

function editWatchLinkRequestFromViewer(values) {
    makeAjaxPost(atomLink + "/_watchlink/" + values['addWatchLinkId'], { action: 'edit',
        season: values['addWatchLinkSeasonNumber'], episode: values['addWatchLinkEpisodeNumber'], title: values['addWatchLinkTitle']},
            handleUpdateWatchLinkSuccess, handleUpdateWatchLinkFailure, handleFailed403WatchlinkResponse);
}

/*Add to Favorites
--------------------------------------------------*/
function submitFavoritesRequest(action, atomId, watchLinkId) {
    var favesCallback;
    if (action == "add") {
        makeAjaxPost('/_user/_favorites', { action: action,
            atomId: atomId, watchLinkId: watchLinkId},
                handleAddFavoriteResponse, handleAddFavoriteResponse)
    } else {
        makeAjaxPost('/_user/_favorites', { action: action,
            atomId: atomId, watchLinkId: watchLinkId},
                handleRemoveFavoriteResponse(atomId, watchLinkId), handleRemoveFavoriteResponse(atomId, watchLinkId))
    }
}

function handleAddFavoriteResponse() {
    $('addToFavoritesBox').update('<span>Added to Favorites</span>');
}




