function ArticleView () {

    // private

    var currentFileName     = '';
    var currentFileIndex    = 0;
    var detailImgId         = 'detailView';
    var fileArray           = new Array();
    var imgObject           = null;
    var srcDir              = '';
    var loadingImg          = '/images/loading.gif';
    var thumbIdBase         = 'thumbImg';

    function getCurrentImage() {
        currentImg          = document.getElementById('detailView');
        return currentImg;
    }

    function setCurrentImg (indexValue) {
        var fileName        = fileArray[indexValue];
        newImage            = new Image();
        newImage.src        = srcDir + fileName
        imgObject           = document.getElementById(detailImgId);
        if (!newImage.complete) {
            imgObject.src   = loadingImg;
        }
        imgObject.src       = newImage.src;
        currentFileIndex    = indexValue;
    }

    function setBorderStyles (newFileIndex) {
        oldThumbObject                      = document.getElementById(thumbIdBase+currentFileIndex);
        newThumbObject                      = document.getElementById(thumbIdBase+newFileIndex);
        oldThumbObject.style.borderTop      = "1px #AB002E solid";
        oldThumbObject.style.borderBottom   = "1px #AB002E solid";
        newThumbObject.style.borderTop      = "5px #AB002E solid";
        newThumbObject.style.borderBottom   = "5px #AB002E solid";
    }

    // public

    this.detailImage = function (userHeight, userWidth) {
        var imgHeight   = '';
        var imgWidth    = '';
        var htmlSrc     = '';
        if (userHeight > 0) imgHeight = ' height="'+ userHeight +'"';
        if (userWidth > 0) imgWidth = ' width="'+ userWidth +'"';
        htmlSrc         = '<img src="/images/loading.gif" border="0" id="' + detailImgId + '" alt=""' + imgHeight + imgWidth + ' />';
        document.writeln(htmlSrc);
    }

    this.init = function (imageArray) {
        for (i = 0; i < imageArray.length; i++ ) {
            fileArray.push(imageArray[i]);
        }
        this.show(0);
    }

    this.printArticle = function () {
        currentArticle  = getCurrentImage();
        PrintView       = window.open(currentArticle.src, "ArticlePrintView", "location=no, menubar=yes, resizable=yes, scrollbars=yes, status=no, toolbar=no");
        PrintView.focus();
        PrintView.print();
    }

    /**
     *  Sets the detail view to the selected image
     *
     *  Usually used in an "onClick"-Parameter, this funtion sets the source
     *  of the detail view image identified by the array index.
     *
     *  @param integer indexValue : Array index of the detail view image
     *  @return void
     */
    this.show = function (indexValue) {
        setBorderStyles(indexValue);
        setCurrentImg(indexValue);
    }

}
