/**
 * @dependsOn application.js
 * @dependsOn jquery.form.js
 * @dependesOn jquery.livequery.js
 */
//$.fn.ajaxSubmit.debug = true;

var WINDOW_SNIPPET_NAME = 'snippet--window';

var spinner = '<div id="dialog"><center><img src="/images/ajax_loader.gif" alt="Pracuji..." /><h2>Pracuji...</h2></center></div>';
var saveSpinner = '<div id="dialog"><center><img src="/images/ajax_loader.gif" alt="Pracuji..." /><h2>Pracuji...</h2></center></div>';

var onSubmitAttribute = "";

var dialogWindow;

/**
 * Inicializace po nahrani fomrualre do dialogu
 *
 * @param window - dialog
 * @param html  - obsah dialogu
 */
function initForm( window, html) {
	window.html('<div id="'+WINDOW_SNIPPET_NAME+'">' + html + '</div>');
	//	$('.datepicker').datepicker({minDate:'+1d'});
	//Odstranim Nettovske onsubmit kontrolu formu }volam ji sam pozdeji...
	//big bastl!!!
	onSubmitAttribute = "";
	onSubmitAttribute = $('#dialog form').attr('onsubmit');
	if(onSubmitAttribute != undefined) {
		onSubmitAttribute = onSubmitAttribute.substr( 7, onSubmitAttribute.length);
	}
	else {
		onSubmitAttribute = true;
	}
	
	$('#dialog form').attr('onsubmit', "");
	//see application.js
	/* @var Application app*/
	app.init();
}


$(function() {
	$('a.selector-ajax-window').live('click', function() {
		var href = $(this).attr('href');
		var title = $(this).attr('title');
		//vytvori dialog
		var createDialog = function( json) {
			if(json.snippets == undefined || json.snippets[ WINDOW_SNIPPET_NAME] == undefined) {
				dialogWindow.html('<strong>Ouuu nasatala neocekavana chyba... Na oprave se pracuje, pockejte prosim. </strong>');
				return false;
			}

			initForm(dialogWindow, json.snippets[ WINDOW_SNIPPET_NAME]);

			$('input[name=cancel]').livequery('click', function() {
				dialogWindow.dialog('close');
				return false;
			});

			$('#dialog form').live('submit', function (e) {
				$(this).ajaxSubmit( {
					global: false,
					success: function( payload, statusText) {
						if (payload.snippets) {
							for (var i in payload.snippets) {

								//-- pokud je obsahem odpovedi ajaxwindow vyklerslim ho a okno necham otevrene...
								if(i == WINDOW_SNIPPET_NAME) {
									initForm(dialogWindow, payload.snippets[i]);
									return;
								}
								$.nette.updateSnippet(i, payload.snippets[i]);
							}
						}
						if(payload.redirect) {
							top.location.href = payload.redirect;
							return;
						}
						app.init();
						$(dialogWindow).dialog('close');
					},
					beforeSubmit: function(formData, jqForm, options) {
						eval('var isValid = ' + onSubmitAttribute);

						if(isValid) {
							$(dialogWindow).html(saveSpinner);
							return true;
						}
						return false;
					}
				});
				// Zabránění odeslání formuláře a vykonání všech dalších navěšených eventů
				e.stopImmediatePropagation();
				return false;
			});			
			return false;
		};

		dialogWindow = $(spinner).dialog({
			modal:true,
			position: ['center', 80],
			title:title,
			width:580,
			autoResize:true,
			close: function(event, ui) {
				$(this).remove();
			}
		});

		$.ajax({
			global: false,
			url: href,
			type: 'get',
			dataType: 'json',
			success: createDialog
		});		
		return false;
	});

	$('a.selector-new-window').live('click', function(event) {
        event.preventDefault();
        window.open($(this).attr('href'));
    });
});



