
(function($) 
{
  $.fn.select_options = function(opcje)
  {
    var defaults = {
                      pole_szerokosc          : 550,
                      pole_szerokosc_element  : 80,
                      pole_wysokosc_option    : 20
                    }
    var ustawienia = $.extend(defaults,opcje);
    return this.each( function()
                    { 
                      _select_replace(this,ustawienia); 
                      _select_click(this,ustawienia); 
                      _select_in_out(this,ustawienia);
                    } );
  };
  
  _select_replace = function(pole,opcje)
  {
    pole        = $(pole); // pole obiektu
    var option  = pole.find('option'); // podlegle elementy
    var name    = pole.attr('name');   // nazwa obiektu 
    var opis    = pole.attr('title'); // opis elementu
    
    var tresci = '<div class="selecting"><h3>'+opis+'</h3>'; // obszar przyciskow
    
    option.each(
      function()
      {
        tresci = tresci+'<div class="select_element" title="'+$(this).text()+'" value="'+$(this).val()+'" name="'+name+'"  >'; // element podlegly
        tresci = tresci+$(this).text()+'</div>';
      }
    );
    tresci = tresci+'<br style="clear:left" /><a href="javascript:void(0);" class="select_zamknij">[Zamknij]</a></div>';
    
    var value = pole.find('option:selected').val();  // wyszukanie początkowego zaznaczonego elementu  
    
    pole.before('<div id="'+name+'_info" class="select_info" >'+value+'<div class="ui-icon ui-icon-arrow-1-s" style="float:right"></div></div>'); // element wskazujacy co zostalo wybrane
    pole.after('<input type="hidden" name="'+name+'" id="'+name+'_2" value="'+value+'" />'); // nadpisanie wartosci elementu
    pole.after($('<div class="select_box" id="'+name+'_box" />').html(tresci).css('width',opcje.pole_szerokosc+'px').hide()); // obszar wyswietlania
    pole.hide();    
    
    $('#'+name+'_box').find('.select_element').css({width:opcje.pole_szerokosc_element});
    
  };
  
  _select_click = function(pole,opcje)
  {
    var pole_box = '#'+$(pole).attr('name')+'_box';
    $(pole_box+' .select_element').live('click',
      function()
      {
        var key   = $(this).attr('name');
        var value = $(this).attr('value');
        
        $('#'+key+'_2').val(value); // wspisanie w ukryte pole
        $('#'+key+'_info').html( value+'<div class="ui-icon ui-icon-arrow-1-s" style="float:right"></div>' ); // pokazanie uzytkownikowi co wybral
        $('#'+key+'_box').hide(); // schowanie okna wyboru
        $('#form_strona').val(0);
      }
     )    
  };
  
  _select_in_out = function(pole,opcje)
  {
    var nazwa = '#'+$(pole).attr('name')+'_info';
    var pole_box = '#'+$(pole).attr('name')+'_box';
    $(nazwa).css('cursor','pointer');
    $(nazwa).live('click',
      function()
      {
        $(pole_box).show();
      });
    $(pole_box+' .select_zamknij').live('click',
      function()
      {
        $(pole_box).hide();
      });  
  };
  
  $.fn.select_options_div = function(opcje)
  {
    var defaults = {
                      pole_szerokosc          : 560,
                      pole_szerokosc_element  : 50,
                      pole_wysokosc_option    : 20      
                   }
    var ustawienia = $.extend(defaults,opcje)
    
    return this.each( function()
                    {
                      $(this).css('width',ustawienia.pole_szerokosc);
                      _select_replace_div(this,ustawienia);
                      _select_click_div(this,ustawienia);
                      _select_in_out_div(this,ustawienia);
                    } );
  };
  
  _select_replace_div = function(pole,opcje)
  {
    var name = $(pole).attr('name');
    var value = $('#'+name).find('option:selected').val();
    $('#'+name).before('<div id="'+name+'_info" class="select_info" >'+$('#'+name).find('option:selected').text()+'<div class="ui-icon ui-icon-arrow-1-s" style="float:right"></div></div>'); // element wskazujacy co zostalo wybrane
    $('#'+name).after('<input type="hidden" name="'+name+'" id="'+name+'_2" value="'+value+'" />'); // nadpisanie wartosci elementu
    /*$(pole).append('<br /><a href="javascript:void(0);" class="select_zamknij">[Zamknij]</a>');*/
    $('#'+name).hide();  
  };
  
  _select_click_div = function(pole,opcje)
  {
    $(pole).find('.select_kategorie div').live('click',
      function()
      {
        var key   = $(this).attr('name');
        var value = $(this).attr('value');
        
        $('#'+key+'_2').val(value); // wspisanie w ukryte pole
        $('#'+key+'_info').html( $(this).html()+'<div class="ui-icon ui-icon-arrow-1-s" style="float:right"></div>' ); // pokazanie uzytkownikowi co wybral
        $(pole).hide(); // schowanie okna wyboru
        $('#form_strona').val(0);
      }
    )
  };
  
  _select_in_out_div = function(pole,opcje)
  {
    var name = '#'+$(pole).attr('name')+'_info';
    
    $(pole).find('.select_zamknij').live('click',
      function()
      {
        $(pole).hide();
      }); 
    
    $(name).css('cursor','pointer');
    $(name).live('click',
      function()
      {
        $(pole).show();
      });
      
  };
  
  $.fn.searching = function(opcje)
  {
    var defaults = {pole: '#'}
    var ustawienia = $.extend(defaults,opcje);    
    var status = $('#status');
    var przyciski = $(this).find('input[type=submit]');
    
    status.attr('src','/grafika/ikony/enable.png');
    
    return this.each( function()
                    {
                      $(this).submit(
                        function()
                        {
                          status.attr('src','/grafika/ikony/disable.png');
                          przyciski.attr('disabled','disabled');
                          $(ustawienia.pole).load('/wyszukiwarka/wyszukaj-ajax',$(this).serializeArray(), 
                            function()
                            { 
                              status.attr('src','/grafika/ikony/enable.png'); 
                              przyciski.attr('disabled','');
                            });
                        return false;  
                        }
                      );
                    } );
  };
  $.fn.stronnicowanie = function(opcje)
  {
    var defaults = {
      pole_strona : '#form_strona',
      pole_stron: '.listowanie_stron a'
    }
    
    var ustawienia = $.extend(defaults,opcje)
    
    return this.each( function()
                    {
                      $(this).find(ustawienia.pole_stron).live('click', function()
                                                              { 
                                                                $(ustawienia.pole_strona).val( $(this).attr('rel') ); 
                                                                $('#zaawansowana_wyszukiwarka').trigger('submit');
                                                              })
                    }
                    )
  }
})(jQuery);

/*
 * .select_info #'name'_info - pokazuje co wybrano
 * .select_element - element do wybrania
 * #'name'_2 - element przechowujacy wartosc wybraną
 * .select_box #'name'_box - obaszr pokazywania
 * .selecting obszar zaznaczania
 */
