/**
 * AJAX Nette Framework plugin for jQuery
 *
 * @copyright   Copyright (c) 2009 Jan Marek
 * @license     MIT
 * @link        http://addons.nette.org/cs/jquery-ajax
 * @version     0.2
 */


if (typeof jQuery != 'function') {
	alert('jQuery was not loaded');
}
/*
// ajax spinner
$(function () {
	$('<div id="ajax-spinner"></div>').hide().appendTo("body").ajaxStop(function () {
		$("#ajax-spinner").hide(200);
	});
});
*/

/**
 * AJAX form plugin for jQuery
 *
 * @copyright  Copyright (c) 2009 Jan Marek
 * @license    MIT
 * @link       http://nettephp.com/cs/extras/ajax-form
 * @version    0.1
 */

jQuery.fn.extend({
	ajaxSubmit: function (callback) {
		var form;
		var sendValues = {};

		// submit button
		if (this.is(":submit")) {
			form = this.parents("form");
			sendValues[this.attr("name")] = this.val() || "";

		// form
		} else if (this.is("form")) {
			form = this;

		// invalid element, do nothing
		} else {
			return null;
		}

		// validation
		if (form.get(0).onsubmit && !form.get(0).onsubmit()) return null;

		// get values
		var values = form.serializeArray();

		for (var i = 0; i < values.length; i++) {
			var name = values[i].name;

			// multi
			if (name in sendValues) {
				var val = sendValues[name];

				if (!(val instanceof Array)) {
					val = [val];
				}

				val.push(values[i].value);
				sendValues[name] = val;
			} else {
				sendValues[name] = values[i].value;
			}
		}

		// send ajax request
		var ajaxOptions = {
			url: form.attr("action"),
			data: sendValues,
			type: form.attr("method") || "get"
		};

		if (callback) {
			ajaxOptions.success = callback;
		}

		return jQuery.ajax(ajaxOptions);
	}
});


/*
$(function () {
	$('<div id="ajax-spinner"></div>').hide().ajaxStart(function () {
		$(this).show();
	}).ajaxStop(function () {
		$(this).hide();
	}).appendTo("body");
});

	$(function () {
		// vhodnÄ› nastylovanÃ½ div vloÅ¾Ã­m po naÄtenÃ­ strÃ¡nky
		$('<div id="ajax-spinner"></div>').appendTo("body").ajaxStop(function () {
			// a pÅ™i udÃ¡losti ajaxStop spinner schovÃ¡m a nastavÃ­m mu pÅ¯vodnÃ­ pozici
			$(this).hide(200);
		}).hide();
	});
*/
jQuery.extend({
    nette: {
        updateSnippet: function (id, html) {
			$("#" + id).fadeOut("fast", function(){
				$("#" + id).html(html).fadeIn("fast");
			});

			if((html.search(/lightbox/i) != -1) || (html.search(/lbgallery/i) != -1)){
				//alert("lightbox");
				setting = {
					overlayBgColor:'#000',
					overlayOpacity:0.8,
					fixedNavigation:false,
					imageLoading: '/images/lightbox-ico-loading.gif',
					imageBtnClose: '/images/lightbox-btn-close.gif',
					imageBtnPrev: '/images/lightbox-btn-prev.gif',
					imageBtnNext: '/images/lightbox-btn-next.gif',
					imageBlank: '/images/lightbox-blank.gif',
					containerBorderSize:10,
					containerResizeSpeed: 600,
					txtImage:'Image',
					txtOf:'of',
					keyToClose:'c',
					keyToPrev:'p',
					keyToNext:'n'
				};
				alert($('#lbgallery a').html());
				$('a[rel=lightbox]').lightBox(setting); // Select all links that contains lightbox in the attribute rel
				$('#lbgallery a').lightBox(setting); // Select all links in object with gallery ID
				$('a.lightbox').lightBox(setting); // Select all links with lightbox class
			}
        },

        success: function (payload) {
            // redirect

            if (payload.redirect) {
                window.location.href = payload.redirect;
                return;
            }
			//alert("ppp");
            // snippets
            if (payload.snippets) {
                for (var i in payload.snippets) {
                    jQuery.nette.updateSnippet(i, payload.snippets[i]);
                }



            }
			//$("#ajax-spinner").hide(200);
        }
    }
});

jQuery.ajaxSetup({
    success: jQuery.nette.success,
    dataType: "json"
});

jQuery(function($) {

	$.ajaxSetup({
		success: $.nette.success,
		dataType: 'json'
	});

	// zajaxovatÄ›nÃ­ odkazÅ¯ provedu takto
	$("a.ajax").live("click", function (event) {
		event.preventDefault();
                url=window.location;
                origHash = window.location.hash;
                hostname = url.protocol + "//"+url.hostname;
                
                var hash = this.href;
                
                hash = hash.replace(hostname,"");
		window.location.hash = "#!" + hash;
		
		$.get(this.href,{"fragment":origHash});
		return false;
	});
        $(function () {
            hash = window.location.hash;
            
            if(hash.indexOf("#!", 0)>=0) {
                hash = hash.replace("#!","");

                window.location = hash;
                $("body").hide();
            }
        });

	$("form.ajax").live("submit", function (event) {
		event.preventDefault();

		$(this).ajaxSubmit();
		return false;
	});
});
