var common = new function(){
    var utility = new function(){
        var Browser = new Object();
        var ua = navigator.userAgent.toLowerCase();
        Browser.isMozilla = (typeof document.implementation != 'undefined') && 
            (typeof document.implementation.createDocument != 'undefined') && 
            (typeof HTMLDocument!='undefined');
        Browser.isIE = window.ActiveXObject ? true : false;
        Browser.isFirefox = (ua.indexOf("firefox")!=-1);
        Browser.isSafari = (ua.indexOf("Browser.isSafari")!=-1);
        Browser.isOpera = (typeof window.opera != 'undefined'); 

        return {
            isIE:function(){return navigator.appName == "Microsoft Internet Explorer";}
            ,isSafari:function(){
                return Browser.isSafari;
            }
            ,randomEntry:function(associative_array){
              var assoc = associative_array;
              var count = 0;
              for(key in assoc){count++;}
              var rand = Math.round((Math.random()*count),0);
              var i = 0;
              common.console.info(count);
              for(key in assoc){
                  if(i == rand) return assoc[key];
                  i++;
              }
              return assoc;
          }
          ,browser:Browser,Browser:Browser
          ,openModalWindow:function(url,name){
                if (window.showModalDialog) {
                    window.showModalDialog("xpopupex.htm","name",
                    "dialogWidth:255px;dialogHeight:250px");
                } else {
                    window.open('xpopupex.htm','name',
                    'height=255,width=250,toolbar=no,directories=no,status=no,'+
                    'menubar=no,scrollbars=no,resizable=no ,modal=yes');
                } 
          }
          
        };
    }
    return {
    console:new function(){
        var phonyConsole = new function(){return{
            log:function(){},debug:function(){},info:function(){},
            warn:function(){},error:function(){},assert:function(){},
            dir:function(){},dirxml:function(){},trace:function(){},
            group:function(){},groupCollapsed:function(){},groupEnd:function(){},
            time:function(){},profile:function(){},profileEnd:function(){},
            count:function(){}
        };}
        
        if(typeof(window.console) == "object"){
          if(utility.isSafari()){
            return phonyConsole;
          }
          return window.console;
        }
        return phonyConsole;
    }
    ,utility:utility
       
    
    ,format:new function(){return{
        currency:function(num){
            // http://javascript.internet.com/forms/currency-format.html
            num = num.toString().replace(/\$|\,/g,'');
            if(isNaN(num))
            num = "0";
            var sign = (num == (num = Math.abs(num)));
            num = Math.floor(num*100+0.50000000001);
            var cents = num%100;
            num = Math.floor(num/100).toString();
            if(cents<10)
            cents = "0" + cents;
            for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
            num = num.substring(0,num.length-(4*i+3))+','+
            num.substring(num.length-(4*i+3));
            var ret = (((sign)?'':'-') + '$' + num + '.' + cents);
            if(!sign) ret = "<span style='color:red'>"+ret+"</span>";
            return ret;
        }
    };}

};}

var _ = common;
