/*
 * $Id: acm.js 3700 2006-10-05 02:10:10Z mreynolds $
 *
 * (C) Copyright 2005-2006, by Anystream, Inc.
 *
 */

function clearSearchCriteria() {

    var startDate = document.getElementById("startDateId");
    if (startDate != null) {
        startDate.value = "";
    }

    var endDate = document.getElementById("endDateId");
    if (endDate != null) {
        endDate.value = "";
    }

    var words = document.getElementById("wordsId");
    if (words != null) {
        words.value = "";
    }

    var status = document.getElementById("statusId");
    if (status != null) {
        status.selectedIndex = 0;
    }

    var semester = document.getElementById("semesterId");
    if (semester != null) {
        semester.selectedIndex = 0;
    }
}

function changePage(navType, totalRecords, formId, currentPageFieldId, newPageSelectorId) {
    var form = document.getElementById(formId);
    var currentPageField = document.getElementById(currentPageFieldId);
    var currentPageString = currentPageField.value;
    var currentPage = parseInt(currentPageString);

    if (isNaN(currentPage)) {
        currentPage = 1;
    }

    if ((navType == 'F' || navType == 'P') && currentPage == 1) {
        alert("You are already viewing first page!");
        return;
    } else if ((navType == 'N' || navType == 'L') && currentPage == totalRecords) {
        alert("You are already viewing last page!");
        return;
    }

    if (navType == 'F') {
        currentPage = 1;
    } else if (navType == 'P') {
        currentPage = currentPage - 1;
    } else if (navType == 'N') {
        currentPage = currentPage + 1;
    } else if (navType == 'L') {
        currentPage = totalRecords;
    } else if (navType == 'S') {
        var newPageSelector = document.getElementById(newPageSelectorId);
        alert("newPageSelectorId=" + newPageSelectorId);
        alert("newPageSelector.selectedIndex=" + newPageSelector.selectedIndex);
        currentPage = parseInt(newPageSelector.options[newPageSelector.selectedIndex].value);
    }

    if (currentPage < 1) {
        currentPage = 1;
    } else if (currentPage > totalRecords) {
        currentPage = totalRecords;
    }

    currentPageField.value = currentPage;
    form.submit();
}

function changeRecordsPerPage(formId, currentPageFieldId) {
    var currentPageField = document.getElementById(currentPageFieldId);
    currentPageField.value = 1;

    var form = document.getElementById(formId);
    form.submit();
}

function selectAllCheckboxes(selectAllCheckboxId, checkBoxName) {
    var selectAllCheckBox = document.getElementById(selectAllCheckboxId);
    var guidCheckBoxes = document.getElementsByName(checkBoxName);

    for (var i = 0; i < guidCheckBoxes.length; i++) {
        guidCheckBoxes[i].checked = selectAllCheckBox.checked;
    }
}

function selectAllCheckboxesFromLink(selectAllCheckboxId, checkBoxName) {
    var selectAllCheckBox = document.getElementById(selectAllCheckboxId);
    var guidCheckBoxes = document.getElementsByName(checkBoxName);

    selectAllCheckBox.checked = true;

    for (var i = 0; i < guidCheckBoxes.length; i++) {
        guidCheckBoxes[i].checked = selectAllCheckBox.checked;
    }
}

function clearAllCheckboxes(selectAllCheckboxId, checkBoxName) {
    var selectAllCheckBox = document.getElementById(selectAllCheckboxId);
    var guidCheckBoxes = document.getElementsByName(checkBoxName);

    selectAllCheckBox.checked = false;

    for (var i = 0; i < guidCheckBoxes.length; i++) {
        guidCheckBoxes[i].checked = selectAllCheckBox.checked;
    }
}

function isGuidCheckboxChecked(selectAllCheckboxId, guidCheckbox){
    var selectAllCheckBox = document.getElementById(selectAllCheckboxId);

    if(guidCheckbox.checked == false){
        selectAllCheckBox.checked = false;
    }

}

function changeSort(formId, sortColumnFieldId, sortDescendingFieldId, sortColumn, isSortDescending) {
    var sortColumnInput = document.getElementById(sortColumnFieldId);
    sortColumnInput.value = sortColumn;

    var sortOrderInput = document.getElementById(sortDescendingFieldId);
    sortOrderInput.value = isSortDescending;

    var form = document.getElementById(formId);
    form.submit();
}

function submitForm(form, action) {
    if (action != null) {
        form.setAttribute("action", action);
    }
    form.submit();
}

function processBatch(formId, guidCheckboxName, operation) {

    var checkedCount = 0;
    if (operation == "imprt") {
        checkedCount = -1;
    } else {
        var guidCheckBoxes = document.getElementsByName(guidCheckboxName);
        for (var i = 0; i < guidCheckBoxes.length; i++) {
            if (guidCheckBoxes[i].checked) {
                checkedCount++;
            }
        }
    }

    if (checkedCount != 0) {
        var confirmMessage;
        var action;

        if (operation == "makeUnavailable") {
            confirmMessage = "Make unavailable";
            action = "batch.jsp?op=" + operation;
        } else if (operation == "makeAvailable") {
            confirmMessage = "Make available";
            action = "batch.jsp?op=" + operation;
        } else if (operation == "archive") {
            confirmMessage = "Archive";
            action = "archiveapresos.jsp";
        } else if (operation == "unarchive") {
            confirmMessage = "Unarchive";
            action = "batch.jsp?op=" + operation;
        } else  if (operation == "delete") {
            confirmMessage = "Delete";
            action = "batch.jsp?op=" + operation;
        } else if (operation == "undelete") {
            confirmMessage = "Undelete";
            action = "batch.jsp?op=" + operation;
        } else if (operation == "permanentlyDelete") {
            confirmMessage = "Permanently delete";
            action = "batch.jsp?op=" + operation;
        } else if (operation == "postNotification") {
            confirmMessage = "Post notification for";
            action = "postnotification.jsp";
        } else if (operation == "imprt") {
            confirmMessage = "Import";
            action = "importapresos.jsp";
            //action = "batch.jsp?op=" + operation;
        }

        if (checkedCount == 1) {
            confirmMessage += " the selected Apreso?";
        } else {
            confirmMessage += " the " + checkedCount + " selected Apresos?";
        }

        var isConfirmed;
        if (checkedCount > 0) {
            isConfirmed = window.confirm(confirmMessage);
        } else {
            isConfirmed = true;
        }

        if (isConfirmed) {
            var form = document.getElementById(formId);
            submitForm(form, action)
        }
    } else {
        alert("No presentations have been selected.");
    }
}

function toggleSearchMode(formId, advancedModeFieldId) {
    var advancedMode = document.getElementById(advancedModeFieldId);
    advancedMode.value = !(advancedMode.value == "true");

    var form = document.getElementById(formId);
    form.submit();
}

function viewPresentation(baseUrlFieldId, guid, name) {
    name = removeIllegalFilenameChars(name);
    name = encodeURIComponent(name);

    var baseUrlField = document.getElementById(baseUrlFieldId);
    window.open(baseUrlField.value + guid + "/" + name + ".htm", "view");
}

function viewLink(baseUrlFieldId, guid, name, audioFileName, enhancedAudioFileName) {
    //need to 1) strip out illegal chars THEN encode.
    name = removeIllegalFilenameChars(name);
    name = encodeURIComponent(name);

    var baseUrlField = document.getElementById(baseUrlFieldId);
    var url = baseUrlField.value + guid + "/" + name + ".htm";
    var audioUrl = baseUrlField.value + guid + "/" + name + "_files/" + audioFileName;
    var links =      "<a href=\"" + url + "\" target='_blank' class='status'>Presentation Link:</a> " + " " + url + "<br>"
            + "<a href=\"" + audioUrl + "\" target='_blank' class='status'>Audio File:</a>" + " " + audioUrl;

    if (enhancedAudioFileName != null && enhancedAudioFileName.match("m4b")){
        var eaudioUrl = baseUrlField.value + guid + "/" + name + "_files/" + enhancedAudioFileName;
        links = links + "<br><a href=\"" + eaudioUrl + "\" target='_blank' class='status'>Enhanced Podcast File:</a>" + " " + eaudioUrl; 
    }

    document.getElementById("linkId").innerHTML = links;    
}

function removeIllegalFilenameChars(sStr) {
        return sStr.replace(/\"|\*|:|>|<|\?|\\|\/|\||;|\#|%/g,'');
}

function viewFeedLink(baseUrl, isRSSEnabled, isPublicSearchEnabled, guid, enhanced, standard) {
    var searchUrl = baseUrl + "public?id=" + guid;
    var htmlString = "";
    if (isRSSEnabled.match("true") != null) {
        var url = baseUrl + "feed?id=" + guid;

        if (standard.match("true") != null){
            htmlString = "<a href=\"" + url + "\" target='_blank' class='status'>Standard Podcast Link:</a>"+ " " + url+"<br>";
        }

        if (enhanced.match("true") != null){
            url = url + "&feedType=m4b";
            htmlString = htmlString + "<a href=\"" + url + "\" target='_blank' class='status'>Enhanced Podcast Link:</a>"+ " " + url+"<br>";
        }
    }
    else {
        htmlString = htmlString + "Feed Link: RSS Feeds are not enabled.<br>";
    }

    if (isPublicSearchEnabled.match("true") != null){
        htmlString = htmlString + "<a href=\"" + searchUrl + "\" target='_blank' class='status'>Search Link:</a>" + " " + searchUrl;
    }
    else {
        htmlString = htmlString + "Search Link: Public Search is not enabled.";
    }
    document.getElementById("linkId").innerHTML = htmlString;
}

function getAudio(baseUrlFieldId, guid, name, audioFileName) {
    var baseUrlField = document.getElementById(baseUrlFieldId);
    location.href = baseUrlField.value + guid + "/" + name + "_files/" + audioFileName;
}

function getEnhancedAudio(baseUrlFieldId, guid, name, enhancedAudioFileName) {
    var baseUrlField = document.getElementById(baseUrlFieldId);
    location.href = baseUrlField.value + guid + "/" + name + "_files/" + enhancedAudioFileName;
}

function confirmSemesterDelete(id)
{
    var ok = confirm("Click OK to delete this semester");

    if (ok)
    {
        location.href = "semester.jsp?action=delete&id=" + id;
    }
}

function confirmSecurityDelete(id)
{
    var ok = confirm("Click OK to delete this user");

    if (ok)
    {
        location.href = "security.jsp?action=delete&id=" + id;
    }
}

function confirmRegDelete(guid)
{
    var ok = confirm("Click OK to delete this Feed/Search Channel");

    if (ok)
    {
        location.href = "registration.jsp?action=delete&guid=" + guid;
    }
}



