﻿var url = WebRequestUrl();

/// Function: Gets the web request url
function WebRequestUrl() {
    var loc = document.location.href;
    loc = loc.substring(0, loc.lastIndexOf('/'));
    loc = loc.substring(0, loc.lastIndexOf('/'));

    return loc + "/WebRequest.aspx";
}

/// Function: Creates a HTTPRequestObject for use in AJAX functions (cross-browser compatible) 
function GetHTTPRequestObject() {
    var request = false;
    try {
        request = new XMLHttpRequest();
    } catch (trymicrosoft) {
        try {
            request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (othermicrosoft) {
            try {
                request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (failed) {
                request = false;
            }
        }
    }
    return request;
}

/// Function: Toggles item description to show full description or summary
/// Parameters:
/// cur <object> - The dom element representing the clickable link
/// show <bool> - Whether to hide or show the full description
function toggleDescription(cur, show) {
    var summary = cur.parentNode.parentNode.getElementsByTagName('div')[0];
    var description = cur.parentNode.parentNode.getElementsByTagName('div')[1];

    summary.style.display = show ? 'none' : 'block';
    description.style.display = show ? 'block' : 'none';
}

/// Function: Makes the AJAX call to remove favorite item and updates ui
function RemoveFavorite(ResourceID) {
    var request = GetHTTPRequestObject();
    var querystring = "?request=RemoveFavorite&&ResourceId=" + ResourceID;

    if (request) {
        request.onreadystatechange = function () {
            if (request.readyState == 4) {
                UpdateFavoriteUI(false, ResourceID);
            }
        }
        request.open("POST", url + querystring, true);
        request.send("");
    }
}

/// Function: Makes the AJAX call to select favorite and updates ui
function SelectFavorite(ResourceID) {

    var request = GetHTTPRequestObject();
    var querystring = "?request=FavoriteItem&&ResourceId=" + ResourceID;

    if (request) {
        request.onreadystatechange = function () {
            if (request.readyState == 4) {
                UpdateFavoriteUI(true, ResourceID);
            }
        }
        request.open("POST", url + querystring, true);
        request.send("");
    }
}

/// Function: Makes the AJAX call to update item rating and updates ui
function UpdateRating(rating, ResourceID) {
    var request = GetHTTPRequestObject();
    var querystring = "?request=UpdateRating&&ResourceId=" + ResourceID + "&&Rating=" + rating;

    if (request) {
        request.onreadystatechange = function () {
            if (request.readyState == 4) {
                UpdateRatingUI(rating, ResourceID);
            }
        }
        request.open("POST", url + querystring, true);
        request.send("");
    }
}

/// Function: Updates ui for item rating
function UpdateRatingUI(rating, ResourceID) {

    var dspRating = document.getElementById('itemRating' + ResourceID).getElementsByTagName('ul')[0];
    var dspClass;
    switch (rating) {
        case 1: dspClass = "rating onestar"; break;
        case 2: dspClass = "rating twostar"; break;
        case 3: dspClass = "rating threestar"; break;
        case 4: dspClass = "rating fourstar"; break;
        case 5: dspClass = "rating fivestar"; break;
        default: dspClass = "rating nostar";
    }

    dspRating.className = dspClass;

    if (rating != 0) {
        var links = dspRating.getElementsByTagName('a');
        for (var i = 0; i < links.length; i++) {
            links[i].onclick = "";
        }
    }
}

/// Function: Updates UI for item favorite
function UpdateFavoriteUI(itemFaved, ResourceID) {

    var divFavOptions = document.getElementById('itemFav' + ResourceID);

    if (divFavOptions != null) {
        divFavOptions = divFavOptions.getElementsByTagName('div');
        var divAddFav = divFavOptions[1];
        var divRemoveFav = divFavOptions[0];

        if (itemFaved) {
            divRemoveFav.style.display = 'block';
            divAddFav.style.display = 'none';
        }
        else {
            divRemoveFav.style.display = 'none';
            divAddFav.style.display = 'block';
        }
    }
}

/// Function: Updates resource usage for specified resource
function UpdateResourceUsage(ResourceID) {
    var request = GetHTTPRequestObject();
    var querystring = "?request=ResourceUsed&&ResourceId=" + ResourceID;

    if (request) {
        request.open("POST", url + querystring, true);
        request.send("");
    }
}

