/* -------------------------------------------------------------------------- *
 *   Experience Javascript Library (version 1.0b_jQuery)
 *  (c) 2007 Ahmed Saad <ahmeds@users.sourceforge.net>
 *
 *  Experience is freely distributable under the terms of an MIT-style license.
 *  For details, see project website at http://experience.sf.net
 * -------------------------------------------------------------------------- */

// global namespace
var experience  = {
    Version : '1.0b',

    Params : {
        Locale: 'en_US',  /* The language of strings embeded in code is considered the default */
        InterfaceDir: 'ltr'
    },

    /* The interface to the world */
    Core :  {
        initialize : function(userParams){
            experience.Params.merge(userParams);
        }
    },

    ///// PRIVATE FUNCTIONS ////////////////////////////////////////////////

    Console : {
        isEnabled: true,
        log : function(obj){
            if (experience.Console.isEnabled){
                if(window.console){ // Firebug
                    window.console.log(obj);
                } else if (typeof(opera) != "undefined"){
                    opera.postError(Object.inspect(obj));
                } else {
                    alert(Object.inspect(obj));
                }
            }
        }
    },

    // internationalization support 
    tr : function (str, locales){
        if (
            locales[this.Params['Locale']] &&
            typeof(locales[(this.Params['Locale'])[str]]) != 'undefined'
        ) {
            return locales[this.Params['Locale']][str];
        } else {
            return str;
        }
    },

    // browser detection 
    detectBrowser: function (){
        if (navigator.userAgent.indexOf("MSIE 5") != -1){
            return "ie5";
        } else if (navigator.userAgent.indexOf("MSIE 6") != -1){ 
            return "ie6";
        } else if (navigator.userAgent.indexOf("Safari") != -1){
            return "safari";
        } else if (navigator.userAgent.indexOf("Firefox") != -1) {
            return "firefox";
        } else if (navigator.userAgent.indexOf("Opera") != -1) {
            return "opera";
        } else if (navigator.userAgent.indexOf("Konqueror") != -1) {
            return "konqueror";
        }
    },

    detectEngine: function() {
        var browser = experience.detectBrowser();
        if (browser == "ie5" || browser == "ie6"){
            return "trident";
        } else if (navigator.userAgent.indexOf("AppleWebKit") != -1){
            return "webkit";
        } else if (navigator.userAgent.indexOf("KHTML") != -1){
            return "khtml";
        } else if ( navigator.userAgent.indexOf("Gecko") != -1 &&
                    navigator.userAgent.indexOf("like Gecko") == -1 ){
            return "gecko";
        } 
    }
}

