/**
  * @constructor
  */
 function __construct()
 {
     if (func_num_args() == 5) {
         $param0 = func_get_arg(0);
         $param1 = func_get_arg(1);
         $param2 = func_get_arg(2);
         $param3 = func_get_arg(3);
         $param4 = func_get_arg(4);
     } else {
         if (func_num_args() == 3) {
             $param0 = func_get_arg(0);
             $param1 = func_get_arg(1);
             $param2 = func_get_arg(2);
         } else {
             throw new Exception("Invalid argument count.");
             return;
         }
     }
     // params are point, point, epsg
     if (is_a($param0, "Mapbender_point") && is_a($param1, "Mapbender_point") && is_string($param2) && !$param3 && !$param4) {
         $e = new mb_notice("Mapbender_bbox: constructor: point1, point2, epsg");
         $min = $param0;
         // is a Mapbender_point
         $max = $param1;
         // is a Mapbender_point
         $epsg = $param2;
         // is an EPSG code like "EPSG:4326"
         if ($min->isWestOf($max) && $min->isSouthOf($max) || $min->equals($max)) {
             if ($min->epsg == $max->epsg && $min->epsg == $epsg) {
                 $this->min = $min;
                 $this->max = $max;
                 $this->epsg = $epsg;
             } else {
                 $e = new mb_exception("Mapbender_bbox: constructor: EPSG mismatch!");
             }
         } else {
             $e = new mb_exception("Mapbender_bbox: constructor: min (" . $this->min . ") is not southwest of max (" . $this->max . ")!");
         }
     } else {
         if (is_numeric($param0) && is_numeric($param1) && is_numeric($param2) && is_numeric($param3) && is_string($param4)) {
             $e = new mb_notice("Mapbender_bbox: constructor: x1, y1, x2, y2, epsg");
             $min = new Mapbender_point(floatval($param0), floatval($param1), $param4);
             $max = new Mapbender_point(floatval($param2), floatval($param3), $param4);
             $epsg = $param4;
             // is an EPSG code like "EPSG:4326"
             if ($min->isWestOf($max) && $min->isSouthOf($max)) {
                 if ($min->epsg == $max->epsg && $min->epsg == $epsg) {
                     $this->min = $min;
                     $this->max = $max;
                     $this->epsg = $epsg;
                 } else {
                     $e = new mb_exception("Mapbender_bbox: constructor: EPSG mismatch!");
                 }
             } else {
                 $e = new mb_exception("Mapbender_bbox: constructor: min (" . $this->min . ") is not southwest of max (" . $this->max . ")!");
             }
         } else {
             throw new Exception("invalid parameters to Mapbender_bbox");
         }
     }
 }