/**
 * Adjusts font size of page, by adding or removing a wrapper div, with class 'smaller' or 'larger'. The style of these classes is defined in the stylesheet.
 * @auhtor Peter Kruithof
 */

var activeFontSize;

/**
 * Adjusts font size of #body element, using three possible sizes: normal | larger | largest
 * @param e The event passed to this function
 * @return void
 */
function adjustFontSize(e)
{
    var target = getTarget(e);
    var type = target.properties.type;
    var body = document.getElementById('body');

    if (type != undefined) {

        // remove class from previous activeFontSize button
        if (activeFontSize) setClassName(activeFontSize, '');

        // set target as activeFontSize button
        activeFontSize = target;

        // set proper class name
        switch (type) {
            case 'normal': setClassName(body, ''); break;
            case 'larger': setClassName(body, 'larger'); break;
            case 'largest': setClassName(body, 'largest'); break;
            default: setClassName(body, ''); break;
        }

        // set active class name for activeFontSize button
        setClassName(activeFontSize, 'active');
    }
}

/**
 * Contains xendo-specific functions for use on front-end
 * @version $Revision: 1.1.2.1.4.1 $
 */

/**
 * Sets a random banner on a given <a> node with child <img>
 * @param string DOMNode The <a> node to apply banner on
 * @param Array bannerPositionData An array holding banner data for the position
 * @return void
 */
function randomBannerXendo(id, bannerPositionData)
{
    // get banner div
    var bannerDiv = document.getElementById(id);

    // get a random bannerposition
    var bannerWeights = new Array();
    for (var i in bannerPositionData) {
        bannerWeights[i] = bannerPositionData[i].weight;
    }
    var bannerPosition = arrayFactorRand(bannerWeights);

    // get a random bannervisual within the chosen bannerposition
    var visualWeights = new Array();
    for (var j in bannerPositionData[bannerPosition].visuals) {
        visualWeights[j] = bannerPositionData[bannerPosition].visuals[j].weight;
    }
    var visualPosition = arrayFactorRand(visualWeights);

    // get the other variables
    var bannerUrl = bannerPositionData[bannerPosition].url;
    var bannerTitle = bannerPositionData[bannerPosition].title;
    var urlTitle = bannerPositionData[bannerPosition].urltitle;

    if (!(bannerPositionData[bannerPosition] && bannerPositionData[bannerPosition].visuals[visualPosition])) return;

    var visualSrc = bannerPositionData[bannerPosition].visuals[visualPosition].filename;
    var visualTitle = bannerPositionData[bannerPosition].visuals[visualPosition].title;
    var visualWidth = bannerPositionData[bannerPosition].visuals[visualPosition].width;
    var visualHeight = bannerPositionData[bannerPosition].visuals[visualPosition].height;
    var visualType = bannerPositionData[bannerPosition].visuals[visualPosition].type;

    var bannerVisualDiv = document.createElement('div');
    bannerVisualDiv.className = 'bannervisual';

    // create new visual node
    if (visualType == 'application/x-shockwave-flash') {

        // create flash object node
        var objectNode = document.createElement('object');

        objectNode.setAttribute('type', visualType);
        objectNode.setAttribute('width', visualWidth);
        objectNode.setAttribute('height', visualHeight);
        objectNode.setAttribute('data', visualSrc);

        var params = Object();
        params['FlashVars'] = 'clickTAG=' + bannerUrl + '&external=' + ((bannerPositionData[bannerPosition].external == 1) ? 'true' : 'false');
        params['movie'] = visualSrc;
        params['wmode'] = bannerPositionData[bannerPosition].visuals[visualPosition].wmode;
        params['menu'] = bannerPositionData[bannerPosition].visuals[visualPosition].menu;

        var paramNode;

        for (e in params) {
            paramNode = document.createElement('param');
            paramNode.setAttribute('name', e);
            paramNode.setAttribute('value', params[e]);
            objectNode.appendChild(paramNode);
        }

        bannerVisualDiv.appendChild(objectNode);

    } else {
        var anchor = document.createElement('a');
        anchor.setAttribute('href', bannerUrl);

        if (bannerPositionData[bannerPosition].external == 1) {
            anchor.setAttribute('rel', 'external');
            anchor.setAttribute('target', '_blank');
        }

        var img = document.createElement('img');
        img.setAttribute('src', visualSrc);
        img.setAttribute('alt', visualTitle);
        img.setAttribute('width', visualWidth);
        img.setAttribute('height', visualHeight);

        anchor.appendChild(img);

        bannerVisualDiv.appendChild(anchor);
    }

    // append visual div
    bannerDiv.appendChild(bannerVisualDiv);

    // add textual banner
    var anchor = document.createElement('a');
    anchor.setAttribute('href', bannerUrl);
    if (bannerPositionData[bannerPosition].external == 1) {
        anchor.setAttribute('rel', 'external');
        anchor.setAttribute('target', '_blank');
    }

    var span1 = document.createElement('span');
    span1.appendChild(document.createTextNode(bannerTitle));
    anchor.appendChild(span1);

    var span2 = document.createElement('span');
    span2.className = 'more';
    span2.appendChild(document.createTextNode('>>'));
    anchor.appendChild(span2);

    bannerDiv.appendChild(anchor);

}