/*
 * ============================================================================
 * Project maven-homepage-plugin
 * Copyright (c) 2006-2007 by Andre Winkler. All rights reserved.
 * ============================================================================
 * $Id: common.js 629 2007-01-09 18:05:27Z andrewinkler $
 * Version: $LastChangedRevision: 629 $ $LastChangedDate: 2007-01-09 19:05:27 +0100 (Di, 09 Jan 2007) $
 * Author:  by Andre Winkler, $LastChangedBy: andrewinkler $
 */

/**
 * Liefert ein Array aller Argumente aus der URL.
 *
 * @return Ein Array von Argumenten.
 */
function getArguments() {
  var arg = new Array();
  var location = window.location.search;
  if (location.length > 0) {
    location = location.substr(1, location.length - 1);
    arg = location.split("&");
  } else {
    arg[0] = false;
  }
  return arg;
}

/**
 * Liefert ein Array aller Argumente aufgeteilt nach Variablennamen und
 * Variablenwert der URL. Wird als assoziatives Array angesprochen:
 * var args = getVArgumente();
 * if (args['paramXyz'] != null) {
 *   ...
 * }
 *
 * @return Ein Array von Argumenten.
 */
function getVArgumente() {
   var erg = new Array();
   var arg = new Array();
 
   var location = window.location.search;
 
   if (location.length > 0) {
      location = location.substr(1, location.length - 1);
      erg = location.split("&");

      for (i = 0; i < erg.length; i++) {
         var x = new Array();  
         x = erg[i].split("=");
         arg[x[0]] = x[1];
      }
   } else {
      arg[0] = false;
   }
   return arg;
}

/**
 * Ein Objekt zur Kapselung des Zugriffs auf die Http-Request Parameter.
 */
function HttpRequest() {
  this.args = getVArgumente();
  this.indexArgs = getArguments();
}

/**
 * Liefert einen HttpRequest Parameter.
 *
 * @parm key Der Schluessel unter dem der Parameter im Request abgelegt ist.
 * @return Ein dekodierter Request-Parameter.
 */
HttpRequest.prototype.getParam = function(key) {
  if (this.args[key]) {
    return decodeURIComponent(this.args[key]);
  }
  return false;
}

/**
 * Liefert einen HttpRequest Paramter in einem Array zurueck in der Kombination
 * [0] Schluessel und [1] Wert.
 *
 * @param index Der Index unter dem der Parameter zu finden ist.
 * @return Ein Array mit der Laenge zwei mit der Belegung [0] Schluessel und
 *    [1] Wert. Der Wert ist dekodiert.
 */
HttpRequest.prototype.getParamKeyValueByIndex = function(index) {
  if (this.indexArgs[index]) {
    var keyValue = this.indexArgs[index].split("=");
    if (keyValue[1]) {
      keyValue[1] = decodeURIComponent(keyValue[1]);
    }
    return keyValue;
  }
  return false;
}

/**
 * Zaehlt die Anzahl der vorhandenen HttpRequest Parameter.
 *
 * @return Die Anzahl der HttpRequest Parameter.
 */
HttpRequest.prototype.numParam = function() {
  return this.indexArgs.length;
}

HttpRequest.prototype.debug = function() {
  document.write("<h1>Debug HttpRequest<\/h1>");
  var ausgabe = "";
  for (var index = 0; index < this.numParam(); index++) {
    var keyValue = this.getParamKeyValueByIndex(index)
    ausgabe = "<br\/> Nr " + index + " : Key="
      + this.getParamKeyValueByIndex(index)[0] + " Value="
      + this.getParamKeyValueByIndex(index)[1];
    document.write(ausgabe);
  }
}
