var CMS_sizeclasses = {xs: {minus: null, plus: 'sm'},
                          sm: {minus: 'xs', plus: 'md'},
                          md: {minus: 'sm', plus: 'lg'},
                          lg: {minus: 'md', plus: 'xl'},
                          xl: {minus: 'lg', plus: null}}

var CMS_bt_fonts = {georgia: 1};

function CMS_validate_fprefs(textclass) {

    var textclasses = textclass.split(' ');
    var fontclass   = textclasses[0];
    var sizeclass   = textclasses[1];

    if ( typeof fontclass == "undefined" ||
         typeof sizeclass == "undefined" ||
         typeof CMS_sizeclasses[sizeclass] == "undefined" ||
         typeof CMS_bt_fonts[fontclass] == "undefined" ) {
        return null;
    }
    return {fc: fontclass,
            sc: sizeclass};
}

// returns an object that contains the
// bodytext element and the current fontclass and size class
// of that element. All error checking is done
// here.
function CMS_getbodytext_obj () {
    var textel   = document.getElementById('zoomTxt');

    if ( typeof textel == "undefined" ||
         typeof textel.className == "undefined" ) {
        return null;
    }

    var c_obj = CMS_validate_fprefs(textel.className);
    if ( c_obj == null ) {
        return null;
    }
    return {el: textel,
                    fc: c_obj.fc,
                    sc: c_obj.sc};
}

// change font size
function CMS_chsize(direction) {
    var c_obj = CMS_getbodytext_obj();

    if ( c_obj == null ||
         CMS_sizeclasses[c_obj.sc][direction] == null ) {
        return;
    }

    var tc = c_obj.fc + ' ' +  CMS_sizeclasses[c_obj.sc][direction];
    c_obj.el.className = tc;
}

function CMS_setsize(sizeclass) {
    var c_obj = CMS_getbodytext_obj();

    if ( c_obj == null ||
         typeof CMS_sizeclasses[sizeclass] == "undefined" ) {
        return;
    }

    c_obj.el.className = c_obj.fc + ' ' +  sizeclass;
}