
(function($) {
	var error = {
			elms: new Array(),
			checkInterval: 500,
			countdown: true,
			effectSpeed: 600,
			countElms: 0
	},
	errorCloseElm = function(elm) {
		if(typeof error.elms[elm] == "undefined") return;
		
		options = {};
		$(elm).hide('blind', options, error.effectSpeed, function() {
			$(elm).remove();
			delete(error.elms[elm]);
			error.countElms--;
			errorContainerVisibleCheck();
		});		
	},
	errorInitTimer = function(elm, time) {
		error.elms[elm] = time;
		error.countElms++;
		errorContainerVisibleCheck();
		errorCountdown(elm);
	},
	errorContainerVisibleCheck = function() {
		options = {};
		if(error.countElms == 0) {
			$('#errorContainer').hide();
		} else if(error.countElms > 0) {
			$('#errorContainer').show();
		}
	},
	errorCountdown = function(elm) {
		if(typeof error.elms[elm] == "undefined") return;
		
		if(error.countdown) {
			error.elms[elm] -= error.checkInterval;
			if(error.elms[elm] <= 0) {
				errorCloseElm(elm);
				return true;
			}
		}
		
		setTimeout(function(){
			errorCountdown(elm);
		}, error.checkInterval);
	},
	errorAbortCountdown = function(elm) {
		if(typeof error.elms[elm] == "undefined") return;
		error.elms[elm] = 0;
		errorCloseElm(elm);
	},
	errorStopCountdown = function() {
		error.countdown = false;
	},
	errorStartCountdown = function() {
		error.countdown = true;
	};
	
	$.error.create = function(string, type, time) {
		if(time == undefined) time = 4000;
		
		// main div
		var e = $(document.createElement('div'));
		var randomID = Math.floor(Math.random()*1000);
		randomID = 'errorDivID_'+randomID;
		e.attr('id', randomID);
		e.addClass('errorCode');
		e.addClass(type);
		
		randomID = '#' + randomID;

		// header text
		if(type == 'fail') {
			errorHeader = 'Achtung';
		} else if(type == 'succes') {
			errorHeader = 'Bestätigung';
		} else if(type == 'info') {
			errorHeader = 'Information';
		} else {
			errorHeader = 'Hinweis';
		}
		
		// close div
		appendDiv = '<div class="errorClose"><a href="JavaScript:void(0);" onclick="$.error.close(\'' + randomID + '\');"><img src="' + OE_IMG_DIR + '/error/close.png"></a></div>';
		appendDiv += '<div class="errorWrapper">';
		appendDiv += '<div class="errorImg"><img src="' + OE_IMG_DIR + '/error/btn_' + type + '.png"></div>';
		appendDiv += '<div class="errorHeader">' + errorHeader + '</div>';
		appendDiv += '<div class="clr"></div>';
		appendDiv += '<div class="errorMessage">' + string + '</div>';
		appendDiv += '</div>';
		e.append(appendDiv);
		
		$('#errorContainer').append(e);
		
		$.error.add(randomID, time);
	}
	
	$.error.closeAll = function() {
		errorCloseAllElm();
	}
	
	$.error.close = function(id) {
		errorAbortCountdown(id);
	}
	
	$.error.add = function(id, time) {
		errorInitTimer(id, time);
	}
	
	$.error.init = function() {
		var e = $(document.createElement('div'));
		e.attr('id', 'errorContainer')
		.addClass('errorContainer ui-corner-all')
		.attr('style', 'display: none;')
		.mouseover(function() {
			errorStopCountdown();
		})
		.mouseout(function() {
			errorStartCountdown();
		});

		$('body').append(e);
	}

	$(document).ready(function() {
		$.error.init();
	});
})(jQuery);
