//ąłśłąśłłąś

DialogFactory = (function(){
	var counter = 0;
	
	var makers = {
		alert : function(options){
			var html = '\
				<div id="DialogFactory-dialog-'+counter+'" title="'+options.title+'">\
					<div class="dialogContent" style="font-size: ' + options.fontSize + 'px;">' + options.text +'</div>\
				</div>\
			';

			var buttonsDefinition = typeof(options.buttons) != 'undefined' ? options.buttons  : {		
				'OK': function() {
					$(this).dialog('close');
					if(typeof(options.callbackOK) == 'function'){
						options.callbackOK.apply(this);
					}							
				}
			}
			
			$('body').append(html);
			$('#DialogFactory-dialog-'+counter).dialog({
					bgiframe: true,
					resizable: false,
					position: options.position,
					height: options.height,
					width: options.width,
					closeOnEscape: false,
					modal: options.modal,
					open : typeof(options.openCallback) == 'undefined' ? function() { } : options.openCallback,
					overlay: {
						backgroundColor: '#000',
						opacity: 0.5
					},
					buttons: (function(){ return buttonsDefinition; }).apply(this),
					close : function(){
						$(this).dialog('destroy');
						$(this).remove();
					}
			});
			
			if(typeof(options.ajax) != 'undefined' && typeof(options.ajax.url) != 'undefined' && typeof(options.ajax.method) != 'undefined'){
				(function(){
					var dialogID = '#DialogFactory-dialog-' + counter;
					if(options.ajax.method == 'get'){
						$.get(options.ajax.url, options.ajax.data, function(rawResponse){
							$(dialogID).find('.dialogContent').html(rawResponse);
							options.ajax.callback.apply($(dialogID).get(0));
						});
					}else{
						$.post(options.ajax.url, options.ajax.data, function(rawResponse){
							$(dialogID).find('.dialogContent').html(rawResponse);
							options.ajax.callback.apply($(dialogID).get(0));
						});
					}
				})();
			}
			
			return $('#DialogFactory-dialog-' + counter);
		},
		
		confirm : function(options){			
			var html = '\
				<div id="DialogFactory-dialog-'+counter+'" title="'+options.title+'" style="text-align: center;">\
					<div class="dialogContent" style="font-size: ' + options.fontSize + 'px;">' + options.text +'</div>\
				</div>\
			';			
			$('body').append(html);
			
			$('#DialogFactory-dialog-'+counter).dialog({
					bgiframe: true,
					resizable: false,
					position: options.position,
					height: options.height,
					width: options.width,
					modal: options.modal,
					closeOnEscape: false, 
					overlay: {
						backgroundColor: '#000',
						opacity: 0.5
					},
					buttons: {
						'ANULUJ' : function() {
							if(typeof(options.callbackNo) == 'function'){
								options.callbackNo.apply(this);
							}
							$(this).dialog('close');
						},					
						'OK': function() {
							if(typeof(options.callbackYes) == 'function'){
								options.callbackYes.apply(this);
							}
							$(this).dialog('close');
						}

					}, 
					close : function(){
						$(this).dialog('destroy');
						$(this).remove();
					}
			});
			
			if(typeof(options.ajax) != 'undefined' && typeof(options.ajax.url) != 'undefined'){
				(function(){
					var dialogID = '#DialogFactory-dialog-' + counter;	
						$.get(options.ajax.url, options.ajax.data, function(rawResponse){
							$(dialogID).find('.dialogContent').html(rawResponse);
							options.ajax.callback.apply($(dialogID).get(0));
						});
				})();
			}
			
			return $('#DialogFactory-dialog-'+counter);
			
		},
		loader : function(){
			if($('#DialogFactory-loader').length == 0){
				var html = '\
					<div id="DialogFactory-loader" title="proszę czekać..." style="text-align: center;">\
						<p><center><br /><img src="resources/gfx/loaders/mainLoader.gif"/></center></p>\
					</div>\
				';			
				$('body').append(html);
				$('#DialogFactory-loader').dialog({
						bgiframe: true,
						height:90,
						width: 150,
						modal: true,
						resizable:false,
						draggable:false,
						overlay: {
							backgroundColor: '#000',
							opacity: 0.5
						},
						closeOnEscape: false, 
						 autoOpen: false,
						 minHeight:  30,
						 dialogClass : 'loaderContainer',
						 open: function(event, ui){  $('.loaderContainer').find(".ui-dialog-titlebar-close").remove(); } 					 
				});
			}
			return $('#DialogFactory-loader');
		}		
	}
	
	return {
		get : function(dialogType, options){
			counter++;
			if(typeof(options) == 'undefined'){	options = {};	}
			if(typeof(options.title) == 'undefined'){	options.title = '';	}
			if(typeof(options.icon) == 'undefined'){	options.icon = 'none';	}
			if(typeof(options.fontSize) == 'undefined'){	options.fontSize = '20';	}			
			if(typeof(options.width) == 'undefined'){	options.width = 430;	}
			if(typeof(options.height) == 'undefined'){	options.height = 260;	}	
			if(typeof(options.modal) == 'undefined'){	options.modal = true;	}
			
			//ajax 
			if(typeof(options.ajax) != 'undefined'){
				if(typeof(options.text) == 'undefined'){	options.text = "trwa pobieranie danych ...";	}	
				if(typeof(options.ajax.method) == 'undefined'){	options.ajax.method = 'get';	}	
				if(typeof(options.ajax.data) == 'undefined'){	options.ajax.data = {};	}	
				if(typeof(options.ajax.callback) == 'undefined'){	options.ajax.callback = function(){};	}	
			}
			
			return makers[dialogType](options);
		}
	};
})();
