// ----------------------------------------------------------------
/**
 * Javascript-Modul fuer BHP-Werbung
 *
 * $Rev: 6240 $ $Date: 2009-05-05 12:04:00 +0200 (Di, 05 Mai 2009) $
 * $Author: wojewsky $
 * $URL: http://wb4serv.heinze.de/projects_and_applications/bhp_BauherrenPortal/frontend/branches/bhp 9.5/bhp/js/toolcolumn.js $
 *
 * @category bhp_javascript
 * @package  BHP_Javascript
 * @namespace BHP
 * @version  $Rev: 6240 $
 * @author   $Author: wojewsky $
 */
// ----------------------------------------------------------------

//KLASSE 'BHP.AdServer'
BHP.AdServer = new Class({
  Implements: [Options, Events],

  //----------------------------------------------------------------
  // Eigenschaften
  // ----------------------------------------------------------------
  requestURL: '',
  idAdContainer: null,
  displayTypeContainer: 'block',
  idHeadline: null,
  idContent: null,

  //----------------------------------------------------------------
  // Methoden
  // ----------------------------------------------------------------

  //----------------------------------------------------------------
  /**
   * Konstruktor zur Klasse 'AdServer'
   *
   * @params  object options - Referenz auf die Optionen zur Instanz
   * @return  void
   */
  //----------------------------------------------------------------
  initialize: function(options) {
    //-- Zuweisen der Optionen
    this.setOptions(options);
    this.container = $(this.options.idAdContainer);
    if ($defined(this.container)) {
      this.headline = this.container.getElement('#' + this.options.idHeadline);
      this.content = this.container.getElement('#' + this.options.idContent);
    }
  },

  //----------------------------------------------------------------
  /**
   * Methode 'onRequestFailure' um die Werbung im Fehlerfall auszublenden
   *
   * @return  void
   */
  //----------------------------------------------------------------
  onRequestFailure: function() {
    //es ist etwas schief gegangen, also den Container unsichtbar machen
    if ($defined(this.container)) {
      this.container.setStyle('display', 'none');
    }
  },

  //----------------------------------------------------------------
  /**
   * Methode 'onRequestComplete' um die Werbung einzublenden
   *
   * @param   object response - Antwort des Requests
   * @return  void
   */
  //----------------------------------------------------------------
  onRequestComplete: function(response) {
    //pruefen ob alles ok ist
    if (response == null) {
      //es ist etwas schief gegangen, also den Container unsichtbar machen
      if ($defined(this.container)) {
        this.container.setStyle('display', 'none');
      }
      return;
    }
    //ggf. die Ueberschrift setzen
    if (($defined(this.headline)) && ($defined(response.headline))) {
      this.headline.set('html', response.headline);
    }
    //ggf. den Content setzen
    if (($defined(this.content)) && ($defined(response.content))) {
      this.content.set('html', response.content);
    }
    //ggf. den Container sichtbar machen
    if ($defined(this.container)) {
      this.container.setStyle('display', this.options.displayTypeContainer);
    }
  },

  //----------------------------------------------------------------
  /**
   * Methode 'request' um die Werbung zu holen
   *
   * @return  void
   */
  //----------------------------------------------------------------
  request: function() {
    var params = {url:this.options.requestURL};

    //Zuweisen der Parameter und Starten des Requests
    params.onComplete = this.onRequestComplete.bind(this);
    params.onFailure = this.onRequestFailure.bind(this);
    new Request.JSONP(params).send();
  }
});