var core = {};

// SETTINGS

core.settings = {
    debug:false
};

// BROWSER

core.browser = {
	msie:false,
	msie6:false,
	msie7:false,

	init: function() {
		this.msie = (navigator.userAgent.toLowerCase().indexOf("msie")!=-1)?true:false;
		this.msie6 = (navigator.userAgent.toLowerCase().indexOf("msie 6.")!=-1)?true:false;
		this.msie7 = (navigator.userAgent.toLowerCase().indexOf("msie 7.")!=-1)?true:false;
	}
};

jQuery(document).ready(function() {
	core.browser.init();	
});

// LOGGER

core.logger = {
	data:{},
	count:0,
	lastTime:0,
	
    init: function() {
        var html = '';
		html += '<div id="coreLogger">';
            html += '<div id="coreLoggerControls">';
			    html += '<strong>Log</strong>';
                html += '<div id="coreLoggerLinks">';
				    html += '<a href="javascript:core.logger.clear();" id="coreLoggerLinksClear">Clear</a>';
				    html += '<a href="javascript:core.logger.hide();" id="coreLoggerLinksHide">Hide</a>';
                    html += '<a href="javascript:core.logger.show();" id="coreLoggerLinksShow">Show</a>';
				html += '</div>';
			html += '</div>';
            html += '<div id="coreLoggerMessages"></div>';
        html += '</div>';
        
        jQuery('body').append(html);
		
		try {
			var cookie = jQuery.cookie('coreLogger');
			
			if(cookie) {
				if(cookie==1) {
					this.show();
				}
				else {
					this.hide();
				};
			}
			else {
				this.hide();
			};
		}
		catch(e) {
			this.show();
		};
    },
	
	clear: function() {
		jQuery('#coreLoggerMessages').html('');
		this.count = 0;
	},
	
	show: function() {
		jQuery('#coreLoggerLinksShow').hide();
        jQuery('#coreLoggerLinksHide').show();
		jQuery('#coreLoggerMessages').show();
		
        try { jQuery.cookie('coreLogger',1); } catch(e) {};
	},

    hide: function() {
		jQuery('#coreLoggerLinksHide').hide();
        jQuery('#coreLoggerLinksShow').show();
		jQuery('#coreLoggerMessages').hide();
		
		try { jQuery.cookie('coreLogger',0); } catch(e) {};
    },
	
	info: function(count) {
		var win = window.open();
		win.document.write(JSON.stringify(this.data[count]).replace(/{/g,'<br />{<br />').replace(/}/g,'<br />}<br />'));
	},

    logDate: function() {
        var html = '';
        html += '<div class="coreLoggerDate>';
		html += new Date();
        html += '</div>';
        
        jQuery('#coreLoggerMessages').append(html);
	},
    
    logEntry: function(type, msg, obj) {
		if (core.settings.debug) {
			this.count++;
			
			var time = new Date().getTime();
			
			if (time - this.lastTime > 5000) {
				this.logDate();
			};
			
			var html = '';
			html += '<div class="coreLoggerMessage ' + type + '">';
			html += '<span class="coreLoggerMessageCount">' + this.count + '</span>';
			html += '<span class="coreLoggerMessageMessage">' + msg + '</span>';
			
			if (obj && JSON) {
				html += '<span class="coreLoggerMessageData"><a href="javascript:core.logger.info(' + this.count + ');">Info</a></span>';
				
				this.data[this.count] = obj;
			};
			html += '</div>';
			
			jQuery('#coreLoggerMessages').append(html);
			
			var obj = jQuery('#coreLoggerMessages')[0];
			obj.scrollTop = obj.scrollHeight;
			
			this.lastTime = time;
		};
    },
    
    logInfo: function(msg, obj) {
        core.logger.logEntry('coreLoggerInfo', msg, obj);
    },
    
    logError: function(msg, obj) {
        core.logger.logEntry('coreLoggerError', msg, obj);
    }
};

jQuery(document).ready(function() {
	if(core.settings.debug) {
	    core.logger.init();	
	};
});
