Width()-1; $minY = 0; $maxY = $monitor->Height()-1; if ( !isset($newZone) ) { if ( $zid > 0 ) { $zone = dbFetchOne( 'SELECT * FROM Zones WHERE MonitorId = ? AND Id=?', NULL, array( $monitor->Id(), $zid ) ); } else { $zone = array( 'Id' => 0, 'Name' => translate('New'), 'Type' => 'Active', 'MonitorId' => $monitor->Id(), 'NumCoords' => 4, 'Coords' => sprintf( "%d,%d %d,%d, %d,%d %d,%d", $minX, $minY, $maxX, $minY, $maxX, $maxY, $minX, $maxY ), 'Area' => $monitor->Width() * $monitor->Height(), 'AlarmRGB' => 0xff0000, 'CheckMethod' => 'Blobs', 'MinPixelThreshold' => '', 'MaxPixelThreshold' => '', 'MinAlarmPixels' => '', 'MaxAlarmPixels' => '', 'FilterX' => '', 'FilterY' => '', 'MinFilterPixels' => '', 'MaxFilterPixels' => '', 'MinBlobPixels' => '', 'MaxBlobPixels' => '', 'MinBlobs' => '', 'MaxBlobs' => '', 'OverloadFrames' => '', 'ExtendAlarmFrames' => '', ); } $zone['Points'] = coordsToPoints( $zone['Coords'] ); $zone['AreaCoords'] = preg_replace( '/\s+/', ',', $zone['Coords'] ); $newZone = $zone; } # end if new Zone # Ensure Zone fits within the limits of the Monitor limitPoints( $newZone['Points'], $minX, $minY, $maxX, $maxY ); ksort( $newZone['Points'], SORT_NUMERIC ); $newZone['Coords'] = pointsToCoords( $newZone['Points'] ); $newZone['Area'] = getPolyArea( $newZone['Points'] ); $newZone['AreaCoords'] = preg_replace( '/\s+/', ',', $newZone['Coords'] ); $selfIntersecting = isSelfIntersecting( $newZone['Points'] ); $focusWindow = true; $connkey = generateConnKey(); $streamSrc = ''; $streamMode = ''; # Have to do this here, because the .js.php references somethings figured out when generating the streamHTML $StreamHTML = getStreamHTML( $monitor, array('scale'=>$scale) ); xhtmlHeaders(__FILE__, translate('Zone') ); ?>