/*
$.generateId = function() {
return arguments.callee.prefix + arguments.callee.count++;
};
$.generateId.prefix = 'jq$';
$.generateId.count = 0;

$.fn.generateId = function() {
return this.each(function() {
this.id = $.generateId();
});
};*/

var QS = {}; 
(function($) {
    $.fn.extend({
        monitor: function(callback) {
            return this.each(function() {
                var obj = this;
                //Using id as selector
                var selector = "#" + $(obj).attr('id');                
                var orgValue = $(obj).val();
                var inter = 0;
                inter = setInterval(function() {
                    var newValue = $(selector).val();
                    if (orgValue != newValue) {
                        clearInterval(inter);
                        callback.apply(this, [newValue]);
                    }
                }, 75);
            });
        },


        quickEntry: function(config) {
            var defaults = config || {};
            var isPanelActive = false;
            var lastPanel = {};

            return this.each(function() {
                var obj = this;

                //Show hide links
                $(obj).hover(function() {
                    var headings = $('.editLinks', this);

                    $(headings).removeClass("hidden");
                    $(headings).addClass("visible");

                }, function() {
                    var headings = $('.editLinks', this);

                    $(headings).removeClass("visible");
                    $(headings).addClass("hidden");
                });

                var entry = $(".quickEntry", obj);

                // ".quickEntry"
                var panel = {
                    activator: $(".quickEntryActivator", entry),
                    deactivator: $(".quickEntryDeActivator", entry),
                    editor: $(".quickEntryEditor", entry),
                    content: $(".quickEntryContent", entry)
                };

                panel.activator.click(function(e) {
                    e.preventDefault();
                    if (isPanelActive) {//Restore last panel
                        $(lastPanel.editor).hide();
                        $(lastPanel.content).show();
                    }
                    $(panel.content).hide();
                    $(panel.editor).show();
                    isPanelActive = true;
                    lastPanel = panel;
                });

                panel.deactivator.click(function(e) {
                    e.preventDefault();
                    $(panel.editor).hide();
                    $(panel.content).show();
                    isPanelActive = false;
                });

            })
        }
    });

})(jQuery);

$(function(){
  $("#journal-list > li").quickEntry();
});


QS.Dom = (function() {
    return {
        /**
        * Crossbrowser function to simulate click event on a component
        */
        fireEventClick: function(obj) {
            var elem = obj;
            if (typeof (obj) == "string") {
                elem = document.getElementById(obj);
            }
           
            if (elem == null || elem == 'undefined') {
                console.info("fireEventClick:Passed element is null");
                return;
            }

            if (document.createEvent) {
                var e = document.createEvent('MouseEvents');
                e.initMouseEvent('click', /* Event type */
                true, /* Can bubble */
                true, /* Cancelable */
                document.defaultView, /* View */
                1, /* Mouse clicks */
                0, /* Screen x */
                0, /* Screen y */
                0, /* Client x */
                0, /* Client y */
                false, /* Ctrl */
                false, /* Alt */
                false, /* Shift */
                false, /* Meta */
                0, /* Button */
                null); /* Related target */
                elem.dispatchEvent(e);
            } else {//IE Specific
                elem.click();
            }
        }
    }
})();
        