/*
* example
    alert ( domInfo.body.clientWidth() );
    alert ( domInfo.body.clientHeight() );
    alert ( domInfo.body.scrollLeft() );
    alert ( domInfo.body.scrollTop() );
*/
filterResults = function (n_win, n_docel, n_body) {
    var n_result = n_win ? n_win : 0;
    if (n_docel && (!n_result || (n_result > n_docel)))
        n_result = n_docel;
    return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

var domInfo = {
    body : {
        clientWidth : function() {
            return filterResults (
                window.innerWidth ? window.innerWidth : 0,
                document.documentElement ? document.documentElement.clientWidth : 0,
                document.body ? document.body.clientWidth : 0
            )
        },

        clientHeight : function() {
            return filterResults (
                window.innerHeight ? window.innerHeight : 0,
                document.documentElement ? document.documentElement.clientHeight : 0,
                document.body ? document.body.clientHeight : 0
            )
        },
        scrollLeft : function() {
            return filterResults (
                window.pageXOffset ? window.pageXOffset : 0,
                document.documentElement ? document.documentElement.scrollLeft : 0,
                document.body ? document.body.scrollLeft : 0
            )
        },

        scrollTop : function() {
            return filterResults (
                window.pageYOffset ? window.pageYOffset : 0,
                document.documentElement ? document.documentElement.scrollTop : 0,
                document.body ? document.body.scrollTop : 0
            )
        }
    }
}