/**
 * Tutaj tworzymy obiekt i jego puste metody, ktore nizej definiujemy
 */
var CNewsletter = {
	onInit: function() {},
	onAddEmail: function() {},
	onAddEmail: function() {},
	clearFields: function() {},
	doDebug: function() {}
};

// metoda inicjalizacji; może wykorzystywać inne biblioteki
// ale wtedy trzeba zadbać o to, aby w przypadku braku tych bibliotek
// powiadomić użytkownika

/**
 * Inicjacja. Odpalana za każdym razem, gdy ten plik jest dołączany
 *
 * Definiuje tutaj obsługę pewnych zdarzeń za pomocą jQuery. Tutaj jest łatwiej niż bezpośrednio w dokumencie.
 *
 */
CNewsletter.onInit = function() {
};

////////////////////////////////////////////////////////
// metody oparte nie wykorzystujące żadnych bibliotek
////////////////////////////////////////////////////////

//brak takich metod poki co

//////////////////////////////////////////////////////////////////
// "kontroler" jQuery i metody, które korzystają z tej biblioteki
//////////////////////////////////////////////////////////////////
if( typeof(jQuery) == 'function' ) {
	//taki jakby kontroler jQuery
	jQuery(document).ready(function() {
		//klikniecie w przycisk "Dodaj/usun email"
		//powoduje wywolanie AJAXowego dodawania/usuwania 
		//emaila do newslettera; 
		jQuery("#newsletter-add-button").click( CNewsletter.onAddEmail );
		jQuery("#newsletter-del-button").click( CNewsletter.onDelEmail );
	});
	
	//////////////////
	//metody jQuery
	//////////////////
	
	/**
	 * Metoda zdarzenia klikniecia na przycisk "Dodaj e-mail"
	 * 
	 * Uruchamia AJAXowa metode dodawania e-maila do newslettera
	 */
	CNewsletter.onAddEmail = function() {
		if( typeof(CConfig) == 'undefined' ) {
		//brak pliku konfiguracji JS
			alert('Błąd: Brak pliku konfiguracyjnego JavaScript');
			return false;
		}
		
		if( typeof(CConfig.ajaxEvents) == 'string' && CConfig.ajaxEvents.search("do-add-newsletter") != -1 ) {
		//jesli główny modul AJAX obsluguje to zdarzenie, to wykonaj zapytanie AJAX
			var hForm, hEmailIF, hSpanErr, hSpanMsg, 
				sEmail, hListaIF, sLista, hLangIF, sLang, hOperacjaIF;
			
			//element span z informacjami
			var hSpan = jQuery('#ajax-newsletter');
			hSpan.hide();
			
			//loader
			var hLoader = jQuery('#ajax-loader');
			hLoader.hide();
			
			//obiekt jQuery formularza
			hForm = jQuery("#form-newsletter");
			hEmailIF = hForm.find("input[name='nl_email']"); //uchwyt do pola input
			sEmail = hEmailIF.val();
			
			hListaIF = hForm.find("input[name='nl_lista']"); //uchwyt do pola input
			sLista = hListaIF.val();
			
			hLangIF = hForm.find("input[name='nl_lang']"); //uchwyt do pola input
			sLang = hLangIF.val();
			jQuery.ajax({
				type: "POST",
				url: CConfig.WWW+"/index.php/"+lang+"/ajax/do-add-newsletter",
				data: {email: sEmail, lista: sLista, lang: sLang}, 
				beforeSend: function() {
					hLoader.show('slow');
				},
				success: function(sResponse) {
					//alert('sResponse: ' + sResponse);
					
					if (sResponse=="") {
						hOperacjaIF = hForm.find("input[name='nl_operacja']"); //uchwyt do pola input
						hOperacjaIF.val('add');
						hForm.submit();
					} else {
						hSpan.html("");
						hLoader.hide('slow');
						hSpan.append(sResponse);
						hSpan.show('slow');
						aFields = new Array(hEmailIF);
						CNewsletter.clearFields(aFields);
					}					
				}
			});
			
			return false;
		} else {
		//mozna tutaj uzyc jakiegos innego rozwiazania, jesli glowny modul AJAX nie obsluguje
		//zapytania ajax -- np. mozna wyslac zapytanie AJAX do zdarzenia obslugiwanego przez
		//obecny modul albo po prostu debuggowac w ten sposob lub poinformowac uzytkownika,
		//ze cos jest nie tak
			alert('Błąd: ajax-newsletter.js - Próba wysłania zapytania AJAX zakończona niepowodzeniem (do-add-newsletter)');
		}
		
		return false;
	};
	
	
	
	/**
	 * Metoda zdarzenia klikniecia na przycisk "Usuń e-mail z newslettera"
	 * 
	 * Uruchamia AJAXowa metode usuwania e-maila do newslettera
	 */
	CNewsletter.onDelEmail = function() {
		if( typeof(CConfig) == 'undefined' ) {
		//brak pliku konfiguracji JS
			alert('Błąd: Brak pliku konfiguracyjnego JavaScript');
			return false;
		}
		
		if( typeof(CConfig.ajaxEvents) == 'string' && CConfig.ajaxEvents.search("do-del-newsletter") != -1 ) {
		//jesli główny modul AJAX obsluguje to zdarzenie, to wykonaj zapytanie AJAX
			var hForm, hEmailIF, hSpanErr, hSpanMsg, 
				sEmail, hListaIF, sLista, hLangIF, sLang, hOperacjaIF;
			
			//element span z informacjami
			var hSpan = jQuery('#ajax-newsletter');
			hSpan.hide();
			
			//loader
			var hLoader = jQuery('#ajax-loader');
			hLoader.hide();
			
			//obiekt jQuery formularza
			hForm = jQuery("#form-newsletter");
			hEmailIF = hForm.find("input[name='nl_email']"); //uchwyt do pola input
			sEmail = hEmailIF.val();
			
			hListaIF = hForm.find("input[name='nl_lista']"); //uchwyt do pola input
			sLista = hListaIF.val();
			
			hLangIF = hForm.find("input[name='nl_lang']"); //uchwyt do pola input
			sLang = hLangIF.val();
			
			jQuery.ajax({
				type: "POST",
				url: CConfig.WWW+"/index.php/"+lang+"/ajax/do-del-newsletter",
				data: {email: sEmail, lista: sLista, lang: sLang}, 
				beforeSend: function() {
					hLoader.show('slow');
				},
				success: function(sResponse) {
					//alert('sResponse: ' + sResponse);
					
					if (sResponse=="") {
						hOperacjaIF = hForm.find("input[name='nl_operacja']"); //uchwyt do pola input
						hOperacjaIF.val('del');
						hForm.submit();
					} else {
						hSpan.html("");
						hLoader.hide('slow');
						hSpan.append(sResponse);
						hSpan.show('slow');
						aFields = new Array(hEmailIF);
						CNewsletter.clearFields(aFields);
					}
				}
			});
			
			return false;
		} else {
		//mozna tutaj uzyc jakiegos innego rozwiazania, jesli glowny modul AJAX nie obsluguje
		//zapytania ajax -- np. mozna wyslac zapytanie AJAX do zdarzenia obslugiwanego przez
		//obecny modul albo po prostu debuggowac w ten sposob lub poinformowac uzytkownika,
		//ze cos jest nie tak
			alert('Błąd: ajax-newsletter.js - Próba wysłania zapytania AJAX zakończona niepowodzeniem (do-del-newsletter)');
		}
		
		return false;
	};
	
	/**
	 * Czysci pola formularza
	 *
	 * @param Array aFields tablica z uchwytami do pol (input field/textarea), ktore maja byc wyczyszczone 	 
	 */
	CNewsletter.clearFields = function(aFields) {
		if( typeof(aFields) == 'object' || typeof(aFields) == 'Array' ) {
			jQuery.each( aFields, function(key, val) {
				val.val("");
			});
		} else {
			alert('typeof(aFields): ' + typeof(aFields) );
		}
	}
	
	/**
	 * Prosta metoda debugująca
	 * 
	 * @param Handler hObj uchwyt do obiektu, tablicy, której elementy mają być wyświetlone
	 * @param Integer iDepth ilość zapętleń
	 */
	CNewsletter.doDebug = function(hObj, iDepth) {
		var msg = '';
		
		jQuery.each( hObj, function(i, j) {
			msg += i+": "+j+"\r\n";
			
			if( iDepth >= 1 ) {
				jQuery.each( j, function(k, l) {
					msg += k+": "+l+"\r\n";
					
					if( iDepth >= 2 ) {
						jQuery.each( l, function(m, n) {
							msg += m+": "+n+"\r\n";
						});
					}
				});
			}
		});
		
		alert(msg);
	};
	
} else {
	alert('BŁĄD KRYTYCZNY!\r\nBrak biblioteki jQuery. Część elementów może nie działać.');
}

///////////////////////////
//Uruchomienie inicjacji
///////////////////////////
// CNewsletter.onInit(); //na razie tego nie potrzebujemy w tym konkretnym przypadku