
new YAHOO.util.YUILoader({
  base: "include/yui/",
  require: ["connection","container","dragdrop","element"],
  loadOptional: false,
  allowRollup: true,
  onSuccess: function() {
    // globaler Namespace
    YAHOO.namespace ("rexroth.filter");
        
    // CSS-Modul für Filterboxen nachladen (statt Skin)
    var cssLoader = new YAHOO.util.YUILoader({
      base: "layout/filterBox/"
    });
    cssLoader.addModule({
      name:'filterBox',
      type:'css',
      path:'filterBox.css',
      require: ["container"]
    });
    // das Modul muss noch geladen werden
    cssLoader.require("filterBox");
    cssLoader.insert();
  }
}).insert();



function showAdvancedSearch ( pub, heading, language, ccatID) {

  var timestamp = new Date().getTime();
  var searchType;
  var searchTerm;
  var urlremindCcat = '';

  var urlLang = '';
  if (language != null && language != '') {
    urlLang = '&language=' + language;
  }

  var urlCcatID = '';
  if (ccatID != null && ccatID != '') {
    urlCcatID = '&ccat_id=' + ccatID;
  }

  /**
   * handle suucess
   */
  var handleSuccess = function(o) {

    if(searchType == 'detail_search') {
      document.location.href = 'Category.jsp?publication=' + pub + urlLang + urlCcatID + urlremindCcat + '&search_query=' + encodeURIComponent( searchTerm) + '&search_action=submit';
    }
    else if(searchType == 'doc_search') {
      document.location.href = 'Category.jsp?publication=' + pub + urlLang + urlCcatID + urlremindCcat + '&action=search_documents&documentNumber=' + encodeURIComponent( searchTerm);
    }
  }

  var handleFailure = function(o){
    alert(o.responseText);
  }


  /**
   * Dialog initialisieren
   */
  YAHOO.rexroth.filter.form = new YAHOO.widget.Dialog("filter",
  {
    fixedcenter : false,
    visible : false,
    modal : true,
    constraintoviewport : true,
    x: 10, 
    y: 50
  });

  /**
   * Header Text setzen
   */
  YAHOO.rexroth.filter.form.setHeader(heading);

  /**
   * Prüfen der Eingaben aus dem Formular
   */
  YAHOO.rexroth.filter.form.validate = function() {
        
    var data = this.getData();

    searchType = data.searchtype;
    searchTerm = data.searchField;

    if (data.remindCcat == true) {
      urlremindCcat = '&remindCcat=on';
    }

    if(data.only_period == true){
      // mma: bugfix wichtig! dem parseInt immer die Basis des Zahlensystems mitgeben, also hier 10, da ansonsten z.B. ein Monat mit führender Null
      // z.B 09 als Oktalzahl interpretiert wird und somit zu falschen Ergebnissen führt.
      if (!(new Date(parseInt(data.start_year,10),(parseInt(data.start_month,10)-1)) <= new Date(parseInt(data.end_year,10),(parseInt(data.end_month,10)-1)))) {
        document.getElementById("errorMessage").style.display = "block";
        document.getElementById("errorMessage").innerHTML = '<p style="margin:5px 10px;" class="error">' + msgErrorDate + '</p>';
        return false;
      }
      else {

        var fPeriodStart = document.getElementById("iFilterPeriodStart");
        if (fPeriodStart) {
          fPeriodStart.setAttribute("value", data.start_month + "/" + data.start_year);
        }

        var fPeriodEnd = document.getElementById("iFilterPeriodEnd");
        if (fPeriodEnd) {
          fPeriodEnd.setAttribute("value",  data.end_month + "/" + data.end_year);
        }
      }
    }
    return true;
  };



  /**
   *
   */
  var successShowFilter = function(o){

    YAHOO.rexroth.filter.form.setBody(o.responseText);
    YAHOO.rexroth.filter.form.render(document.body);

    YAHOO.util.Event.on("cancelButton", "click", YAHOO.rexroth.filter.form.hide, YAHOO.rexroth.filter.form, true);
    YAHOO.util.Event.on("filterResetButton", "click", YAHOO.rexroth.filter.form.hide, YAHOO.rexroth.filter.form, true);

    YAHOO.rexroth.filter.form.show();
  };

  var callback = {
    success: successShowFilter
  };

  var request = YAHOO.util.Connect.asyncRequest('GET', 'ReadFilter.jsp?publication=' + pub + "&filterType=advancedsearch" + urlLang + "&ts=" + timestamp, callback);

  // Wire up the success and failure handlers
  YAHOO.rexroth.filter.form.callback = {
    success: handleSuccess,
    failure: handleFailure
  };


}

/**
 *
 */
function showFilter (type, pub, heading, language) {

  var timestamp = new Date().getTime();
  var currentValues;

  /**
     *
     */
  var handleSuccess = function(o) {

    var callbackFilter = {
      success: function(o){

        var f = document.getElementById("responseFilter");
        if(f) {
          f.innerHTML = o.responseText;
        }
        if (currentValues != '' && currentValues != 'false') {
          document.getElementById("link" +type).innerHTML = '<b>' + heading + '</b>';
          document.getElementById("reset_link" +type).style.display = "block";
        }
        else {
          document.getElementById("link" +type).innerHTML = heading;
          document.getElementById("reset_link" +type).style.display = "none";
        }
      },
      failure: function(o){
        if(document.getElementById("responseFilter")!= null) {
          document.getElementById("responseFilter").innerHTML = o.status;
        }
      },
      argument: {
        filterType:type
      }
    }

    /**
     * aktuelle Filtersettings werden gelesen und als ReponseText zurück gegeben
     * und über dem Suchergebnis angezeigt.
     */
    YAHOO.util.Connect.asyncRequest('GET', 'ReadFilter.jsp?publication=' + pub + '&ts=' + timestamp,callbackFilter);
  };


  YAHOO.rexroth.filter.form = new YAHOO.widget.Dialog("filter",
  {
    fixedcenter : true,
    visible : false,
    modal : true,
    constraintoviewport : true
  });
            
  YAHOO.rexroth.filter.form.setHeader(heading);

  /**
     * Prüfen der Eingaben aus dem Formular
     */
  YAHOO.rexroth.filter.form.validate = function() {
        
    var data = this.getData();
    if (type == 'date') {
      // mma: bugfix wichtig! dem parseInt immer die Basis des Zahlensystems mitgeben, also hier 10, da ansonsten z.B. ein Monat mit führender Null
      // z.B 09 als Oktalzahl interpretiert wird und somit zu falschen Ergebnissen führt.
      if (!(new Date(parseInt(data.start_year,10),(parseInt(data.start_month,10)-1)) <= new Date(parseInt(data.end_year,10),(parseInt(data.end_month,10)-1)))) {
        document.getElementById("errorMessageDate").innerHTML = '<p style="margin:15px 0px 0px 15px;" class="error">' + msgErrorDate + '</p>';
        return false;
      } else {

        var fPeriodStart = document.getElementById("iFilterPeriodStart");
        if (fPeriodStart) {
          fPeriodStart.setAttribute("value", data.start_month + "/" + data.start_year);
        }

        var fPeriodEnd = document.getElementById("iFilterPeriodEnd");
        if (fPeriodEnd) {
          fPeriodEnd.setAttribute("value",  data.end_month + "/" + data.end_year);
        }
        return true;
      }
    }
    if(type == 'mediatype') {
      currentValues = data.filterMediatype;
    }
    if(type == 'language') {
      currentValues = data.filterLanguage;
    }
    if(type == 'status') {
      currentValues = data.inactiveEditions;
    }
    return true;
  };

  /**
   *
   */
  var successShowFilter = function(o){
    YAHOO.rexroth.filter.form.setBody(o.responseText);
    YAHOO.rexroth.filter.form.render(document.body);
        
    YAHOO.util.Event.on("cancelButton", "click", YAHOO.rexroth.filter.form.hide, YAHOO.rexroth.filter.form, true);
    YAHOO.util.Event.on("filterResetButton", "click", YAHOO.rexroth.filter.form.hide, YAHOO.rexroth.filter.form, true);

    YAHOO.rexroth.filter.form.show();
  };
        
  var callback = {
    success: successShowFilter
  };

  var urlLang = '';
  if (language != null && language != '') {
    urlLang = '&language=' + language;
  }

  var request = YAHOO.util.Connect.asyncRequest('GET', 'ReadFilter.jsp?publication=' + pub + '&filterType=' + type + urlLang + "&ts=" + timestamp, callback);

  // Wire up the success and failure handlers
  YAHOO.rexroth.filter.form.callback = {
    success: handleSuccess
  };
}
    
