(function($) {
   $.ajax_load_url = {
      reset_wweForms: function ( $text ) {
         // wwEdit-Formularsteuerung zurücksetzen
         // üble Sache diese globalen Variablen
         $text.find('input[name^=wwe3_marker]').each(function() {
            form_id = this.name.replace(/.*\[(.*)\]/, "$1");
            window.deps[ form_id ] = new Array();
            window.depcache[ form_id ] = new Array();
            window.later[ form_id ] = new Array();
            window.fld_save[ form_id ] = new Object();
         });
      }
   };

   $.fn.ajax_load_url = function(options) {
         var settings = {
            // dieser Selektor bestimmt, welcher Teil der geladenen Seite angezeigt wird
            filter_result  : '#page_body_main_content > div',
            event          : 'click',
            loaded_content_container: '#ajax_load_window',
            eval_scripts   : true,
            useBlockUI     : true,
            doReplaceText  : false
         }
         
         if(options) {
            $.extend(settings, options);
         }

         var load_container = null;
         if ( settings.useBlockUI )
         {
            load_container = $(settings.loaded_content_container).clone();
         }
         else
         {
            load_container = $(settings.loaded_content_container);
         }

         var load_window    = $('.content', load_container);
         var load_wait      = $('.wait', load_container);
         var load_control   = $('.control', load_container);


         var formReadyCallback = function(text)
         {
            var filtered_text = $(text).find(settings.filter_result);
            // wwEdit-Formularsteuerung zurücksetzen
            // üble Sache diese globalen Variablen
            $.ajax_load_url.reset_wweForms( filtered_text );
            load_window.empty().append( filtered_text );

            $(text).find('script').each(function() {               
               eval($(this).text());
            });

            load_window.show();
            load_control.show();
            load_wait.hide();

            $('input[type=submit]', load_window).click(function() {
               var thisform = $('form',load_window).get(0);
               load_window.hide();
               load_control.show();
               load_wait.show();
               chk_bobby(thisform);
               $.post(thisform.action.replace(/#.*/,''),$(thisform).serialize(),formReadyCallback );
               return false;
            });
         }

         var doLoad = function (filterurl) {
            load_container.show();
            load_window.wwload( filterurl,
            {
               callback : function(text)
               {
                  if ( settings.doReplaceText )
                  {
                     if ( typeof settings.replacementObj != null
                        && typeof settings.replacementItemsName != null )
                     {
                        settings.replacementObj.replaceText( settings.replacementItemsName );
                     }
                     // replaceText ( window.ajaxLoadItems );
                  }
                  
                  var title = $(text.match(/\<title\>(.*)\<\/title\>/gi));
                  $("title").html(RegExp.$1);
                  var filtered_text = $(text).find(settings.filter_result);
                  $.ajax_load_url.reset_wweForms( filtered_text );
                  
                  load_window.show();
                  load_control.show();
                  load_wait.hide();

                  $('input[type=submit]', load_window).click(function()
                  {
                     load_window.hide();
                     load_control.show();
                     load_wait.show();
                     chk_bobby(this.form);
                     $.post(this.form.action.replace(/#.*/,''),$(this.form).serialize(),formReadyCallback );
                     return false;
                  });
               },
               eval_scripts: true
            });
         }

         return this.each(function() {
            var counter = $(this).data("ajax_loader_count");
            if (typeof(counter) == "undefined")
               counter = 0;
            counter++;
            $(this).data("ajax_loader_count", counter);

            if (counter > 1)
               return  false;

            if ($(this).attr("item_num") == options.showOnInit) {
               var filterurl = encodeURI(this.href) + " "+settings.filter_result;
               doLoad(filterurl);
            }

            $(this)[settings.event](function(e) {
               var filterurl = encodeURI(this.href) + " "+settings.filter_result
               var url = encodeURI(this.href);

               $('.cancel', load_control).click ( function()
               {
                  load_container.remove();
                  if ( settings.useBlockUI )
                  {
                     $.unblockUI();
                  }
                  return false;
               });

               load_window.hide();
               load_control.show();
               load_wait.show();

               if ( settings.useBlockUI )
               {
                  $.blockUI ( load_container );
               }
               doLoad(filterurl);

               return false;
         });
      });
   };
})(jQuery);
