if(afw === undefined){ var afw = {}; }
afw.common = 
{
    functions : 
    {
        addClass : function(oElement, sClassName)
        {
            if(!oElement || sClassName == undefined)
            {
                return false;
            }
            if(!afw.common.functions.classExists(oElement, sClassName))
            {
                if(oElement.className)
                {
                    oElement.className += ' ' + sClassName;
                }
                else
                {
                    oElement.className = sClassName;
                }
            }
            return true;
        }
        ,classExists : function(oElement, sClassName)
        {
            if(!oElement || sClassName == undefined)
            {
                return false;
            }
            if(oElement.className.indexOf(' ') > -1)
            {
                var i, m, aClasses = oElement.className.split(' ');
                for(i = 0, m = aClasses.length; i < m; ++i)
                {
                    if(aClasses[i] == sClassName)
                    {
                        return true;
                    }
                }
            }
            else if(sClassName == oElement.className)
            {
                return true;
            }
            return false;
        }
        ,getClientDimensions : function()
        {
            var res = 
            {
                width : document.documentElement.scrollWidth
                ,height : document.documentElement.scrollHeight
            };
            return res;
        }
        ,getElement : function(sId)
        {
            var oReturn = null;
            if(document.getElementById)
            {
                if(document.getElementById(sId))
                {
                    oReturn = document.getElementById(sId);
                }
            }
            return oReturn;
        }
        ,randomID : function(sPrefix, iLength)
        {
            if(sPrefix == undefined){ sPrefix = ''; }
            if(iLength == undefined){ iLength = 12; }
            var result = '', i, chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''), m = chars.length;
            for(i = 0; i < iLength; ++i)
            {
                if(result === '')
                {
                    result += chars[afw.common.functions.randomNumber(10, m - 1)];
                }
                else
                {
                    result += chars[afw.common.functions.randomNumber(0, m - 1)];
                }
            }
            return sPrefix + result;
        }
        ,randomNumber : function(min, max)
        {
            if(min == undefined){ min = 1; }
            if(max == undefined){ max = 100; }
            return Math.floor(Math.random() * ((max - min) + 1)) + min;
        }
        ,removeClass : function(oElement, sClassName)
        {
            if(!oElement || sClassName == undefined)
            {
                return false;
            }
            var i, m, sNewClasses = '', sClasses = oElement.className;
            if(sClasses.indexOf(' ') != -1)
            {
                var aClasses = sClasses.split(' ');
                for(i = 0, m = aClasses.length; i < m; ++i)
                {
                    if(aClasses[i] != sClassName)
                    {
                        sNewClasses += ' ' + aClasses[i];
                    }
                }
                sNewClasses = (sNewClasses.length > 0 ? sNewClasses.substring(1) : '');
            }
            else
            {
                if(sClasses != sClassName)
                {
                    sNewClasses = sClasses;
                }
            }
            oElement.className = sNewClasses;
            return true;
        }
        ,setOpacity : function(o, i)
        {
            o.style.opacity = i / 100;
            o.style.filter = 'alpha(opacity=' + i + ')';
        }
        ,trim : function(s)
        {
            return s.replace(/^\s+|\s+$/g, '');
        }
    }
    
    ,methods : 
    {
        getElement : function(sId){ var oReturn = null; if(document.getElementById){ if(document.getElementById(sId)){ oReturn = document.getElementById(sId); } } return oReturn; }
        ,setOpacity : function(o, i){ o.style.opacity = i / 100; o.style.filter = 'alpha(opacity=' + i + ')'; }
        ,isEvent : function(o){ return o !== null && typeof o == 'object' && (o.eventPhase !== undefined || o.cancelBubble !== undefined); }
    }
};
afw.module = {};