var KV3;

if (!KV3) KV3 = {};

if (!KV3.Debug) {
    KV3.Debug = {
		echoOn: false,
        container: 'debug',
        containerID: function () {
            return '#' + this.container;
        },
        setContainer: function (container) {
            this.container = container;
        },
		dateString: function () {
			var currentDate = new Date();
			return '[' + currentDate.toString() + '] ';
		},
        init: function () {
            var initialMessage = this.dateString() + 'Initializing debug';
            try {
                air.trace(initialMessage);
            } catch(err) {
                try {
                    console.log(initialMessage);
                } catch (err) {
					if (KV3.Debug.echoOn) {
	                    if (jQuery(this.container).length == 0) {
	                        jQuery(document.body).prepend('<pre id="' + this.container + '"></pre>');
	                    }
	                    jQuery(this.containerID()).html(initialMessage);
					}
                }
            }
        },
        message: function (message, clear) {
            message = this.dateString()  + message;
            try {
                air.trace(message);
            } catch(err) {
                try {
                    console.log(message);
                } catch(err) {
					if (KV3.Debug.echoOn) {
	                    if (!clear) message += '<hr/>' + jQuery(this.containerID()).html();
	                    jQuery(this.containerID()).html(message);
					}
                }
            }
        },
		error: function (message, err) {
			this.message(message + ' - ERROR - ' + err.message);
			if (err.description)
				this.message(message + ' - ERROR - ' + err.description);
			if (err.details)
				this.message(message + ' - ERROR - ' + err.details);
			if (err.operation)
				this.message(message + ' - ERROR - ' + err.operation);
		}
    };
}
