var Cms = Cms || {};

Cms.debug = (document.cookie.indexOf('cms-debug') != -1);

$(function(){

	if (!Cms.debug) return;

	var ajax = $('<div id="cms-ajax"></div>').appendTo('body');
	var ajaxTimeout = null;
	var ajaxWait = 3000;

	function logAjax(action, text, cls){

		var div = $('<div><strong>' + action + '</strong>: ' + text + '</div>');
		if (cls) div.addClass('cms-ajax-' + cls);

		div.appendTo(ajax).delay(ajaxWait).slideUp();
		
	}

	/**
	 * Sequence:
	 * Start
	 * Send
	 * Success
	 * Complete
	 * Stop
	 */
	$(document).ajaxStart(function(){

		//logAjax('Start', '', false);
		clearTimeout(ajaxTimeout);
		ajax.stop().show().css({opacity: 1});

	}).ajaxSend(function(event, XMLHttpRequest, ajaxOptions){

		logAjax('Send', ajaxOptions.url, false);

	}).ajaxSuccess(function(event, XMLHttpRequest, ajaxOptions){

		logAjax('Success', ajaxOptions.url, 'success');

	}).ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError){

		logAjax('Error', ajaxOptions.url, 'error');
		logAjax('Error', XMLHttpRequest.statusText + ', ' + thrownError, 'error');

	}).ajaxComplete(function(event, XMLHttpRequest, ajaxOptions){

		logAjax('Complete', ajaxOptions.url, false);

	}).ajaxStop(function(){

		//logAjax('Stop', '', false);
		clearTimeout(ajaxTimeout);
		ajaxTimeout = setTimeout(function(){
			ajax.stop().css({opacity: 1}).fadeOut();
		}, ajaxWait + 100);

	});

});
