//tabela na przechowywanie podpiec do dialogBoxa
genericDialogWindowListeners = [];

function cleanGenericDialogWindowListeners(){
	//czysci poprzednie listenery
	console.log("cleanGenericDialogWindowListeners: cleaning "+genericDialogWindowListeners.length +" listeners");
	for ( var i in genericDialogWindowListeners )
	{
		dojo.disconnect(genericDialogWindowListeners[i]);
	} 
	genericDialogWindowListeners = [];
}

/**
 * Shows modal dialog window
 * @param htmlURL Url to load
 * @param title Dialog window title
 * @param callbackFunction function to execute when "OK" button is pressed
 * @param args arguments2 to sent with the request
 * @param formName name of the form to sent with the request
 * @param callbackFunctionOnSuccess function to execute when all operations succeded (ie redirection)
 * @return
 */

function genericDialogLoadWindow(htmlURL, title, callbackFunction, formName, args, callbackFunctionOnSuccess) {
	
    console.log("loadGenericDialogWindow: method called with parameter(htmlURL=" + htmlURL + ",title="+title+")");
    dialogWindow = dijit.byId("genericDialogWindow");
    dialogWindow.titleNode.innerHTML = title;
    if (!args){
    	console.log("loadGenericDialogWindow: GET mode");
	    
	    dojo.xhrGet({
	        url: htmlURL,
	        load: function(response, ioArgs) {
	            console.log("loadGenericDialogWindow: loading data from " + htmlURL);
	            //ladujemy do dialoga dane
	            dialogWindow.destroyDescendants();
	            dialogWindow.setContent(response);
	            dialogWindow.show();
	            //czyscimy listenery i dodajemy nowe
	            cleanGenericDialogWindowListeners();
	            genericDialogWindowListeners[genericDialogWindowListeners.length] = dojo.connect(dialogWindow, 'execute', function(){
	            	if (callbackFunction){
	            		
	            		arguments2 = callbackFunction();
	            		if (arguments2) {
	            			genericDialogLoadWindow(htmlURL, title, callbackFunction, formName, arguments2, callbackFunctionOnSuccess);
                        }
	            	}
	            	else{ 
	            		arguments2 = {};
	            		genericDialogLoadWindow(htmlURL, title, callbackFunction, formName, arguments2, callbackFunctionOnSuccess);
	            	}
	            });
	            return response;
	        },
	        error: function(response, ioArgs) {
	            console.log("loadGenericDialogWindow: error from " + htmlURL);
	            alert("Wystąpił błąd. Został on zgłoszony administratorom.");
	            return response;
	        }
	    });
    }
    else{
    	console.log("loadGenericDialogWindow: POST mode");
    	dojo.xhrPost({
	        url: htmlURL,
	        content: args,
	        form: formName,
	        load: function(response, ioArgs) {
	            console.log("loadGenericDialogWindow: loading data from " + htmlURL);
	            //ladujemy do dialoga dane
	            if(response.length){
	            	
	           
		            dialogWindow.destroyDescendants();
		            dialogWindow.setContent(response);
		            dialogWindow.show();
		            //czyscimy listenery i dodajemy nowe
		            cleanGenericDialogWindowListeners();
		            genericDialogWindowListeners[genericDialogWindowListeners.length] = dojo.connect(dialogWindow, 'execute', function(){
		            	if (callbackFunction){
		            		
		            		arguments2 = callbackFunction();
		            		if (arguments2) {
		            			genericDialogLoadWindow(htmlURL, title, callbackFunction, formName, arguments2, callbackFunctionOnSuccess);
                            }
		            	}
		            	else{ 
		            		arguments2 = {};
		            		genericDialogLoadWindow(htmlURL, title, callbackFunction, formName, arguments2, callbackFunctionOnSuccess);
		            	}
		            
	            	});
	            }
	            else{
	            	if (callbackFunctionOnSuccess){
	            		callbackFunctionOnSuccess();
	            	}
	            	else{
		            	dialogWindow.destroyDescendants();
			            dialogWindow.setContent('Operacja wykonana poprawnie');
			            dialogWindow.show();
	            	}
	            }
	            return response;
	        },
	        error: function(response, ioArgs) {
	            console.log("loadGenericDialogWindow: error from " + htmlURL);
	            alert(response);
	            return response;
	        }
	    });
    }
} 

