//ąłśłąśłłąś

//alert = console.log;


function AppController(){
	var MO = this;
	var refLoader = null;
	this.queryData = [];
	
	//kontrolery
	this.controllers = [];
	
	this.init = function(){
		MO.queryData = parseQueryString(window.location.search.substr(1));
		setAjaxErrorHandler();
		refLoader = DialogFactory.get('loader');
		initControllers();
		collapsableBoxes();
		$('#fakeBody').show();
		$('#initialLoadingInfo').remove();		
	};
	
	
	/** pokoazuje/chowa loader*/
	this.toggleLoader = function(b){
		if(b){
			refLoader.dialog('open');
		} else {
			refLoader.dialog('close');
		}
	};
	
	/** rejestracja kontrolera */
	this.registerController = function(callback){
		MO.controllers.push(callback);
	};		
	
	/** inicjowanie kontrolerów */
	var initControllers = function(){

		for(var f in MO.controllers){
			MO.controllers[f].init();
		}		
	};
	
	
	var setAjaxErrorHandler = function(){
		$("body").ajaxError(function(event, request, settings){
			MO.toggleLoader(false);
			if(request.status == 503){
				//DialogFactory.get('alert', { text: 'Usługa czasowo niedostępna.' });
			} else if(request.status == 401){
				//DialogFactory.get('alert', { text: 'Sesja użytkownika wygasła.<br/>Zaraz nastąpi przekierowanie na stronę logowania.', callbackOK : function(){
					window.location.reload();
				//} });
			} else if(request.status == 0){
				//DialogFactory.get('alert', { text: 'Nie można nawiązać połaczenia z serwerem.<br/> Sprawdź czy masz dostęp do Internetu.' });
			} else {
				//DialogFactory.get('alert', { text: 'Wystapił problem podczas połączenia z serwerem.' });
			}	   
		});
	};
	
	
    var parseQueryString = function(s) {
        var r, a, p;
        r = {};
        a = s.split('&');
        for (i = 0; i < a.length; i++) {
            p = a[i].split('=');
            if (p.length === 2 && p[0].length > 0) {
                r[p[0]] = unescape(p[1]);
            }
        }
        return r;
    };
    
    
	var collapsableBoxes = function(){	
		
		$('div.boxCollapsable').each(function(){
			var box = $(this);
			var html = '<div class="boxCollapseB">-</div>';
			box.find('.boxHeader').append(html);
			box.find('.boxCollapseB').click(function(){
				box.find('.boxBody').toggle();
				if(box.find('.boxBody:visible').length > 0){
					box.find('.boxCollapseB').html('-');
				} else {
					box.find('.boxCollapseB').html('+');
				}
			});
		});
		
		$('div.boxCollapsed').find('.boxBody').hide();
		$('div.boxCollapsed').find('.boxCollapseB').html('+');
	};    
		
}

var AC = new AppController();

$(function(){
	AC.init();
});
