/* cp.js - course planner related javascript
   Copyright (c) The University of Adelaide, 2005
 */

// used on the search form to show or hide the advanced search options
function toggleAdvanced () {
    if (!document.getElementById) {
        return false;
    }
    var advanced = document.getElementById('advanced');
    if (advanced.style.display == 'none') {
        showAdvanced();
    }
    else {
        hideAdvanced();
    }
    return false;
}

// hide the advanced search form
function hideAdvanced () {
    var advanced = document.getElementById('advanced');
    var link = document.getElementById('adv0');
    if (document.getElementById) {
        advanced.style.display = 'none';
        link.innerHTML = '&raquo; More Options';
    }
}

// show the advanced search form
function showAdvanced () {
    var advanced = document.getElementById('advanced');
    var link = document.getElementById('adv0');
    if (document.getElementById) {
        advanced.style.display = 'block';
        link.innerHTML = '&laquo; Less Options';
    }
}

// return true if the submission any fields in the "advanced" section are non-default
function advancedSettings () {
    if (!document.getElementById) {
        return true;
    }
    var cps = document.getElementById('cps');
    if (cps) {
        if (cps['term'].value != "" || cps['career'].value != "" || cps['campus'].value != "" || cps['sort'].value != "") {
            return true;
        } else if (cps['class'] && cps['class'].value != "") {
            return true;
        } else {
            return false;
        }
    }
    return true;
}

// used to hide/show bits and pieces on the details page
// arguments:
//  linkid      ID of link element which toggles the data
//  sectid      ID of element to hide/show
//  hidetext    Text of link when item is shown
//  showtext    Text of link when item is hidden
function toggleSection (linkid, sectid, hidetext, showtext) {
    if (!document.getElementById) {
        return false;
    }
    var linkel = document.getElementById(linkid);
    var sectel = document.getElementById(sectid);
    if (sectel.style.display == 'none') {
        // show data
        sectel.style.display = 'block';
        linkel.innerHTML = hidetext;
    }
    else {
        // hide data
        sectel.style.display = 'none';
        linkel.innerHTML = showtext;
    }
    return false;
}

// show an elemet by name
function show (id) {
    var tbl = document.getElementById(id);
    tbl.style.display = 'block';
}

// hide an element by name
function hide (id) {
    var tbl = document.getElementById(id);
    tbl.style.display = 'none';
}

// search form validation
// make sure there is at least one of:
//  a subject area
//  3 or more letters in course title
//  a class number (if the schedule is available)
// otherwise the search will return too many results
function verifyForm (f) {
    if (f['title'].value.length >= 3) {
        return true;
    }
    if (f['subject'].options[f['subject'].selectedIndex].value != "") {
        return true;
    }
    if (f['class'] && f['class'].value != "") {
        return true;
    }
    if (f['title'].value.length >= 1) {
        alert("Please enter at least one three-letter word in the course title field.");
        return false;
    }
    alert("Please either select a subject area, or enter a course title or class number.");
    return false;
}

// Fee calculator functions
// Calculations are indications only, can depend on all sort of complicated
// conditions.

// recalculate fees based on changed payment option
// option is stashed in a cookie for your convenience
function calculateFees (fees, terms, opt) {
    var type, r, cell, thisTerm, charge, total;
    var subtotal = Array();
    if (fees.length == 0) {
        return;
    }
    if (opt == "CSSPRE2005") {
        type = 2;
    } else if (opt == "CSSNEW2005") {
        type = 3;
    } else if (opt == "TUILOC") {
        type = 4;
    } else if (opt == "TUIINT") {
        type = 5;
    } else {
        type = -1;
    }
    document.cookie = 'cpfo=' + opt;
    total = 0;
    for (r = 0; r < terms.length; r++) {
        subtotal[terms[r]] = 0;
    }
    for (r = 0; r < fees.length; r++) {
        cell = document.getElementById("fee" + r);
        if (type == -1) {
            cell.innerHTML = "&nbsp;";
        } else {
            if (fees[r][type] == "na") {
                cell.innerHTML = "<em>Not Available</em>";
            } else {
                charge = fees[r][type] * fees[r][1];
                cell.innerHTML = "$" + Math.floor(charge);
                total += charge;
                subtotal[fees[r][0]] += charge;
            }
        }
    }
    for (r = 0; r < terms.length; r++) {
        cell = document.getElementById("subtotal" + terms[r]);
        cell.innerHTML = "$" + Math.floor(subtotal[terms[r]]);
    }
    cell = document.getElementById("feetotal");
    if (type == -1) {
        cell.innerHTML = "&nbsp;";
    } else {
        cell.innerHTML = "$" + Math.floor(total);
    }
}

