



var WebGuideModule = Class.create({
   initialize: function(ajaxBaseUrl) {
      this.ajaxBaseUrl = ajaxBaseUrl;
      this.effectDuration = 0.3;
   },

   showHelp: function(id) {
         var inPagePopup = new InPagePopup();
         inPagePopup.disableWindow('400','300');
         var url = this.ajaxBaseUrl + 'webguide-module/'+id+'/';
         new Ajax.Updater('popup-content',url,{method:'get'});
   }
});


var InPagePopup = Class.create ({
 /**
    * Konstuktor
    */
   initialize: function() {

   },
   /**
    * Zesedivi okno
    */
   disableWindow : function(inWidth, inHeight) {
      if (undefined==inHeight) {
         inHeight = 500;
      }
      if (undefined==inWidth) {
         inWidth = 600;
      }
      var disable = $('disableWindow');
      $('popup-window').show();

      $$('.page-box select').each(function(s) {
         s.hide();
      });
      $$('object').each(function(s) {
         s.hide();
      });
      $$('embed').each(function(s) {
         s.hide();
      });

      var bodyHeight = document.body.clientHeight;
      var bodyWidth = document.body.clientWidth;
      var elementTop = document.documentElement.scrollTop;
      disable.addClassName('disableWindow');

      if (bodyHeight < 800) {
         bodyHeight = 800;
      }
      if (window.innerHeight) {
         var browserHeight = window.innerHeight;
      } else if (document.body.clientHeight) {
         // alert('ie');
         // var browserHeight = document.body.clientHeight;
         var browserHeight = 800;
      } else {
         var browserHeight = 800;
      }

      if (document.body.scrollTop) {
            var scrolledPx = document.body.scrollTop;
         } else {
            var scrolledPx = document.viewport.getScrollOffsets().top;
         }

      if (browserHeight>inHeight) {
         var marginTop = ((browserHeight-inHeight)/2)+scrolledPx;
      } else {
         var marginTop = (scrolledPx+10);
      }
      var marginTop = (scrolledPx+10);
      // alert(marginTop);
      // alert(inHeight+'px');
      // alert(document.viewport.getScrollOffsets().top+'px');
      $('popup-window').setStyle({'height': String(inHeight) + 'px'});
      $('popup-window').setStyle({'width': inWidth + 'px'});
      $('popup-window').setStyle({'margin': marginTop+'px auto'});
      disable.setStyle({'height': bodyHeight + 'px', 'width': bodyWidth + 'px'});
   },

   /**
    * Aktivni okno
    */
   enableWindow : function() {
      var disable = $('disableWindow');
      $('popup-window').hide();
      disable.removeClassName('disableWindow');
      disable.setStyle({'height': '0px', 'width': '0px'});
      $$('.page-box select').each(function(s) {
         s.show();
      });
      $$('object').each(function(s) {
         s.show();
      });
      $$('embed').each(function(s) {
         s.show();
      });
   },

   closeWindow : function() {
      this.enableWindow();
   },

   loading : function() {
   },

   loaded: function() {
   }



});



/**
 * Trida pro generovani vyskakovacich formularu
 *
 * (musi byt includovan prototype)
 */
function MitonForms() {
   this.observe = null;

   /**
    * Nastavi kam se budou data nahravat
    *
    * @param string
    */
   this.setOutputElementId = function(elementId) {
      this.outputElementId = elementId;
   };

   /**
    * Nastavi cestu odkud se budous thaovat data
    *
    * @param string
    */
   this.setAjaxPath = function(path) {
      this.ajaxPath = path;
   };

   /**
    * Zesedivi stranku
    */
   this.disableWindow = function(width,height) {
      if (!width) {
         width = 500;
      }
      if (!height) {
         height = 400;
      }
      new InPagePopup().disableWindow(width, height);
   };

   /**
    * Zaktivni stranku
    */
   this.enableWindow = function() {
      /*
      var disable = $('disableWindow');
      disable.removeClassName('disableWindow');
      disable.setStyle({'height': '0px', 'width': '0px'});
      * */
      new InPagePopup().enableWindow(500,420);
   };

   /**
    * Odesle formular
    *
    * @param event object
    * @param path string
    * @param formId string
    */
   this.submit = function(event, path, formId) {
      var form = $(formId);

      Event.stop(event);
      Event.stopObserving(form, 'submit', mForms.observe);

      mForms.request(path, Form.serialize(form), formId);
   }

   /**
    * Ajax request
    *
    * @param path string
    * @param data string
    * @param formId string
    */
   this.request = function(path, data, formId, ownWindow,width,height) {
      outputElement = $(this.outputElementId);
      outputElement.update('');

      var opt = { method: 'post',
                  postBody: data,
                  onSuccess: function(t) {
                     if (ownWindow) {
                        
                        mForms.disableWindow(width,height);
                     }
                  },
                  onComplete: function(t) {
                     if (t.responseText.length == 0) {
                        //refreshneme stranku
                        window.location.reload(true);
                     } else {
                        // alert(t.status);
                        // zevalujeme scripty
                        // t.responseText.evalScripts();
                        // alert(t.responseText.extractScripts());

                        //nacteme formular
                        outputElement.update(t.responseText);


                        //zobrazime formular
                        outputElement.show();

                        //odchytavame onsubmit
                        mForms.observe = mForms.submit.bindAsEventListener(Event, path, formId);
                        Event.observe($(formId), 'submit', mForms.observe);
                     }
                  },
                  on404: function(t) {
                     alert('Error 404: location "' + t.statusText + '" was not found.');
                  },
                  onFailure: function(t) {
                     alert('Error ' + t.status + ' -- ' + t.statusText);
                  }
                }

      url = this.ajaxPath + path;
      new Ajax.Request(url, opt);
   };

   /**
    * Zavre okno s formularem
    */
   this.closeWindow = function() {
      outputElement.update('');
      outputElement.hide();
      this.enableWindow();
   }
}

