// usage: log('inside coolFunc', this, arguments);
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
window.log = function(){
  log.history = log.history || [];   // store logs to an array for reference
  log.history.push(arguments);
  arguments.callee = arguments.callee.caller;  
  if(this.console) console.log( Array.prototype.slice.call(arguments) );
};
// make it safe to use console.log always
(function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();)b[a]=b[a]||c})(window.console=window.console||{});


// place any jQuery/helper plugins in here, instead of separate, slower script files.

$.fn.preload = function() {
    this.each(function(){
        $('<img/>')[0].src = this;
    });
}

$.fn.ellipsis = function()
{
        return this.each(function()
        {
                var el = $(this);

                if(el.css("overflow") == "hidden")
                {
                        var text = el.html();
                        var multiline = el.hasClass('multiline');
                        var t = $(this.cloneNode(true))
                                .hide()
                                .css('position', 'absolute')
                                .css('overflow', 'visible')
                                .width(multiline ? el.width() : 'auto')
                                .height(multiline ? 'auto' : el.height())
                                ;

                        el.after(t);

                        function height() { return t.height() > el.height(); };
                        function width() { return t.width() > el.width(); };

                        var func = multiline ? height : width;

                        while (text.length > 0 && func())
                        {
                                text = text.substr(0, text.length - 1);
                                t.html(text + "...");
                        }

                        el.html(t.html());
                        t.remove();
                }
        });
}

