/**
 * AJAX Nette Framwork plugin for jQuery
 *
 * @copyright  Copyright (c) 2009, 2010 Jan Marek
 * @copyright  Copyright (c) 2009, 2010 David Grudl
 * @license    MIT
 * @link       http://nette.org/cs/extras/jquery-ajax
 */

/*
if (typeof jQuery != 'function') {
	alert('jQuery was not loaded');
}
*/

    function dots(sel) {
            val = $(sel).text();
            
            if(val == "") val = ".";
            else if(val == ".") val = "..";
            else if(val == "..") val = "...";
            else if(val == "...") val = "";

            $(sel).text(val);
    }

    function showLoading() {

        intval = setInterval(function() {

            $(".loading").show();
            dots('.dots');
            dots('.dots2');
           
            
        }, 200);

       return intval;

    }

    function stopLoading(interval) {

        clearInterval(interval);
        $("#loading").hide();

    }




$.fn.clearForm = function() {
return this.each(function() {
var type = this.type, tag = this.tagName.toLowerCase();
if (tag == 'form')
return $(':input',this).clearForm();
if (type == 'text' || type == 'password' || tag == 'textarea')
this.value = '';
else if (type == 'checkbox' || type == 'radio')
this.checked = false;
else if (tag == 'select')
this.selectedIndex = -1;
});
};

function is_int(input){
    return !isNaN(input)&&parseInt(input)==input;
}

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);
	}
});

var intval;

(function($) {

	$.nette = {
		success: function(payload)
		{
			// redirect
			if (payload.redirect) {
				window.location.href = payload.redirect;
				return;
			}

			// state
			if (payload.state) {
				$.nette.state = payload.state;
			}

			// snippets
			if (payload.snippets) {
				for (var i in payload.snippets) {
					$.nette.updateSnippet(i, payload.snippets[i]);
				}
			}
		},

		updateSnippet: function(id, html)
		{
			$('#' + id).html(html);

                        /*
                         * special settings
                         */
                        if(id != "snippet--countries" && id != "snippet--cities" && id != "snippet--categories") {
                            var icons = {
                            header: "ui-icon-circle-arrow-e",
                            headerSelected: "ui-icon-circle-arrow-s"
                            };

                            $( ".accordion" ).accordion({
                                    collapsible: true,
                                    icons: icons,
                                    autoHeight: false,
                                    navigation: true,
                                    active: -1
                            });
                        }


		},

		// create animated spinner
		createSpinner: function(id)
		{
                    
			return this.spinner = $('<div></div>').ajaxStart(function() {

                                 intval = showLoading();

                                  var position = $(".tableItem").offset();
                                  if(position != undefined) {
                                  $(this).css({"left": position.left + "px", "top": position.top + "px"});
                                  $(this).css({"width": $(".tableItem").width() + "px", "height": $(".tableItem").height() * 9 + 2*9 + "px"});
  				                        $(this).show();
  				                        
  
                                  $(".tableItem").css({"opacity": 0.7, "filter": "alpha(opacity = 70)"});
                                  $(".tableItem").css("filter", "alpha(opacity = 70)");


                                }
                                //filter: alpha(opacity=80);

			}).ajaxStop(function() {

                                $(this).hide();
                                $("div.ajax-spinner").hide();

                                $(".tableItem").css({"opacity": 1, "filter": "alpha(opacity = 100)"});
                                $(".tableItem").css("filter", "alpha(opacity = 100)")

                                stopLoading(intval);

                                //window.location.href = "#tableTop";
                                //scrollTop( value )

                                //if(window.pageYOffset < 570 || window.pageYOffset > 600)
                                  //  $('html, body').animate({scrollTop : $("#tableTop").position().top}, 'slow');
                                // $.smoothScroll({scrollTarget: '#tableTop'});

                                // set description field

                                //$("#filter_description").focus();

                                /*$('.timeTipsy').attr("original-title", "");
                                $('.descriptionTipsy').attr("original-title", "");

                                $('.timeTipsy').tipsy({gravity: 'w'});
                                $('.descriptionTipsy').tipsy({trigger: 'manual', gravity: 'w'});
                                $('.tableCategory img').tipsy({title: 'alt', gravity: 's'});*/

                                $('input[placeholder], textarea[placeholder]').placeholder();

                                var off = $("#slider").hasClass("off");

                                if(!off) {

                                    $(".descriptionBox").show();
                                    $(".descriptionBox").addClass("openedDescriptionBox");

                                }


			}).appendTo('body').hide();
		},

		// current page state
		state: null,

		// spinner element
		spinner: null
	};


})(jQuery);



jQuery(function($) {

	$.ajaxSetup({
		success: $.nette.success,
		dataType: 'json'
	});

	$.nette.createSpinner();

	// apply AJAX unobtrusive way
	$('a.ajax').live('click', function(event) {
		event.preventDefault();
		if ($.active) return;

		$.post(this.href, $.nette.success);

	});

        // searching by description
        $("#description_search").live("click", function() {
           var text = encodeURIComponent($("#filter_description").val());

           if(text == $("#filter_description_default").val()) text = "";

               //text = text.replace(/ /g,'-');

               $.post("?do=findDescription&text=" + text);

           return false;
        });

        $("#search a").live("click", function() {
           var text = encodeURIComponent($("#searchMe").val());
           
           if(text == $("#search_text").val()) text = "";

               //text = text.replace(/ /g,'-');

               $.post("?do=findDescription&text=" + text);

           return false;
        });

        $("#search #searchMe").live("keypress", function(e) {
            if(e.keyCode == 13) {
               var text = $("#searchMe").val();

               if(text == $("#search_text").val()) text = "";

                   //text = text.replace(/ /g,'-');

                   $.post("?do=findDescription&text=" + text);


               return false;
            }
        });

        // send request on enter press
        $("#filter_description").live("keypress", function(e) {
            if(e.keyCode == 13) {
                var text = $("#filter_description").val();

                //text = text.replace(/ /g,'-');

                $.post("?do=findDescription&text=" + text);

                return false;
            }
            //return false;
        });

        // changing page by input
        $("#changePage").live("click", function() {

           var page  = parseInt($("#changePage_input").val());
           var pages = parseInt($("#pages").val());
           var actual = parseInt($("#actual_page").val());

           if(is_int(page) && page > 0 && page <= pages) {
               if(actual == page)
                   $.post("?page="+ (page+1) +"&do=changePage");
               else
                   $.post("?page="+ page +"&do=changePage");

               if($('html, body').scrollTop() < 690 || $('html, body').scrollTop() > 730)
                     $('html, body').animate({scrollTop : $('#tableTop').position().top}, 'slow');
           }

           return false;
        });

        // ^ send request on enter press
        $("#changePage_input").live("keypress", function(e) {
           if(e.keyCode == 13) {
               var page  = parseInt($("#changePage_input").val());
               var pages = parseInt($("#pages").val());

                   if(is_int(page) && page > 0 && page <= pages) {
                       $.post("?page="+ page +"&do=changePage");
                   }
   
           }
        });

                /*$("#filter_description").live("keyup", function() {
                   var text = $(this).val();
                   
                       text = text.replace(/ /g,'-');

                       $.post("?do=findDescription&text=" + text);

                   return false;
                });*/

        // odeslání na formulářích
        $("form:not(.noAjax)").live("submit", function () {
           
                $(this).ajaxSubmit();

                return false;
        });

        // odeslání pomocí tlačítek
        /*$("form :submit").live("click", function () {
                $(this).ajaxSubmit();

                return false;
        });*/

        $("form.reset").live("submit", function() {
            $(this).closest("form").clearForm();
        });

        /*$("form.reset :submit").live("click", function () {
            $(this).closest("form").clearForm();
        });*/

});
