    /* Utility class that only contains static methods */
    function FileInfoUtils() { }

    /* BEGIN - static members */

    FileInfoUtils.supportedExtensionRE = /\.((css)|(divx)|(doc)|(gif)|(gz)|(iso)|(jpeg)|(jpg)|(js)|(mov)|(mp3)|(mpg)|(pdf)|(png)|(ppt)|(ps)|(rar)|(rtf)|(swf)|(tar)|(tgz)|(txt)|(wav)|(xls)|(xml)|(zip))$/i;
    FileInfoUtils.dotAsFirstCharRE = /^\./;

    FileInfoUtils.selectors = {
            collection: ".fileInfoList",
            item: ".fileInfo",
            itemUrl: "a",
            itemMimeType: ".mimeType"
        };
    /* END - static members */

    /* BEGIN - static methods */
    FileInfoUtils.initAsFileInfo = function(element) {
            var urlElm = null, mimeTypeElm = null;

            try {
                urlElm = cssQuery(FileInfoUtils.selectors["itemUrl"], element)[0];
                mimeTypeElm = cssQuery(FileInfoUtils.selectors["itemMimeType"], element)[0];

                var msg, className;
                try {
                    var extension = urlElm.href
                            .match(FileInfoUtils.supportedExtensionRE)[0]
                            .replace(FileInfoUtils.dotAsFirstCharRE,"").toLowerCase();
                    if(!extension) {
                        throw new Error();
                    }
                    className = extension+"Iconified"+(mimeTypeElm.className?" "+mimeTypeElm.className:"");
                    msg = "."+extension;

                } catch(e) { // no extension
                    className = "htmlIconified"+(mimeTypeElm.className?" "+mimeTypeElm.className:"");
                    msg = "www";

                } finally {
                    mimeTypeElm.className = className;
                    mimeTypeElm.title = msg
                    mimeTypeElm.innerHTML = msg;
                }

            } catch(e) {
                // do nothing
            }

        };

    FileInfoUtils.initAsListOfFileInfo = function(element) {
            var items = cssQuery(FileInfoUtils.selectors["item"], element);
            for(var i=0; i<items.length; i++) {
                FileInfoUtils.initAsFileInfo(items[i]);
            }
        };
    /* END - static methods */


    Behavior.register(
            FileInfoUtils.selectors["collection"],
            function(element) {
                    FileInfoUtils.initAsListOfFileInfo(element);
                } // function
        );
