/*
 * Copyright 2014 Mozilla Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package flash.events {
public class GeolocationEvent extends Event {
  public static const UPDATE:String = "update";
  private var _latitude:Number;
  private var _longitude:Number;
  private var _altitude:Number;
  private var _hAccuracy:Number;
  private var _vAccuracy:Number;
  private var _speed:Number;
  private var _heading:Number;
  private var _timestamp:Number;
  public function GeolocationEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false,
                                   latitude:Number = 0, longitude:Number = 0, altitude:Number = 0,
                                   hAccuracy:Number = 0, vAccuracy:Number = 0, speed:Number = 0,
                                   heading:Number = 0, timestamp:Number = 0)
  {
    super(type, bubbles, cancelable);
    _latitude = latitude;
    _longitude = longitude;
    _altitude = altitude;
    _hAccuracy = hAccuracy;
    _vAccuracy = vAccuracy;
    _speed = speed;
    _heading = heading;
    _timestamp = timestamp;
  }
  public function get latitude():Number {
    return _latitude;
  }
  public function set latitude(value:Number):void {
    _latitude = value;
  }
  public function get longitude():Number {
    return _longitude;
  }
  public function set longitude(value:Number):void {
    _longitude = value;
  }
  public function get altitude():Number {
    return _altitude;
  }
  public function set altitude(value:Number):void {
    _altitude = value;
  }
  public function get hAccuracy():Number {
    return _hAccuracy;
  }
  public function set hAccuracy(value:Number):void {
    _hAccuracy = value;
  }
  public function get vAccuracy():Number {
    return _vAccuracy;
  }
  public function set vAccuracy(value:Number):void {
    _vAccuracy = value;
  }
  public function get speed():Number {
    return _speed;
  }
  public function set speed(value:Number):void {
    _speed = value;
  }
  public function get heading():Number {
    return _heading;
  }
  public function set heading(value:Number):void {
    _heading = value;
  }
  public function get timestamp():Number {
    return _timestamp;
  }
  public function set timestamp(value:Number):void {
    _timestamp = value;
  }
  public override function clone():Event {
    return new GeolocationEvent(type, bubbles, cancelable, latitude, longitude, altitude,
                                hAccuracy, vAccuracy, speed, heading, timestamp);
  }
  public override function toString():String {
    return formatToString('GeolocationEvent', 'type', 'bubbles', 'cancelable', 'eventPhase',
                          'latitude', 'longitude', 'altitude', 'hAccuracy', 'vAccuracy',
                          'speed', 'heading', 'timestamp');
  }
}
}
