/**
  * 
  * @return 
  * @param $jsMapObject Object
  */
 public function createFromJs($jsMapObject)
 {
     $b = $jsMapObject->extent;
     $srs = $jsMapObject->epsg;
     $bbox = new Mapbender_bbox($b->min->x, $b->min->y, $b->max->x, $b->max->y, $srs);
     $this->width = $jsMapObject->width;
     $this->height = $jsMapObject->height;
     // there are no more map frames in Mapbender 2.6
     $this->frameName = $jsMapObject->elementName;
     $this->extent = $bbox;
     if (isset($jsMapObject->isOverview) && $jsMapObject->isOverview == "1") {
         $this->isOverview = true;
     }
     for ($i = 0; $i < count($jsMapObject->wms); $i++) {
         $currentWms = $jsMapObject->wms[$i];
         $wms = new wms();
         //
         // set WMS data
         //
         $wms->wms_id = $currentWms->wms_id;
         $wms->wms_version = $currentWms->wms_version;
         $wms->wms_title = $currentWms->wms_title;
         $wms->wms_abstract = $currentWms->wms_abstract;
         $wms->wms_getmap = $currentWms->wms_getmap;
         $wms->wms_getfeatureinfo = $currentWms->wms_getfeatureinfo;
         $wms->wms_getlegendurl = $currentWms->wms_getlegendurl;
         $wms->wms_filter = $currentWms->wms_filter;
         $wms->wms_srs = $currentWms->wms_srs;
         $wms->gui_epsg = $currentWms->gui_epsg;
         $wms->gui_minx = $currentWms->gui_minx;
         $wms->gui_miny = $currentWms->gui_miny;
         $wms->gui_maxx = $currentWms->gui_maxx;
         $wms->gui_maxy = $currentWms->gui_maxy;
         $wms->gui_wms_mapformat = $currentWms->gui_wms_mapformat;
         $wms->gui_wms_featureinfoformat = $currentWms->gui_wms_featureinfoformat;
         $wms->gui_wms_exceptionformat = $currentWms->gui_wms_exceptionformat;
         $wms->gui_wms_opacity = $currentWms->gui_wms_opacity;
         $wms->gui_wms_sldurl = $currentWms->gui_wms_sldurl;
         $wms->gui_wms_visible = $currentWms->gui_wms_visible;
         $wms->gui_wms_epsg = $currentWms->gui_wms_epsg;
         $wms->data_type = $currentWms->data_type;
         $wms->data_format = $currentWms->data_format;
         for ($k = 0; $k < count($currentWms->objLayer); $k++) {
             // the current layer of the JSON map object
             $currentLayer = $currentWms->objLayer[$k];
             // add new layer to WMS
             $pos = $currentLayer->layer_pos;
             $parent = $currentLayer->layer_parent;
             $wms->addLayer($pos, $parent);
             $newLayerIndex = count($wms->objLayer) - 1;
             // $newLayer is a short cut to the layer we just added
             $newLayer = $wms->objLayer[$newLayerIndex];
             // set layer data
             $newLayer->layer_uid = $currentLayer->layer_uid;
             $newLayer->layer_name = $currentLayer->layer_name;
             $newLayer->layer_title = $currentLayer->layer_title;
             $newLayer->layer_dataurl_href = $currentLayer->layer_dataurl_href;
             $newLayer->layer_pos = $currentLayer->layer_pos;
             $newLayer->layer_queryable = $currentLayer->layer_queryable;
             $newLayer->layer_minscale = $currentLayer->layer_minscale;
             $newLayer->layer_maxscale = $currentLayer->layer_maxscale;
             $newLayer->layer_metadataurl = $currentLayer->metadataurl;
             $newLayer->gui_layer_wms_id = $currentLayer->gui_layer_wms_id;
             //				$newLayer->gui_layer_wms_id = $wms->objLayer[0]->layer_uid;
             $newLayer->gui_layer_status = $currentLayer->gui_layer_status;
             $newLayer->gui_layer_style = $currentLayer->gui_layer_style;
             $newLayer->gui_layer_selectable = $currentLayer->gui_layer_selectable;
             if ($this->isOverview) {
                 preg_match_all("/LAYERS\\=([^&]*)/", $jsMapObject->mapURL[0], $resultMatrix);
                 $layerList = $resultMatrix[1][0];
                 $layerListArray = explode(",", $layerList);
                 $newLayer->gui_layer_visible = in_array($currentLayer->layer_name, $layerListArray) ? 1 : 0;
             } else {
                 $newLayer->gui_layer_visible = $currentLayer->gui_layer_visible;
             }
             $newLayer->gui_layer_queryable = $currentLayer->gui_layer_queryable;
             $newLayer->gui_layer_querylayer = $currentLayer->gui_layer_querylayer;
             $newLayer->gui_layer_minscale = $currentLayer->gui_layer_minscale;
             $newLayer->gui_layer_maxscale = $currentLayer->gui_layer_maxscale;
             $newLayer->gui_layer_wfs_featuretype = $currentLayer->gui_layer_wfs_featuretype;
             $newLayer->gui_layer_title = $currentLayer->gui_layer_title;
             // BEWARE THIS IS SUPER UGLY CODE
             $newLayer->layer_epsg = array();
             for ($z = 0; $z < count($currentLayer->layer_epsg); $z++) {
                 $newLayer->layer_epsg[$z] = array();
                 $newLayer->layer_epsg[$z]["epsg"] = $currentLayer->layer_epsg[$z]->epsg;
                 $newLayer->layer_epsg[$z]["minx"] = $currentLayer->layer_epsg[$z]->minx;
                 $newLayer->layer_epsg[$z]["miny"] = $currentLayer->layer_epsg[$z]->miny;
                 $newLayer->layer_epsg[$z]["maxx"] = $currentLayer->layer_epsg[$z]->maxx;
                 $newLayer->layer_epsg[$z]["maxy"] = $currentLayer->layer_epsg[$z]->maxy;
             }
             // BEWARE THIS IS SUPER UGLY CODE
             $newLayer->layer_style = array();
             for ($z = 0; $z < count($currentLayer->layer_style); $z++) {
                 $newLayer->layer_style[$z] = array();
                 $newLayer->layer_style[$z]["name"] = $currentLayer->layer_style[$z]->name ? $currentLayer->layer_style[$z]->name : "default";
                 $newLayer->layer_style[$z]["title"] = $currentLayer->layer_style[$z]->title ? $currentLayer->layer_style[$z]->title : "default";
                 $newLayer->layer_style[$z]["legendurl"] = $currentLayer->layer_style[$z]->legendurl;
                 $newLayer->layer_style[$z]["legendurlformat"] = $currentLayer->layer_style[$z]->legendurlformat;
             }
         }
         array_push($this->wmsArray, $wms);
     }
     return true;
 }