Added multiple screens preview feature and bug fixed 18/29518/1
authorAlice Liu <alice.liu@intel.com>
Wed, 29 Oct 2014 03:24:32 +0000 (11:24 +0800)
committerAlice Liu <alice.liu@intel.com>
Wed, 29 Oct 2014 03:24:32 +0000 (11:24 +0800)
Fixed CSP bug TC-1434.
Package version up (2.0.40).

Change-Id: I589f511723fef7585b7f72a262d791d8cad1dbbf
Signed-off-by: Alice Liu <alice.liu@intel.com>
package/changelog
package/pkginfo.manifest
web/cache.manifest
web/dbsamples/dbvehicle.json
web/images/previewIcon.png [new file with mode: 0644]
web/ripple.css
web/ripple.html
web/ripple.js

index a608b58..8acb304 100644 (file)
@@ -1,3 +1,7 @@
+* 2.0.41
+- Added multiple screens preview feature
+- Fixed CSP bug TC-1434
+== Alice Liu <alice.liu@intel.com> 2014-10-29 11:24
 * 2.0.40
 - Reconstructed vehicle module according to the new spec
 == Alice Liu <alice.liu@intel.com> 2014-09-24 17:39
index 060c8c0..adf2d9a 100644 (file)
@@ -1,4 +1,4 @@
-Version:2.0.40
+Version:2.0.41
 Maintainer:hyeongseok heo <hyeong-seok.heo@samsung.com>, gyeongseok seo <gyeongseok.seo@samsung.com>, jihoon song <jihoon80.song@samsung.com>, changhyun lee <changhyun1.lee@samsung.com>, bonyong lee <bonyong.lee@samsung.com>
 
 Package:websimulator-core
index a2038e2..5726b94 100644 (file)
@@ -50,6 +50,7 @@ images/pause.png
 images/phoneMap_tDiffuse.png
 images/phoneMap_tNormal.png
 images/play.png
+images/previewIcon.png
 images/refreshIcon.png
 images/rightArrowIcon.png
 images/saveIcon.png
@@ -107,4 +108,4 @@ themes/light/images/ui-icons_454545_256x240.png
 themes/light/images/ui-icons_888888_256x240.png
 themes/light/images/ui-icons_cd0a0a_256x240.png
 themes/light/theme.css
-# Manifest build date: Wed Sep 24 2014 17:34:17 GMT+0800 (CST)
\ No newline at end of file
+# Manifest build date: Wed Oct 29 2014 11:21:00 GMT+0800 (CST)
\ No newline at end of file
index 59ea0c9..ef30fe1 100644 (file)
@@ -1,71 +1,69 @@
 {
-    "supported": ["VehicleSpeed", "WheelSpeed", "EngineSpeed", "VehiclePowerModeType", "TripMeter",
-        "Acceleration", "Transmission", "CruiseControlStatus", "WheelBrake",
+    "supported": ["VehicleSpeed", "WheelSpeed", "EngineSpeed", "VehiclePowerModeType",
+        "Acceleration", "Transmission", "CruiseControlStatus",
         "LightStatus", "InteriorLightStatus", "Horn", "Fuel", "EngineOil",
-        "Location", "ExteriorBrightness", "Temperature", "RainSensor",
-        "WindshieldWiper", "ClimateControl", "WindowStatus", "Sunroof", "ConvertibleRoof",
-        "Identification", "SizeConfiguration", "FuelConfiguration", "VehicleType", "Doors",
-        "TransmissionConfiguration", "WheelInformation", "Odometer", "Fluid", "BatteryStatus",
-        "TirePressure", "TireTemperature", "SecurityAlert", "ParkingBrake",
-        "ParkingLight", "HazardLight", "AntilockBrakingSystem", "TractionControlSystem",
-        "VehicleTopSpeedLimit", "AirbagStatus", "DoorStatus", "SeatBeltStatus",
-        "OccupantStatus", "ObstacleDistance", "NightMode", "DrivingMode",
-        "TurnSignal", "ButtonEvent", "SteeringWheel", "ThrottlePosition", "EngineCoolant"],
+        "Temperature", "RainSensor",
+        "ClimateControl", "Sunroof", "ConvertibleRoof",
+        "Identification", "SizeConfiguration", "FuelConfiguration",
+        "TransmissionConfiguration", "Odometer", "BatteryStatus", "ParkingBrake",
+        "AntilockBrakingSystem", "TractionControlSystem",
+        "AirbagStatus", "NightMode", "DrivingMode",
+        "ButtonEvent", "SteeringWheel", "ThrottlePosition", "EngineCoolant"],
     "newestHistory": null,
     "currentConfiguration": 0,
     "configurationData": [
-        ["AFA", "21D1M2883N342FFG7", 2096, 1860, 4779, 0, 0, 0, [2, 2], 0, 1953, 2000, 1465, true],
-        ["KMH", "21D1M2888N342FFL7", 2125, 1961, 4901, 4, 3, 4, [2, 2], 2, 1964, 2000, 1470, true],
-        ["AAV", "31D1M2878N342DFL9", 2025, 1861, 4811, 4, 3, 1, [2, 2], 2, 1964, 2000, 1470, true]
+        ["AFA", "21D1M2883N342FFG7", 2096, 1860, 4779, 0, 0, 0],
+        ["KMH", "21D1M2888N342FFL7", 2125, 1961, 4901, 4, 3, 2],
+        ["AAV", "31D1M2878N342DFL9", 2025, 1861, 4811, 4, 3, 2]
     ],
     "settingData": [
-        0, 0, true, 0, true, false, false, false, false, false, false, false, false, false, false, false, false,
-        0, 0x04, 0, 0, false, false, false, false, false, false, 0, 0, "closed", true, "inactive", true, true, true, true, 120,
-        0, true, false, 0, true, true, false, 0, 10, false, false, 0, 0, 0, 10, 80, 50, 50, 70, 70, 10, 10, 10, 10 ],
+        0, 0, true, 0, false, false, false, false, false, false, false, false, false, false, false, false,
+        0x04, 0, 0, false, false, false, false, false, false, 0, 0, "closed", "inactive", true, true,
+        false, false, false, 10, 80],
     "autoRunningData": [
-        [0,   0,   0,    0, [0],                       0,  0,  0,  100, 20, 59, 10, 15, 100, 5,  0,  -23.5, -54.4, 100.1, 0, 100, 0,  9, 0, 1500, 10, 10, -90, 0,  10, 40],
-        [10,  10,  100,  3, [100],                     10, 10, 10, 99,  20, 59, 10, 15, 99,  10, 20, -23.0, -53.2, 100.4, 0, 100, 5,  4, 0, 1600, 10, 10, -80, 2,  10, 41],
-        [20,  20,  200,  3, [110],                     20, 20, 20, 98,  20, 59, 10, 15, 98,  20, 30, -22.5, -54.0, 100.9, 0, 100, 15, 5, 0, 1700, 10, 10, -70, 4,  10, 42],
-        [30,  30,  300,  3, [120],                     20, 20, 20, 97,  20, 59, 10, 15, 97,  30, 40, -22.0, -55.4, 100.5, 0, 100, 20, 6, 0, 1800, 10, 10, -60, 6,  10, 43],
-        [40,  40,  400,  3, [130],                     20, 20, 20, 96,  20, 59, 10, 15, 96,  35, 54, -21.5, -54.4, 99.4,  0, 100, 22, 2, 0, 1900, 10, 10, -50, 8,  10, 44],
-        [50,  50,  500,  3, [140],                     20, 20, 20, 95,  20, 59, 10, 15, 95,  32, 50, -21.0, -54.9, 100.5, 0, 100, 21, 5, 0, 2000, 10, 10, -40, 10, 10, 45],
-        [60,  60,  600,  3, [140, 100],                20, 20, 20, 94,  20, 59, 10, 15, 94,  30, 54, -20.5, -54.4, 98.9,  0, 100, 20, 7, 0, 2100, 10, 10, -30, 12, 10, 50],
-        [70,  70,  700,  3, [140, 110],                20, 20, 20, 93,  20, 59, 10, 15, 93,  31, 51, -20.0, -54.4, 100.5, 0, 100, 21, 9, 0, 2200, 10, 10, -20, 14, 10, 51],
-        [80,  80,  800,  3, [140, 120],                20, 20, 20, 92,  20, 59, 10, 15, 92,  30, 54, -19.5, -56.4, 99.5,  0, 100, 21, 8, 0, 2300, 10, 10, -10, 16, 10, 52],
-        [90,  90,  900,  3, [140, 130],                20, 20, 20, 91,  20, 59, 10, 15, 91,  32, 49, -19.0, -54.4, 100.5, 0, 100, 21, 6, 0, 2400, 10, 10, 0,   18, 10, 53],
-        [100, 100, 1000, 3, [140, 140],                20, 20, 20, 90,  20, 59, 10, 15, 90,  30, 54, -18.5, -52.4, 100.5, 0, 100, 22, 9, 0, 2500, 10, 10, 10,  20, 10, 54],
-        [110, 110, 1100, 3, [140, 150],                20, 20, 20, 89,  20, 59, 10, 15, 89,  30, 54, -18.0, -54.4, 100.5, 0, 100, 21, 8, 0, 2600, 10, 10, 20,  22, 10, 55],
-        [120, 120, 1200, 3, [140, 160],                20, 20, 20, 88,  20, 59, 10, 15, 88,  29, 48, -17.8, -51.4, 97.2,  0, 100, 20, 6, 0, 2700, 10, 10, 30,  24, 10, 60],
-        [130, 130, 1300, 3, [140, 160, 100],           20, 20, 20, 87,  20, 59, 10, 15, 87,  30, 54, -17.4, -54.1, 100.5, 0, 100, 21, 5, 0, 2800, 10, 10, 40,  26, 10, 61],
-        [140, 140, 1400, 3, [140, 160, 110],           20, 20, 20, 86,  20, 59, 10, 15, 86,  25, 46, -16.9, -54.4, 100.2, 0, 100, 19, 4, 0, 2900, 10, 10, 50,  28, 10, 62],
-        [150, 150, 1500, 3, [140, 160, 120],           20, 20, 20, 85,  20, 59, 10, 15, 85,  30, 54, -16.4, -54.3, 100.5, 0, 100, 21, 9, 0, 3000, 10, 10, 60,  30, 10, 63],
-        [160, 160, 1600, 3, [140, 160, 130],           20, 20, 20, 84,  20, 59, 10, 15, 84,  30, 54, -16.0, -54.4, 100.5, 0, 100, 23, 3, 0, 3100, 10, 10, 70,  32, 10, 64],
-        [170, 170, 1700, 3, [140, 160, 140],           20, 20, 20, 83,  20, 59, 10, 15, 83,  28, 51, -15.0, -54.4, 100.0, 0, 100, 21, 5, 0, 3200, 10, 10, 80,  34, 10, 65],
-        [180, 180, 1800, 3, [140, 160, 150],           20, 20, 20, 82,  20, 59, 10, 15, 82,  30, 54, -14.3, -54.9, 100.5, 0, 100, 21, 6, 0, 3300, 10, 10, 90,  36, 10, 80],
-        [190, 190, 1900, 3, [140, 160, 160],           20, 20, 20, 81,  20, 59, 10, 15, 81,  27, 54, -14.0, -54.4, 100.5, 0, 100, 20, 5, 0, 3400, 10, 10, 80,  38, 10, 81],
-        [200, 200, 2000, 3, [140, 160, 170],           20, 20, 20, 80,  20, 59, 10, 15, 80,  30, 52, -13.2, -54.4, 101.5, 0, 100, 21, 5, 0, 3500, 10, 10, 70,  40, 10, 82],
-        [210, 210, 2100, 3, [140, 160, 180],           20, 20, 20, 79,  20, 59, 10, 15, 79,  30, 53, -12.5, -54.4, 100.5, 0, 100, 22, 6, 0, 3600, 10, 10, 60,  42, 10, 83],
-        [220, 220, 2200, 3, [140, 160, 190],           20, 20, 20, 78,  20, 59, 10, 15, 78,  32, 54, -11.0, -54.7, 105.5, 0, 100, 21, 4, 0, 3700, 10, 10, 50,  44, 10, 84],
-        [230, 230, 2300, 3, [140, 160, 200],           20, 20, 20, 77,  20, 59, 10, 15, 77,  30, 54, -10.5, -51.9, 100.5, 0, 100, 22, 0, 0, 3800, 10, 10, 40,  46, 10, 85],
-        [240, 240, 2400, 3, [140, 160, 200, 100],      20, 20, 20, 76,  20, 59, 10, 15, 76,  33, 55, -6.9,  -54.4, 100.3, 0, 100, 21, 8, 0, 3900, 10, 10, 30,  48, 10, 100],
-        [250, 250, 2500, 3, [140, 160, 200, 110],      20, 20, 20, 75,  20, 59, 10, 15, 75,  30, 54, 0,     -54.4, 110.5, 0, 100, 21, 1, 0, 4000, 10, 10, 20,  50, 10, 101],
-        [260, 260, 2600, 3, [140, 160, 200, 110, 100], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 4100, 10, 10, 10,  52, 10, 102],
-        [270, 270, 2700, 3, [140, 160, 200, 110, 110], 20, 20, 20, 73,  20, 59, 10, 15, 73,  30, 50, 11.2,  -54.4, 100.5, 0, 100, 21, 6, 0, 4200, 10, 10, 0,   54, 10, 103],
-        [280, 280, 2800, 3, [140, 160, 200, 110, 120], 20, 20, 20, 72,  20, 59, 10, 15, 72,  28, 54, 12.5,  -54.4, 102.4, 0, 100, 18, 5, 0, 4300, 10, 10, 0,   56, 10, 104],
-        [270, 270, 2700, 3, [140, 160, 200, 110, 130], 20, 20, 20, 73,  20, 59, 10, 15, 73,  30, 50, 11.2,  -54.4, 100.5, 0, 100, 21, 6, 0, 4400, 10, 10, -10, 58, 10, 105],
-        [260, 260, 2600, 3, [140, 160, 200, 110, 140], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 4500, 10, 10, -20, 60, 10, 110],
-        [240, 240, 2400, 3, [140, 160, 200, 110, 150], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 4600, 10, 10, -40, 62, 10, 111],
-        [220, 220, 2200, 3, [140, 160, 200, 110, 160], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 4700, 10, 10, -60, 64, 10, 112],
-        [200, 200, 2000, 3, [140, 160, 200, 110, 170], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 4800, 10, 10, -80, 66, 10, 113],
-        [180, 180, 1800, 3, [140, 160, 200, 110, 180], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 4900, 10, 10, -90, 68, 10, 114],
-        [160, 160, 1600, 3, [140, 160, 200, 110, 190], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 5000, 10, 10, -80, 70, 10, 115],
-        [140, 140, 1400, 3, [140, 160, 200, 110, 200], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 5100, 10, 10, -70, 72, 10, 120],
-        [120, 120, 1200, 3, [140, 160, 200, 110, 210], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 5200, 10, 10, -40, 74, 10, 121],
-        [100, 100, 1000, 3, [140, 160, 200, 110, 220], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 5300, 10, 10, -20, 76, 10, 122],
-        [80,  80,  800,  3, [140, 160, 200, 110, 230], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 5400, 10, 10, -10, 78, 10, 123],
-        [60,  60,  600,  3, [140, 160, 200, 110, 240], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 5500, 10, 10, 0,   80, 10, 124],
-        [40,  40,  400,  3, [140, 160, 200, 110, 250], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 5600, 10, 10, 0,   82, 10, 125],
-        [20,  20,  200,  3, [140, 160, 200, 110, 260], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 5700, 10, 10, 0,   84, 10, 130],
-        [10,  10,  100,  3, [140, 160, 200, 110, 270], 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 1.9,   -54.4, 100.5, 0, 100, 20, 7, 0, 5800, 10, 10, 10,  86, 10, 131]
+        [0,   0,   0,    0, 0,  0,  0,  100, 20, 59, 10, 15, 100, 5,  0,  0,  9, 0, 1500, 10, -90, 0,  10, 40],
+        [10,  10,  100,  3, 10, 10, 10, 99,  20, 59, 10, 15, 99,  10, 20, 5,  4, 0, 1600, 10, -80, 2,  10, 41],
+        [20,  20,  200,  3, 20, 20, 20, 98,  20, 59, 10, 15, 98,  20, 30, 15, 5, 0, 1700, 10, -70, 4,  10, 42],
+        [30,  30,  300,  3, 20, 20, 20, 97,  20, 59, 10, 15, 97,  30, 40, 20, 6, 0, 1800, 10, -60, 6,  10, 43],
+        [40,  40,  400,  3, 20, 20, 20, 96,  20, 59, 10, 15, 96,  35, 54, 22, 2, 0, 1900, 10, -50, 8,  10, 44],
+        [50,  50,  500,  3, 20, 20, 20, 95,  20, 59, 10, 15, 95,  32, 50, 21, 5, 0, 2000, 10, -40, 10, 10, 45],
+        [60,  60,  600,  3, 20, 20, 20, 94,  20, 59, 10, 15, 94,  30, 54, 20, 7, 0, 2100, 10, -30, 12, 10, 50],
+        [70,  70,  700,  3, 20, 20, 20, 93,  20, 59, 10, 15, 93,  31, 51, 21, 9, 0, 2200, 10, -20, 14, 10, 51],
+        [80,  80,  800,  3, 20, 20, 20, 92,  20, 59, 10, 15, 92,  30, 54, 21, 8, 0, 2300, 10, -10, 16, 10, 52],
+        [90,  90,  900,  3, 20, 20, 20, 91,  20, 59, 10, 15, 91,  32, 49, 21, 6, 0, 2400, 10, 0,   18, 10, 53],
+        [100, 100, 1000, 3, 20, 20, 20, 90,  20, 59, 10, 15, 90,  30, 54, 22, 9, 0, 2500, 10, 10,  20, 10, 54],
+        [110, 110, 1100, 3, 20, 20, 20, 89,  20, 59, 10, 15, 89,  30, 54, 21, 8, 0, 2600, 10, 20,  22, 10, 55],
+        [120, 120, 1200, 3, 20, 20, 20, 88,  20, 59, 10, 15, 88,  29, 48, 20, 6, 0, 2700, 10, 30,  24, 10, 60],
+        [130, 130, 1300, 3, 20, 20, 20, 87,  20, 59, 10, 15, 87,  30, 54, 21, 5, 0, 2800, 10, 40,  26, 10, 61],
+        [140, 140, 1400, 3, 20, 20, 20, 86,  20, 59, 10, 15, 86,  25, 46, 19, 4, 0, 2900, 10, 50,  28, 10, 62],
+        [150, 150, 1500, 3, 20, 20, 20, 85,  20, 59, 10, 15, 85,  30, 54, 21, 9, 0, 3000, 10, 60,  30, 10, 63],
+        [160, 160, 1600, 3, 20, 20, 20, 84,  20, 59, 10, 15, 84,  30, 54, 23, 3, 0, 3100, 10, 70,  32, 10, 64],
+        [170, 170, 1700, 3, 20, 20, 20, 83,  20, 59, 10, 15, 83,  28, 51, 21, 5, 0, 3200, 10, 80,  34, 10, 65],
+        [180, 180, 1800, 3, 20, 20, 20, 82,  20, 59, 10, 15, 82,  30, 54, 21, 6, 0, 3300, 10, 90,  36, 10, 80],
+        [190, 190, 1900, 3, 20, 20, 20, 81,  20, 59, 10, 15, 81,  27, 54, 20, 5, 0, 3400, 10, 80,  38, 10, 81],
+        [200, 200, 2000, 3, 20, 20, 20, 80,  20, 59, 10, 15, 80,  30, 52, 21, 5, 0, 3500, 10, 70,  40, 10, 82],
+        [210, 210, 2100, 3, 20, 20, 20, 79,  20, 59, 10, 15, 79,  30, 53, 22, 6, 0, 3600, 10, 60,  42, 10, 83],
+        [220, 220, 2200, 3, 20, 20, 20, 78,  20, 59, 10, 15, 78,  32, 54, 21, 4, 0, 3700, 10, 50,  44, 10, 84],
+        [230, 230, 2300, 3, 20, 20, 20, 77,  20, 59, 10, 15, 77,  30, 54, 22, 0, 0, 3800, 10, 40,  46, 10, 85],
+        [240, 240, 2400, 3, 20, 20, 20, 76,  20, 59, 10, 15, 76,  33, 55, 21, 8, 0, 3900, 10, 30,  48, 10, 100],
+        [250, 250, 2500, 3, 20, 20, 20, 75,  20, 59, 10, 15, 75,  30, 54, 21, 1, 0, 4000, 10, 20,  50, 10, 101],
+        [260, 260, 2600, 3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 4100, 10, 10,  52, 10, 102],
+        [270, 270, 2700, 3, 20, 20, 20, 73,  20, 59, 10, 15, 73,  30, 50, 21, 6, 0, 4200, 10, 0,   54, 10, 103],
+        [280, 280, 2800, 3, 20, 20, 20, 72,  20, 59, 10, 15, 72,  28, 54, 18, 5, 0, 4300, 10, 0,   56, 10, 104],
+        [270, 270, 2700, 3, 20, 20, 20, 73,  20, 59, 10, 15, 73,  30, 50, 21, 6, 0, 4400, 10, -10, 58, 10, 105],
+        [260, 260, 2600, 3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 4500, 10, -20, 60, 10, 110],
+        [240, 240, 2400, 3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 4600, 10, -40, 62, 10, 111],
+        [220, 220, 2200, 3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 4700, 10, -60, 64, 10, 112],
+        [200, 200, 2000, 3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 4800, 10, -80, 66, 10, 113],
+        [180, 180, 1800, 3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 4900, 10, -90, 68, 10, 114],
+        [160, 160, 1600, 3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 5000, 10, -80, 70, 10, 115],
+        [140, 140, 1400, 3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 5100, 10, -70, 72, 10, 120],
+        [120, 120, 1200, 3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 5200, 10, -40, 74, 10, 121],
+        [100, 100, 1000, 3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 5300, 10, -20, 76, 10, 122],
+        [80,  80,  800,  3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 5400, 10, -10, 78, 10, 123],
+        [60,  60,  600,  3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 5500, 10, 0,   80, 10, 124],
+        [40,  40,  400,  3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 5600, 10, 0,   82, 10, 125],
+        [20,  20,  200,  3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 5700, 10, 0,   84, 10, 130],
+        [10,  10,  100,  3, 20, 20, 20, 74,  20, 59, 10, 15, 74,  29, 54, 20, 7, 0, 5800, 10, 10,  86, 10, 131]
     ]
 }
diff --git a/web/images/previewIcon.png b/web/images/previewIcon.png
new file mode 100644 (file)
index 0000000..d6bd117
Binary files /dev/null and b/web/images/previewIcon.png differ
index 804334a..bc28bec 100644 (file)
@@ -1800,6 +1800,62 @@ textarea {
     height: 20px;
 }
 
+#preview-window-popup {
+    display: none;
+    width: 806px;
+    padding: 16px 8px 10px 8px;
+    position: absolute;
+    top: 60px;
+    left: 200px;
+    z-index: 1001;
+    font-family: Arial, Helvetica, sans-serif;
+    padding-left: 12px;
+    background-color: #f3f3f3;
+    -moz-box-shadow: 0 10px 15px #555555; /* Firefox 3.6 and earlier */
+    box-shadow: 0 10px 15px #555555;
+    -webkit-border-radius: 7px 7px 7px 7px;
+    -moz-border-radius: 7px 7px 7px 7px;
+    border-radius: 7px 7px 7px 7px;
+}
+
+#preview-window-container-div {
+    z-index: 0;
+    padding:0;
+    background-color: #ffffff;
+    border-top:1px solid #a1a1a1;
+    border-left:1px solid #888888;
+    border-right:1px solid #888888;
+    border-bottom:1px solid #888888;
+    width:792px;
+    height:500px;
+    overflow: auto;
+    position: relative;
+}
+
+#preview-window-container-div table {
+    margin: 0;
+    position: absolute;
+}
+
+.preview-window-title-div {
+    font-size:15px;
+    font-weight:bold;
+    background-color: #c6c6c6;
+    color: #444444;
+    width:802px;
+    height:32px;
+    padding: 5px 0 0 0;
+    text-align:center;
+    vertical-align: middle;
+    display: table-cell;
+}
+
+#preview-window-close-btn {
+    font-size: 12px;
+    width: 24px;
+    height: 20px;
+}
+
 #configure-window-popup {
     display: none;
     width: 806px;
index 05cd79b..0122351 100644 (file)
@@ -36,6 +36,7 @@
                     <button id="options-button-history" class="button rightMostButton" role="button" style="float:left; margin-left:0;"><img src="images/downArrowIcon.png"></button>
                     <span class="options">
                         <div>
+                             <button id="options-button-preview-window" class="button cornerButton" role="button" style="margin-right: 4px;"><img src="images/previewIcon.png"></button>
                              <button id="options-button-config-window" class="button cornerButton" role="button" style="margin-right: 4px;"><img src="images/configPanelIcon.png"></button>
                              <button id="options-button-panels" class="button cornerButton" role="button" style="margin-right: 4px;"><img src="images/panelsIcon.png"></button>
                              <!--
                 <div id="overlayBackground" style="DISPLAY:none; position: absolute; z-index:1000; top:0; left:0; background-color:rgba(0, 0, 0, 0.4);"></div>
                 </section>
             </section>
+            <!--
+ *  Copyright 2014 Intel Corporation
+ *
+ * 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.
+-->
+<section id="preview-window">
+    <div id="preview-window-popup">
+       <table style="border-collapse: collapse; border-spacing:0px;">
+            <tr>
+                <td colspan="2" style="border-width:0px; padding: 0px;">
+                    <span class="preview-window-title-div">
+                        <label style="float:left; margin-left:320px; margin-top:3px;">Preview All Resolutions</label>
+                        <button id="preview-window-close-btn" style="float:right; margin-right:15px;">x</button>
+                    </span>
+                </td>
+            </tr>
+            <tr>
+                <td colspan="2" style="background-color: #c6c6c6; padding:4px 4px 4px 4px; height:300px; border-width:0px; position: relative;">
+                    <div id="preview-window-container-div">
+                    </div>
+                    <div id="preview-window-container-bar" style="position: absolute; top: 5px; right: 5px; height: 498px;">
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td colspan="2" style="border-width:0px; padding: 0px; background: #C6C6C6;">
+                    <label class="preview-window-scale-num" for="preview-window-scale-range" style="position: absolute; margin-top: 7px; margin-left: 10px; margin-right: 5px;">100%</label>
+                    <input id="preview-window-scale-range" type="range" value="100" min="10" max="150" step="10" class="ui-state-default ui-corner-all" style="margin-left: 60px; width: 400px;">
+                    <!--<button class="configuration-window-done-button" style="float:right; margin-right:15px;">Done</button>-->
+                    <button id="preview-window-preview-btn" class="configuration-window-done-button" style="float:right; margin-right:15px;">Preview</button>
+                    <button id="preview-window-back-btn" class="configuration-window-done-button" style="float:right; margin-right:15px;">Cancel</button>
+                </td>
+            </tr>
+        </table>
+    </div>
+</section>
+
+
             <section id="configure-window-overlay">
     <div id="configure-window-popup">
         <table style="border-collapse: collapse; border-spacing:0px;">
index 808bb59..ae1f587 100644 (file)
@@ -1,5 +1,5 @@
 /*! 
-  Ripple Mobile Environment Emulator v0.9.8 :: Built On Wed Sep 24 2014 17:34:15 GMT+0800 (CST)
+  Ripple Mobile Environment Emulator v0.9.8 :: Built On Wed Oct 29 2014 11:20:58 GMT+0800 (CST)
 
                                 Apache License
                            Version 2.0, January 2004
@@ -70769,7 +70769,7 @@ function _beforeLoad() {
 }
 
 function _bindObjectsToFrame(frame) {
-    _srcChangedObserver.observe(frame, {attributes: true, attributeFilter: ["src"]});
+    //_srcChangedObserver.observe(frame, {attributes: true, attributeFilter: ["src"]});
     frame.addEventListener("DOMNodeInserted", _beforeLoad);
 //    frame.addEventListener("beforeload", _beforeLoad);
     // beforeload event of an iframe will not be triggered unless we detach and
@@ -70850,7 +70850,7 @@ function _post(src) {
             setTimeout(function() {
                 jQuery("#device-maskmask").hide();
             }, 50);
-        }
+        };
 
         event.trigger("TinyHipposLoaded");
         _cleanBody();
@@ -73434,6 +73434,59 @@ module.exports = {
 };
 
 });
+define('ripple/devices/TV-HD', function (require, exports, module) {
+/*
+ *  Copyright 2014 Intel Corporation
+ *
+ * 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 requWEBAPIS-HD.jsired 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.
+ */
+
+module.exports = {
+    "id": "TV-HD",
+    "name": "TV HD (1280x720)",
+    "osName": "Generic",
+    "osVersion": "Generic",
+    "manufacturer": "Tizen",
+    "model": "Generic",
+    "uuid": "42",
+    "firmware": "Generic",
+
+    "screen": {
+        "width": 1280,
+        "height": 720
+    },
+    "viewPort": {
+        "portrait": {
+            "width": 1280,
+            "height": 720,
+            "paddingTop": 0,
+            "paddingLeft": 0
+        },
+        "landscape": {
+            "width": 1280,
+            "height": 720,
+            "paddingTop": 0,
+            "paddingLeft": 0
+        }
+    },
+
+    "ppi": 316,
+    "browser": ["Generic"],
+    "platforms": ["tv"],
+    "userAgent": "Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.7 Safari/533.2"
+};
+
+});
 define('ripple/devices/Tattoo', function (require, exports, module) {
 /*
  *  Copyright 2011 Research In Motion Limited.
@@ -74238,6 +74291,7 @@ _self = module.exports = {
 */          "FULL-HD",
             "IVI-HD",
             "Wearable-HD",
+            "TV-HD",
             "tizen-WVGA",
 /*
             "HPPre3",
@@ -77711,29 +77765,23 @@ VehiclePanelEngine = function () {
 
 //can support all properties.
 _vehicleMapStack.vehicleProperties = [
-    "VehicleSpeed", "WheelSpeed", "EngineSpeed", "VehiclePowerModeType", "TripMeter",
-    "Acceleration", "Transmission", "CruiseControlStatus", "WheelBrake",
-    "LightStatus", "InteriorLightStatus", "Horn", "Fuel", "EngineOil",
-    "Location", "ExteriorBrightness", "Temperature", "RainSensor",
-    "WindshieldWiper", "ClimateControl", "WindowStatus", "Sunroof", "ConvertibleRoof",
-    "Identification", "SizeConfiguration", "FuelConfiguration", "VehicleType", "Doors",
-    "TransmissionConfiguration", "WheelInformation", "Odometer", "Fluid", "BatteryStatus",
-    "TirePressure", "TireTemperature", "SecurityAlert", "ParkingBrake",
-    "ParkingLight", "HazardLight", "AntilockBrakingSystem", "TractionControlSystem",
-    "VehicleTopSpeedLimit", "AirbagStatus", "DoorStatus", "SeatBeltStatus",
-    "OccupantStatus", "ObstacleDistance", "NightMode", "DrivingMode",
-    "TurnSignal", "ButtonEvent", "SteeringWheel", "ThrottlePosition", "EngineCoolant"
+    "VehicleSpeed", "WheelSpeed", "EngineSpeed", "VehiclePowerModeType",
+    "Acceleration", "Transmission", "CruiseControlStatus", "LightStatus",
+    "InteriorLightStatus", "Horn", "Fuel", "EngineOil", "Temperature",
+    "RainSensor", "ClimateControl", "Sunroof", "ConvertibleRoof",
+     "Identification", "SizeConfiguration", "FuelConfiguration",
+    "TransmissionConfiguration", "Odometer", "BatteryStatus", "ParkingBrake",
+    "AntilockBrakingSystem", "TractionControlSystem", "AirbagStatus",
+    "NightMode", "DrivingMode", "ButtonEvent", "SteeringWheel",
+    "ThrottlePosition", "EngineCoolant"
 ];
 
 //Vehicle Configuration
 _vehicleMapStack.vehicleConfigurationMap = [
-    "Identification-WMI", "Identification-VIN",
-    "SizeConfiguration-width", "SizeConfiguration-height", "SizeConfiguration-length",
+    "Identification-WMI", "Identification-VIN", "SizeConfiguration-width",
+    "SizeConfiguration-height", "SizeConfiguration-length",
     "FuelConfiguration-fuelType", "FuelConfiguration-refuelPosition",
-    "VehicleType-type",
-    "Doors-doorsPerRow",
-    "TransmissionConfiguration-transmissionGearType",
-    "WheelInformation-frontWheelRadius", "WheelInformation-rearWheelRadius", "WheelInformation-wheelTrack", "WheelInformation-ABS"
+    "TransmissionConfiguration-transmissionGearType"
 ];
 
 //all ranged attributes' min. max and step.
@@ -77752,11 +77800,6 @@ _vehicleMapStack.vehiclePropertyRangeMap = {
     "EngineOil-remaining": [0, 100, 1],
     "EngineOil-temperature": [0, 100, 1],
     "EngineOil-pressure": [0, 1000, 1],
-    "Location-latitude": [-180, 180, 1],
-    "Location-longitude": [-19, 90, 1],
-    "Location-altitude": [0, 100, 1],
-    "Location-direction": [0, 360, 1],
-    "ExteriorBrightness-exteriorBrightness": [0, 100, 1],
     "Temperature-interiorTemperature": [-5, 35, 1],
     "Temperature-exteriorTemperature": [-40, 60, 1],
     "Odometer-distanceTotal": [0, 10000, 10],
@@ -77764,23 +77807,8 @@ _vehicleMapStack.vehiclePropertyRangeMap = {
     "ClimateControl-targetTemperature": [0, 35, 7],
     "Sunroof-openness": [0, 100, 1],
     "Sunroof-tilt": [0, 100, 1],
-    "WindowStatus-openness": [0, 100, 1],
-    "VehicleTopSpeedLimit-vehicleTopSpeedLimit": [0, 400, 1],
-    "ObstacleDistance-obstacleDistance": [0, 120, 1],
-    "Fluid-transmission": [0, 100, 1],
-    "Fluid-brake": [0, 100, 1],
-    "Fluid-washer": [0, 100, 1],
     "BatteryStatus-voltage": [0, 12, 1],
     "BatteryStatus-current": [0, 200, 1],
-    "TirePressure-leftFront": [0, 500, 1],
-    "TirePressure-rightFront": [0, 500, 1],
-    "TirePressure-leftRear": [0, 500, 1],
-    "TirePressure-rightRear": [0, 500, 1],
-    "TireTemperature-leftFront": [0, 60, 1],
-    "TireTemperature-rightFront": [0, 60, 1],
-    "TireTemperature-leftRear": [0, 60, 1],
-    "TireTemperature-rightRear": [0, 60, 1],
-    "TurnSignal-turnSignal": [0, 100, 1],
     "ButtonEvent-buttonEvent": [0, 100, 1],
     "SteeringWheel-angle": [-90, 90, 1],
     "ThrottlePosition-value": [0, 100, 1],
@@ -77804,9 +77832,6 @@ _vehicleMapStack.vehicleAutoRunningMap = {
         "options": [{"OFF": "off"},{"ACCESSORY1": "accessory1"},
             {"ACCESSORY2": "accessory2"},{"RUNNING": "running"}]
     },
-    "TripMeter-tripMeters": {
-        "type": "text"
-    },
     "Acceleration-x": {
         "type": "range"
     },
@@ -77840,21 +77865,6 @@ _vehicleMapStack.vehicleAutoRunningMap = {
     "EngineOil-pressure": {
         "type": "range"
     },
-    "Location-latitude": {
-        "type": "range"
-    },
-    "Location-longitude": {
-        "type": "range"
-    },
-    "Location-altitude": {
-        "type": "range"
-    },
-    "Location-direction": {
-        "type": "range"
-    },
-    "ExteriorBrightness-exteriorBrightness": {
-        "type": "range"
-    },
     "Temperature-interiorTemperature": {
         "type": "range"
     },
@@ -77863,15 +77873,13 @@ _vehicleMapStack.vehicleAutoRunningMap = {
     },
     "RainSensor-rain": {
         "type": "select",
-        "options": [{"No Rain": 0},{"Rain 1": 1},{"Rain 2": 2},{"Rain 3": 3},{"Rain 4": 4},{"Rain 5": 5},
-            {"Rain 6": 6},{"Rain 7": 7},{"Rain 8": 8},{"Rain 9": 9},{"Heaviest": 10}]
+        "options": [{"No Rain": 0},{"Rain 1": 1},{"Rain 2": 2},{"Rain 3": 3},
+            {"Rain 4": 4},{"Rain 5": 5},{"Rain 6": 6},{"Rain 7": 7},
+            {"Rain 8": 8},{"Rain 9": 9},{"Heaviest": 10}]
     },
     "Odometer-distanceTotal": {
         "type": "range"
     },
-    "TurnSignal-turnSignal": {
-        "type": "range"
-    },
     "ButtonEvent-buttonEvent": {
         "type": "range"
     },
@@ -77893,13 +77901,15 @@ _vehicleMapStack.vehicleAutoRunningMap = {
 _vehicleMapStack.vehicleSettingMap = {
     "Transmission-gear": {
         "type": "select",
-        "options": [{"NEUTRAL": 0},{"FIRST": 1},{"SECOND": 2},{"THIRD": 3}, {"FORTH": 4},{"FIFTH": 5},
-            {"SIXTH": 6},{"SEVENTH": 7}, {"EIGHTH": 8},{"NINTH": 9},{"TENTH": 10},{"CVT": 64},
+        "options": [{"NEUTRAL": 0},{"FIRST": 1},{"SECOND": 2},{"THIRD": 3},
+            {"FORTH": 4},{"FIFTH": 5},{"SIXTH": 6},{"SEVENTH": 7},
+            {"EIGHTH": 8},{"NINTH": 9},{"TENTH": 10},{"CVT": 64},
             {"REVERSE": 128},{"PARK": 255}]
     },
     "Transmission-mode": {
         "type": "select",
-        "options": [{"NORMAL": 0},{"SPORT": 1},{"ECONOMY": 2}, {"OEMCUSTOM1": 3},{"OEMCUSTOM2": 4}]
+        "options": [{"NORMAL": 0},{"SPORT": 1},{"ECONOMY": 2},
+            {"OEMCUSTOM1": 3},{"OEMCUSTOM2": 4}]
     },
     "CruiseControlStatus-status": {
         "type": "radio",
@@ -77908,10 +77918,6 @@ _vehicleMapStack.vehicleSettingMap = {
     "CruiseControlStatus-speed": {
         "type": "range"
     },
-    "WheelBrake-engaged": {
-        "type": "radio",
-        "options": [{"Engaged": true}, {"Disengaged": false}]
-    },
     "LightStatus-head": {
         "type": "radio",
         "options": [{"On": true}, {"Off": false}]
@@ -77960,17 +77966,15 @@ _vehicleMapStack.vehicleSettingMap = {
         "type": "radio",
         "options": [{"On": true}, {"Off": false}]
     },
-    "WindshieldWiper-windshieldWiper": {
-        "type": "select",
-        "options": [{"OFF": 0},{"SLOWEST": 1},{"FASTEST": 5},{"AUTO": 10}]
-    },
     "ClimateControl-airflowDirection": {
         "type": "select",
-        "options": [{"FRONTPANEL": 0},{"FLOORDUCT": 1},{"FRONT": 0x02}, {"DEFROSTER": 0x04}]
+        "options": [{"FRONTPANEL": 0},{"FLOORDUCT": 1},{"FRONT": 0x02},
+            {"DEFROSTER": 0x04}]
     },
     "ClimateControl-fanSpeedLevel": {
         "type": "select",
-        "options": [{"0": 0},{"1": 1},{"2": 2},{"3": 3},{"4": 4},{"5": 5}, {"6": 6},{"7": 7}]
+        "options": [{"0": 0},{"1": 1},{"2": 2},{"3": 3},{"4": 4},{"5": 5},
+            {"6": 6},{"7": 7}]
     },
     "ClimateControl-targetTemperature": {
         "type": "range"
@@ -78010,23 +78014,11 @@ _vehicleMapStack.vehicleSettingMap = {
         "options": [{"CLOSED": "closed"},{"CLOSING": "closing"},
             {"OPENING": "opening"},{"OPENED": "opened"}]
     },
-    "SecurityAlert-securityAlert": {
-        "type": "radio",
-        "options": [{"On": true}, {"Off": false}]
-    },
     "ParkingBrake-status": {
         "type": "select",
         "options": [{"INACTIVE": "inactive"},{"ACTIVE": "active"},
             {"ERROR": "error"}]
     },
-    "ParkingLight-parkingLight": {
-        "type": "radio",
-        "options": [{"Engaged": true}, {"Disengaged": false}]
-    },
-    "HazardLight-hazardLight": {
-        "type": "radio",
-        "options": [{"Engaged": true}, {"Disengaged": false}]
-    },
     "AntilockBrakingSystem-engaged": {
         "type": "radio",
         "options":[{"Engaged": true}, {"Idle": false}]
@@ -78035,43 +78027,10 @@ _vehicleMapStack.vehicleSettingMap = {
         "type": "radio",
         "options": [{"On": true}, {"Off": false}]
     },
-    "VehicleTopSpeedLimit-vehicleTopSpeedLimit": {
-        "type": "range"
-    },
-    "WindowStatus-openness": {
-        "type": "range"
-    },
-    "WindowStatus-defrost": {
-        "type": "radio",
-        "options": [{"On": true}, {"Off": false}]
-    },
     "AirbagStatus-activated": {
         "type": "radio",
         "options": [{"INACTIVE": false}, {"ACTIVE": true}]
     },
-    "DoorStatus-doorStatus": {
-        "type": "select",
-        "options": [{"CLOSED": 0},{"OPEN": 1},{"AJAR": 2}]
-    },
-    "DoorStatus-doorLockStatus": {
-        "type": "radio",
-        "options": [{"Locked": true}, {"Unlocked": false}]
-    },
-    "DoorStatus-childLockStatus": {
-        "type": "radio",
-        "options": [{"On": true}, {"Off": false}]
-    },
-    "SeatBeltStatus-seatBeltStatus": {
-        "type": "radio",
-        "options": [{"Fasten": true}, {"Unfastened": false}]
-    },
-    "OccupantStatus-occupantStatus": {
-        "type": "select",
-        "options": [{"VACANT": 0},{"CHILD": 1},{"ADULT": 2}]
-    },
-    "ObstacleDistance-obstacleDistance": {
-        "type": "range"
-    },
     "NightMode-mode": {
         "type": "radio",
         "options": [{"Night": true}, {"Day": false}]
@@ -78080,44 +78039,11 @@ _vehicleMapStack.vehicleSettingMap = {
         "type": "radio",
         "options": [{"Driving": true}, {"No Driving": false}]
     },
-    "Fluid-transmission": {
-        "type": "range"
-    },
-    "Fluid-brake": {
-        "type": "range"
-    },
-    "Fluid-washer": {
-        "type": "range"
-    },
     "BatteryStatus-voltage": {
         "type": "range"
     },
     "BatteryStatus-current": {
         "type": "range"
-    },
-    "TirePressure-leftFront": {
-        "type": "range"
-    },
-    "TirePressure-rightFront": {
-        "type": "range"
-    },
-    "TirePressure-leftRear": {
-        "type": "range"
-    },
-    "TirePressure-rightRear": {
-        "type": "range"
-    },
-    "TireTemperature-leftFront": {
-        "type": "range"
-    },
-    "TireTemperature-rightFront": {
-        "type": "range"
-    },
-    "TireTemperature-leftRear": {
-        "type": "range"
-    },
-    "TireTemperature-rightRear": {
-        "type": "range"
     }
 };
 
@@ -78126,7 +78052,6 @@ _vehicleMapStack.vehiclePropertyUnitsMap = {
     "VehicleSpeed-speed": "kph",
     "WheelSpeed-speed": "m/h",
     "EngineSpeed-speed": "rpm",
-    "TripMeter-tripMeters": "[m,...]",
     "CruiseControlStatus-speed": "kph",
     "Fuel-level": "%",
     "Fuel-instantConsumption": "ml/s",
@@ -78135,35 +78060,17 @@ _vehicleMapStack.vehiclePropertyUnitsMap = {
     "EngineOil-remaining": "%",
     "EngineOil-temperature": "C",
     "EngineOil-pressure": "kpa",
-    "ExteriorBrightness-exteriorBrightness": "lux",
     "Temperature-interiorTemperature": "C",
     "Temperature-exteriorTemperature": "C",
     "ClimateControl-targetTemperature": "C",
     "Sunroof-openness": "%",
     "Sunroof-tilt": "%",
-    "WindowStatus-openness": "%",
-    "ObstacleDistance-obstacleDistance": "m",
     "SizeConfiguration-width": "mm",
     "SizeConfiguration-height": "mm",
     "SizeConfiguration-length": "mm",
-    "WheelInformation-frontWheelRadius": "mm",
-    "WheelInformation-rearWheelRadius": "mm",
-    "WheelInformation-wheelTrack": "mm",
     "Odometer-distanceTotal": "km",
-    "Fluid-transmission": "%",
-    "Fluid-brake": "%",
-    "Fluid-washer": "%",
     "BatteryStatus-voltage": "V",
     "BatteryStatus-current": "A",
-    "TirePressure-leftFront": "kpa",
-    "TirePressure-rightFront": "kpa",
-    "TirePressure-leftRear": "kpa",
-    "TirePressure-rightRear": "kpa",
-    "TireTemperature-leftFront": "C",
-    "TireTemperature-rightFront": "C",
-    "TireTemperature-leftRear": "C",
-    "TireTemperature-rightRear": "C",
-    "VehicleTopSpeedLimit-vehicleTopSpeedLimit": "kph",
     "SteeringWheel-angle": "deg",
     "ThrottlePosition-value": "%",
     "EngineCoolant-level": "%",
@@ -78187,16 +78094,6 @@ _vehicleMapStack.vehiclePropertyConstantsMap = {
             "val3": "REAR"
         }
     },
-    "VehicleType": {
-        "type": {
-            "val0": "SEDAN",
-            "val1": "COUPE",
-            "val2": "CABRIOLE",
-            "val3": "ROADSTER",
-            "val4": "SUV",
-            "val5": "TRUCK"
-        }
-    },
     "TransmissionConfiguration": {
         "transmissionGearType": {
             "val0": "AUTO",
@@ -83219,13 +83116,6 @@ _t.VehiclePowerModeType = {
 };
 
 /*
- * TripMeters
- */
-_t.TripMeter = {
-    tripMeters: [_t.unsigned_long]
-};
-
-/*
  * Acceleration
  */
 _t.Acceleration = {
@@ -83247,30 +83137,24 @@ _t.Transmission = {
  */
 _t.CruiseControlStatus = {
     activated: _t.boolean,
-    speed: _t.unsigned_short
-};
-/*
- * WheelBrake
- */
-_t.WheelBrake = {
-    engaged: _t.boolean
+    speed:     _t.unsigned_short
 };
 
 /*
  * LightStatus
  */
 _t.LightStatus = {
-    head: _t.boolean,
-    rightTurn: _t.boolean,
-    leftTurn: _t.boolean,
-    brake: _t.boolean,
-    fog: _t.boolean,
-    hazard: _t.boolean,
-    parking: _t.boolean,
-    highBeam: _t.boolean,
+    head:                _t.boolean,
+    rightTurn:           _t.boolean,
+    leftTurn:            _t.boolean,
+    brake:               _t.boolean,
+    fog:                 _t.boolean,
+    hazard:              _t.boolean,
+    parking:             _t.boolean,
+    highBeam:            _t.boolean,
     automaticHeadlights: _t.boolean,
-    dynamicHighBeam: _t.boolean,
-    zone: _t.unsigned_short
+    dynamicHighBeam:     _t.boolean,
+    zone:                _t.unsigned_short
 };
 
 /*
@@ -83278,8 +83162,8 @@ _t.LightStatus = {
  */
 _t.InteriorLightStatus = {
     passenger: _t.boolean,
-    driver: _t.boolean,
-    center: _t.boolean
+    driver:    _t.boolean,
+    center:    _t.boolean
 };
 
 /*
@@ -83293,38 +83177,21 @@ _t.Horn = {
  * Fuel
  */
 _t.Fuel = {
-    level: _t.unsigned_short,
-    range: _t.unsigned_long,
-    instantConsumption: _t.unsigned_long,
-    averageConsumption: _t.unsigned_long,
+    level:                    _t.unsigned_short,
+    range:                    _t.unsigned_long,
+    instantConsumption:       _t.unsigned_long,
+    averageConsumption:       _t.unsigned_long,
     fuelConsumedSinceRestart: _t.unsigned_long,
-    vehicleTimeSinceRestart: _t.unsigned_long
+    vehicleTimeSinceRestart:  _t.unsigned_long
 };
 
 /*
  * EngineOil
  */
 _t.EngineOil = {
-    remaining: _t.unsigned_short,
+    remaining:   _t.unsigned_short,
     temperature: _t.long,
-    pressure: _t.unsigned_short
-};
-
-/*
- * Location
- */
-_t.Location = {
-    latitude: _t.double,
-    longitude: _t.double,
-    altitude: _t.double,
-    direction: _t.unsigned_short
-};
-
-/*
- * ExteriorBrightness
- */
-_t.ExteriorBrightness = {
-    exteriorBrightness: _t.unsigned_long
+    pressure:    _t.unsigned_short
 };
 
 /*
@@ -83344,31 +83211,6 @@ _t.RainSensor = {
 };
 
 /*
- * WindshieldWiper
- */
-_t.WindshieldWiper = {
-    windshieldWiper: _t.unsigned_short
-};
-
-/*
- * DefrostDictionary
- */
-_t.DefrostDictionary = {
-    window: _t.unsigned_short,
-    defrost: _t.boolean,
-
-    _dictionary: true
-};
-
-/*
- * WindowStatus
- */
-_t.WindowStatus = {
-    openness: _t.unsigned_short,
-    defrost: _t.boolean
-};
-
-/*
  * Sunroof
  */
 _t.Sunroof = {
@@ -83415,20 +83257,6 @@ _t.FuelConfiguration = {
 };
 
 /*
- * VehicleType
- */
-_t.VehicleType = {
-    type: _t.unsigned_short
-};
-
-/*
- * Doors
- */
-_t.Doors = {
-    doorsPerRow: [_t.unsigned_short]
-};
-
-/*
  * TransmissionConfiguration
  */
 _t.TransmissionConfiguration = {
@@ -83436,57 +83264,11 @@ _t.TransmissionConfiguration = {
 };
 
 /*
- * WheelInformation
- */
-_t.WheelInformation = {
-    frontWheelRadius: _t.unsigned_short,
-    rearWheelRadius: _t.unsigned_short,
-    wheelTrack: _t.unsigned_long,
-    ABS: _t.boolean
-};
-
-/*
  * Odometer
  */
 _t.Odometer = {
     distanceSinceStart: _t.unsigned_long,
-    distanceTotal: _t.unsigned_long
-};
-
-/*
- * Fluid
- */
-_t.Fluid = {
-    transmission: _t.unsigned_short,
-    brake: _t.unsigned_short,
-    washer: _t.unsigned_short
-};
-
-/*
- * TirePressure
- */
-_t.TirePressure = {
-    leftFront: _t.double,
-    rightFront: _t.double,
-    leftRear: _t.double,
-    rightRear: _t.double
-};
-
-/*
- * TireTemperature
- */
-_t.TireTemperature = {
-    leftFront: _t.double,
-    rightFront: _t.double,
-    leftRear: _t.double,
-    rightRear: _t.double
-};
-
-/*
- * SecurityAlert
- */
-_t.SecurityAlert = {
-    securityAlert: _t.boolean
+    distanceTotal:      _t.unsigned_long
 };
 
 /*
@@ -83497,20 +83279,6 @@ _t.ParkingBrake = {
 };
 
 /*
- * ParkingLight
- */
-_t.ParkingLight = {
-    parkingLight: _t.boolean
-};
-
-/*
- * HazardLight
- */
-_t.HazardLight = {
-    hazardLight: _t.boolean
-};
-
-/*
  * AntilockBrakingSystem
  */
 _t.AntilockBrakingSystem = {
@@ -83527,13 +83295,6 @@ _t.TractionControlSystem = {
 };
 
 /*
- * VehicleTopSpeedLimit
- */
-_t.VehicleTopSpeedLimit = {
-    vehicleTopSpeedLimit: _t.unsigned_short
-};
-
-/*
  * AirbagStatus
  */
 _t.AirbagStatus = {
@@ -83543,36 +83304,6 @@ _t.AirbagStatus = {
 };
 
 /*
- * DoorStatus
- */
-_t.DoorStatus = {
-    doorStatus: _t.unsigned_short,
-    doorLockStatus: _t.boolean,
-    childLockStatus: _t.boolean
-};
-
-/*
- * SeatBeltStatus
- */
-_t.SeatBeltStatus = {
-    seatBeltStatus: _t.boolean
-};
-
-/*
- * OccupantStatus
- */
-_t.OccupantStatus = {
-    occupantStatus: _t.unsigned_short
-};
-
-/*
- * ObstacleDistance
- */
-_t.ObstacleDistance = {
-    obstacleDistance: _t.double
-};
-
-/*
  * NightMode
  */
 _t.NightMode = {
@@ -83587,13 +83318,6 @@ _t.DrivingMode = {
 };
 
 /*
- * TurnSignal
- */
-_t.TurnSignal = {
-    turnSignal: _t.unsigned_short
-};
-
-/*
  * ButtonEvent
  */
 _t.ButtonEvent = {
@@ -83618,7 +83342,7 @@ _t.ThrottlePosition = {
  * EngineCoolant
  */
 _t.EngineCoolant = {
-    level: _t.unsigned_short,
+    level:       _t.unsigned_short,
     temperature: _t.unsigned_short
 };
 
@@ -83634,9 +83358,9 @@ _t.BrakeOperation = {
  */
 _t.Tire = {
     pressureLow: _t.boolean,
-    pressure: _t.unsigned_short,
+    pressure:    _t.unsigned_short,
     temperature: _t.short,
-    zone: _t.unsigned_short
+    zone:        _t.unsigned_short
 };
 
 /*
@@ -83644,33 +83368,33 @@ _t.Tire = {
  */
 _t.Door = {
     status: _t.DoorOpenStatus,
-    lock: _t.boolean,
-    zone: _t.unsigned_short
+    lock:   _t.boolean,
+    zone:   _t.unsigned_short
 };
 
 /*
  * Defrost
  */
 _t.Defrost = {
-    defrostWindow: _t.boolean,
+    defrostWindow:  _t.boolean,
     defrostMirrors: _t.boolean,
-    zone: _t.unsigned_short
+    zone:           _t.unsigned_short
 };
 
 /*
  * ClimateControl
  */
 _t.ClimateControl = {
-    airflowDirection: _t.AirflowDirection,
-    fanSpeedLevel: _t.byte,
-    targetTemperature: _t.byte,
-    airConditioning: _t.boolean,
-    heater: _t.boolean,
-    seatHeater: _t.byte,
-    seatCooler: _t.byte,
-    airRecirculation: _t.boolean,
+    airflowDirection:    _t.AirflowDirection,
+    fanSpeedLevel:       _t.byte,
+    targetTemperature:   _t.byte,
+    airConditioning:     _t.boolean,
+    heater:              _t.boolean,
+    seatHeater:          _t.byte,
+    seatCooler:          _t.byte,
+    airRecirculation:    _t.boolean,
     steeringWheelHeater: _t.byte,
-    zone: _t.unsigned_short
+    zone:                _t.unsigned_short
 };
 
 /*
@@ -83678,9 +83402,9 @@ _t.ClimateControl = {
  */
 _t.BatteryStatus = {
     chargeLevel: _t.unsigned_short,
-    voltage: _t.unsigned_short,
-    current: _t.unsigned_short,
-    zone: _t.unsigned_short
+    voltage:     _t.unsigned_short,
+    current:     _t.unsigned_short,
+    zone:        _t.unsigned_short
 };
 
 /*
@@ -83689,20 +83413,14 @@ _t.BatteryStatus = {
 _t.VehicleCommonDataType = {
     timeStamp: _t.unsigned_long_long,
 
-    _derived: [_t.VehicleSpeed, _t.WheelSpeed, _t.EngineSpeed, _t.VehiclePowerModeType,
-        _t.TripMeter, _t.Acceleration, _t.Transmission,
-        _t.CruiseControlStatus, _t.WheelBrake, _t.LightStatus,
-        _t.InteriorLightStatus, _t.Horn, _t.Fuel, _t.EngineOil, _t.Location,
-        _t.ExteriorBrightness, _t.Temperature, _t.RainSensor,
-        _t.WindshieldWiper, _t.WindowStatus, _t.Sunroof,
-        _t.ConvertibleRoof, _t.Identification, _t.SizeConfiguration, _t.FuelConfiguration, _t.VehicleType,
-        _t.Doors, _t.TransmissionConfiguration, _t.WheelInformation, _t.Odometer,
-        _t.Fluid, _t.TirePressure, _t.TireTemperature,
-        _t.SecurityAlert, _t.ParkingBrake, _t.ParkingLight, _t.HazardLight,
-        _t.AntilockBrakingSystem, _t.TractionControlSystem,
-        _t.VehicleTopSpeedLimit, _t.AirbagStatus, _t.DoorStatus,
-        _t.SeatBeltStatus, _t.OccupantStatus, _t.ObstacleDistance,
-        _t.NightMode, _t.TurnSignal, _t.ButtonEvent, _t.SteeringWheel,
+    _derived: [_t.VehicleSpeed, _t.WheelSpeed, _t.EngineSpeed,
+        _t.VehiclePowerModeType, _t.Acceleration, _t.Transmission,
+        _t.CruiseControlStatus, _t.LightStatus, _t.InteriorLightStatus, _t.Horn,
+        _t.Fuel, _t.EngineOil, _t.Temperature, _t.RainSensor, _t.Sunroof,
+        _t.ConvertibleRoof, _t.Identification, _t.SizeConfiguration,
+        _t.FuelConfiguration, _t.TransmissionConfiguration, _t.Odometer,
+        _t.ParkingBrake, _t.AntilockBrakingSystem, _t.TractionControlSystem,
+        _t.AirbagStatus, _t.NightMode, _t.ButtonEvent, _t.SteeringWheel,
         _t.ThrottlePosition, _t.EngineCoolant, _t.BrakeOperation, _t.Tire,
         _t.Door, _t.Defrost, _t.ClimateControl, _t.BatteryStatus]
 };
@@ -83820,8 +83538,7 @@ _i.SpeechManager.vocalizeString = {
 
 // Vehicle
 _i.Vehicle.get = {
-    0: _t.DOMString,
-    1: _t.short,
+    0: _t.short,
 
     _optional: {
         // nullable
@@ -83829,47 +83546,38 @@ _i.Vehicle.get = {
     }
 };
 
-_i.Vehicle.supported = {
-    0: _t.DOMString
-};
-
-
 _i.Vehicle.subscribe = {
-    0: _t.DOMString,
-    1: _t.VehiclePropertyCallback,
-    2: _t.short,
+    0: _t.VehiclePropertyCallback,
+    1: _t.short,
 
     _optional: {
         // nullable
-        2: true
+        1: true
     }
 };
 
 _i.Vehicle.unsubscribe = {
-    0: _t.DOMString,
-    1: _t.unsigned_short,
+    0: _t.unsigned_short,
 };
 
 _i.Vehicle.set = {
-    0: _t.DOMString,
-    1: _t.VehiclePropertyType,
-    2: _t.short,
+    0: _t.VehicleCommonDataType,
+    1: _t.short,
 
     _optional: {
         // nullable
-        2: true
+        1: true
     }
 };
 
 _i.Vehicle.getHistory = {
-    0: _t.DOMString,
+    0: _t.Date,
     1: _t.Date,
-    2: _t.Date,
-    3: _t.short,
+    2: _t.short,
 
     _optional: {
         // nullable
-        3: true
+        2: true
     }
 };
 
@@ -83902,29 +83610,6 @@ var utils = require('ripple/utils'),
     t = require('ripple/platform/ivi/3.0/typecast'),
     errorcode = require('ripple/platform/ivi/3.0/errorcode'),
     WebAPIError = require('ripple/platform/ivi/3.0/WebAPIError'),
-    TripMeter, //no
-    WheelBrake, //no
-    Location, //no
-    ExteriorBrightness, //no
-    WindshieldWiper, //no
-    WindowStatus, //no
-    VehicleType, //no
-    Doors, //no
-    WheelInformation, //no
-    Fluid, //no
-    TirePressure, //no
-    TireTemperature, //no
-    SecurityAlert, //no
-    ParkingLight, //no
-    HazardLight, //no
-    VehicleTopSpeedLimit, //no
-    DoorStatus, //no
-    SeatBeltStatus, //no
-    OccupantStatus, //no
-    ObstacleDistance, //no
-    TurnSignal, //no
-    //New Spec
-    Zone,
     VehicleCommonDataType,
     //Configuration and Identification Interfaces
     Identification,
@@ -83984,39 +83669,45 @@ var utils = require('ripple/utils'),
     _data = {
         nHandle: 0,          //subscribe listener flag
         supported: null,     //current supported properties
-        history: [],         //all properties data
+        history: null,         //all properties data
         cache: null,         //current all properties data
+        properties: {}       //properties name
     },
-    _VEHICLE_PROPERTIES = ["VehicleSpeed", "EngineSpeed", "VehiclePowerModeType",
-        "TripMeter", "Acceleration", "Transmission", "CruiseControlStatus",
-        "WheelBrake", "LightStatus", "InteriorLightStatus", "Horn", "Fuel",
-        "EngineOil", "Location", "ExteriorBrightness", "Temperature",
-        "RainSensor", "WindshieldWiper", "WindowStatus", "Sunroof",
-        "ConvertibleRoof", "VehicleType",
-        "Doors", "WheelInformation", "Odometer",
-        "Fluid", "TirePressure", "TireTemperature", "SecurityAlert",
-        "ParkingBrake", "ParkingLight", "HazardLight", "AntilockBrakingSystem",
-        "TractionControlSystem", "VehicleTopSpeedLimit", "AirbagStatus",
-        "DoorStatus", "SeatBeltStatus", "OccupantStatus", "ObstacleDistance",
-        "NightMode", "DrivingMode", "TurnSignal", "ButtonEvent", "WheelTick",
-        "WheelSpeed", "SteeringWheel", "ThrottlePosition", "EngineCoolant",
-        "Identification", "SizeConfiguration", "FuelConfiguration",
-        "TransmissionConfiguration", "WheelConfiguration",
-        "SteeringWheelConfiguration", "PowerTrainTorque",
-        "AcceleratorPedalPosition", "Diagnostic", "Chime", "IgnitionTime",
-        "YawRate", "BrakeOperation", "Tire", "Door", "Defrost",
-        "ClimateControl", "BatteryStatus"],
     _security = {
         "http://tizen.org/privilege/vehicle": []
     },
     _self;
 
 function _initialize () {
-    _data.history.length = 0;
+    _data.properties.common = ["diagnostic"];
+    _data.properties.conf = [
+        "identification", "sizeConfiguration", "fuelConfiguration",
+        "transmissionConfiguration", "wheelConfiguration",
+        "steeringWheelConfiguration"
+    ];
+    _data.properties.signal = [
+        "vehicleSpeed", "wheelSpeed", "engineSpeed", "powerTrainTorque",
+        "acceleratorPedalPosition", "throttlePosition", "tripMeters",
+        "diagnostic", "transmission", "cruiseControlStatus", "lightStatus",
+        "interiorLightStatus", "chime", "fuel", "engineOil", "acceleration",
+        "engineCoolant", "steeringWheel", "ignitionTime", "yawRate",
+        "brakeOperation", "wheelTick", "buttonEvent", "drivingMode",
+        "nightMode", "odometer", "transmissionOil", "transmissionClutch",
+        "brakeMaintenance", "washerFluid", "malfunctionIndicator",
+        "batteryStatus", "tire", "driverIdentification",
+        "languageConfiguration", "unitsOfMeasure", "mirror", "steeringWheel",
+        "driveMode", "seatAdjustment", "dashboardIllumination", "vehicleSound",
+        "antilockBrakingSystem", "tractionControlSystem",
+        "electronicStabilityControl", "topSpeedLimit", "airbagStatus", "door",
+        "childSafetyLock", "seat", "temperature", "rainSensor", "wiperStatus",
+        "wiperSetting", "defrost", "sunroof", "convertibleRoof", "sideWindow",
+        "climateControl", "atmosphericPressure", "laneDepartureStatus", "alarm",
+        "parkingBrake", "parkingLights"
+    ];
+
     event.on("vehicle-cache-refresh", function (supported, data) {
         _data.supported = supported;
         _data.cache = data;
-        _data.history.push(data);
     });
 
     event.trigger("vehicle-cache-request", [_data]);
@@ -84035,171 +83726,238 @@ event.on("vehicle-subscribe-response", function(propertyObj) {
     }
 });
 
-_self = function () {
-    var vehicle;
-
-    function _subscribe(property, success, zone) {
-        var handle = ++_data.nHandle,
-            key = "subscribe" + handle;
+event.on("vehicle-history-response", function(history) {
+    _data.history = history;
+});
 
-        zone = zone ? zone : 0;
-        t.Vehicle("subscribe", arguments);
+function VehicleInterface (property) {
+    function _supported() {
+        t.Vehicle("supported", arguments);
 
-        if (!_data[property]) {
-            _data[property] = {};
+        if (_data.supported.indexOf(property) === -1) {
+            return false;
         }
 
-        _data[property][key] = success;
+        return true;
+    }
 
-        // Need complete
-        event.trigger("vehicle-subscribe-request", [property, true, zone]);
+    function _getFrom() {
+        var history = _data.history;
 
-        return handle;
+        for (var i = 0; i < history.length; i++) {
+            if (history[i][property]) {
+                return history[i][property].timeStamp;
+            }
+        }
+        return null;
     }
 
-    function _unsubscribe(property, handle) {
-        var key = "subscribe" + handle;
+    function _getTo() {
+        var history = _data.history;
 
-        t.Vehicle("unsubscribe", arguments);
+        for (var i = history.length - 1; i >= 0; i--) {
+            if (history[i][property]) {
+                return history[i][property].timeStamp;
+            }
+        }
+        return null;
+    }
 
-        if (_data[property] && _data[property][key])
-            delete _data[property][key];
+    this.__defineGetter__("supported", function () {
+        return _supported(property);
+    });
 
-        return;
-    }
+    this.__defineGetter__("zones", function () {
+        return null;
+    });
 
-    function _get(property, zone) {
+    this.__defineGetter__("isLogged", function () {
+        return true;
+    });
+
+    this.__defineGetter__("from", function () {
+        return new Date(_getFrom());
+    });
+
+    this.__defineGetter__("to", function () {
+        return new Date(_getTo());
+    });
+
+    this.get = function (zone) {
         zone = zone ? zone : 0;
         t.Vehicle("get", arguments);
 
-        if (_data.supported.indexOf(property) === -1) {
-            return;
-        }
-
         return {
-            then: function (resolve) {
-                var data = new VehicleFactory(property,
-                        _data.cache[property]);
+            then: function (resolve, reject) {
+                var data;
+
+                if (_data.supported.indexOf(property) === -1) {
+                    reject(new WebAPIError(errorcode.PROPERTY_UNAVAILABLE));
+                    return;
+                }
+
+                data = new VehicleFactory(property, _data.cache[property]);
                 resolve(data);
             }
         };
-    }
+    };
 
-    function _getHistory(property, begin, end, zone) {
+    this.getHistory = function (begin, end, zone) {
         zone = zone ? zone : 0;
         t.Vehicle("getHistory", arguments);
 
-        if (_data.supported.indexOf(property) === -1) {
-            return;
-        }
-
-        begin = begin.getTime();
-        end = end.getTime();
-
         return {
             then: function (resolve) {
-                var data = [], i, time;
-
-                for ( i = 0; i < _data.history.length; i++) {
-                    if (_data.history[i][property]) {
-                        time = _data.history[i][property].time;
-                        if (time >= begin && time <= end) {
-                            data.push(new VehicleFactory(property,
-                                    _data.history[i][property]));
+                var history = _data.history,
+                    data = [],
+                    i, val, timeStamp;
+
+                if (!begin || !end) {
+                    resolve(data);
+                    return;
+                }
+                begin = begin.getTime();
+                end = end.getTime();
+
+                for ( i = 0; i < history.length; i++) {
+                    val = history[i][property];
+
+                    if (val) {
+                        timeStamp = val.timeStamp;
+                        if (timeStamp < begin || timeStamp > end) {
+                            continue;
                         }
+
+                        data.push(new VehicleFactory(property, val));
                     }
                 }
+
                 resolve(data);
             }
         };
-    }
+    };
 
-    function _set(property, value, zone) {
-        var val = utils.copy(value);
+    this.availableForRetrieval = function (attr) {
+        if (_data.supported.indexOf(property) === -1) {
+            return "not_supported";
+        }
+        return "available";
+    };
 
+    this.availabilityChangedListener = function (callback) {
+        return 0;
+    };
+
+    this.removeAvailabilityChangedListener = function (handle) {
+        return;
+    };
+}
+
+function VehicleConfigurationInterface (property) {
+    VehicleInterface.call(this, property);
+}
+
+function VehicleSignalInterface (property) {
+    VehicleInterface.call(this, property);
+
+    this.set = function (value, zone) {
         zone = zone ? zone : 0;
         t.Vehicle("set", arguments);
 
-        if (_data.supported.indexOf(property) === -1) {
-            return;
-        }
-
         return {
             then: function (resolve, reject) {
-                event.once("vehicle-set-response", function (status) {
-                    if (!status) {
-                        reject(new WebAPIError(
-                                    errorcode.PROPERTY_UNAVAILABLE));
-                        return;
-                    }
-                    resolve();
-                });
+                var val = utils.copy(value);
+
+                if (_data.supported.indexOf(property) === -1) {
+                    reject(new WebAPIError(errorcode.PROPERTY_UNAVAILABLE));
+                    return;
+                }
+                resolve();
                 event.trigger("vehicle-set-request", [property, val]);
             }
         };
-    }
+    };
 
-    function _supported(property) {
-        t.Vehicle("supported", arguments);
+    this.subscribe = function (success, zone) {
+        var handle = ++_data.nHandle,
+            key = "subscribe" + handle;
+
+        zone = zone ? zone : 0;
+        t.Vehicle("subscribe", arguments);
+
+        if (!_data[property]) {
+            _data[property] = {};
+        }
+
+        _data[property][key] = success;
+
+        event.trigger("vehicle-subscribe-request", [property, true, zone]);
+
+        return handle;
+    };
+
+    this.unsubscribe = function (handle) {
+        var key = "subscribe" + handle;
 
+        t.Vehicle("unsubscribe", arguments);
+
+        if (_data[property] && _data[property][key])
+            delete _data[property][key];
+
+        return;
+    };
+
+    this.availableForSubscription = function (attr) {
         if (_data.supported.indexOf(property) === -1) {
-            return false;
+            return "not_supported";
         }
+        return "available";
+    };
 
-        return true;
-    }
+    this.availableForSetting = function (attr) {
+        if (_data.supported.indexOf(property) === -1) {
+            return "not_supported";
+        }
+        return "available";
+    };
+}
 
-    function _buildPropertiesAPIs() {
+_self = function () {
+    var vehicle;
+
+    function _defineInterfaces() {
         var i, propertyName, propertyKey;
-        for (i = 0; i < _VEHICLE_PROPERTIES.length; i++) {
-            propertyName = _VEHICLE_PROPERTIES[i];
-            propertyKey = propertyName.substring(0, 1).toLowerCase() +
-                    propertyName.substring(1);
 
-            // Initialize
+        for (i = 0; i < _data.properties.common.length; i++) {
+            propertyKey = _data.properties.common[i];
+            propertyName = propertyKey.substring(0, 1).toUpperCase() +
+                    propertyKey.substring(1);
+
             vehicle[propertyKey] = {};
             (function(property){
-                // No complete
-                vehicle[propertyKey].zones = [];
-                vehicle[propertyKey].isLogged = true;
-                vehicle[propertyKey].from = null;
-                vehicle[propertyKey].to = null;
-
-                // function
-                vehicle[propertyKey].subscribe = function (success, zone) {
-                    return _subscribe(property, success, zone);
-                };
-                vehicle[propertyKey].unsubscribe = function (handle) {
-                    return _unsubscribe(property, handle);
-                };
-                vehicle[propertyKey].get = function () {
-                    return _get(property);
-                };
-                vehicle[propertyKey].getHistory = function (begin, end, zone) {
-                    return _getHistory(property, begin, end, zone);
-                };
-                vehicle[propertyKey].set = function (obj, zone) {
-                    return _set(property, obj, zone);
-                };
-                vehicle[propertyKey].supported = function () {
-                    return _supported(property);
-                };
-                // No complete
-                vehicle[propertyKey].availabilityChangedListener = function (fun) {
-                    return 0;
-                };
-                vehicle[propertyKey].availableForRetrieval = function (attr) {
-                    return null;
-                };
-                vehicle[propertyKey].removeAvailabilityChangedListener = function (handle) {
-                    return;
-                };
-                vehicle[propertyKey].availableForSubscription = function (attr) {
-                    return;
-                };
-                vehicle[propertyKey].availableForSetting = function (attr) {
-                    return;
-                };
+                vehicle[propertyKey] = new VehicleInterface(property);
+            })(propertyName);
+        }
+
+        for (i = 0; i < _data.properties.conf.length; i++) {
+            propertyKey = _data.properties.conf[i];
+            propertyName = propertyKey.substring(0, 1).toUpperCase() +
+                    propertyKey.substring(1);
+
+            vehicle[propertyKey] = {};
+            (function(property){
+                vehicle[propertyKey] = new VehicleConfigurationInterface(property);
+            })(propertyName);
+        }
+
+        for (i = 0; i < _data.properties.signal.length; i++) {
+            propertyKey = _data.properties.signal[i];
+            propertyName = propertyKey.substring(0, 1).toUpperCase() +
+                    propertyKey.substring(1);
+
+            vehicle[propertyKey] = {};
+            (function(property){
+                vehicle[propertyKey] = new VehicleSignalInterface(property);
             })(propertyName);
         }
     }
@@ -84217,7 +83975,7 @@ _self = function () {
     vehicle = {
         handleSubFeatures: handleSubFeatures
     };
-    _buildPropertiesAPIs();
+    _defineInterfaces();
 
     return vehicle;
 };
@@ -84226,75 +83984,6 @@ VehicleFactory = function (vehicleType, value) {
     var instanceType;
 
     switch (vehicleType) {
-    case "TripMeter":
-        instanceType = new TripMeter(value);
-        break;
-    case "WheelBrake":
-        instanceType = new WheelBrake(value);
-        break;
-    case "Location":
-        instanceType = new Location(value);
-        break;
-    case "ExteriorBrightness":
-        instanceType = new ExteriorBrightness(value);
-        break;
-    case "WindshieldWiper":
-        instanceType = new WindshieldWiper(value);
-        break;
-    case "WindowStatus":
-        instanceType = new WindowStatus(value);
-        break;
-    case "ConvertibleRoof":
-        instanceType = new ConvertibleRoof(value);
-        break;
-    case "VehicleType":
-        instanceType = new VehicleType(value);
-        break;
-    case "Doors":
-        instanceType = new Doors(value);
-        break;
-    case "WheelInformation":
-        instanceType = new WheelInformation(value);
-        break;
-    case "Fluid":
-        instanceType = new Fluid(value);
-        break;
-    case "TirePressure":
-        instanceType = new TirePressure(value);
-        break;
-    case "TireTemperature":
-        instanceType = new TireTemperature(value);
-        break;
-    case "SecurityAlert":
-        instanceType = new SecurityAlert(value);
-        break;
-    case "ParkingLight":
-        instanceType = new ParkingLight(value);
-        break;
-    case "HazardLight":
-        instanceType = new HazardLight(value);
-        break;
-    case "VehicleTopSpeedLimit":
-        instanceType = new VehicleTopSpeedLimit(value);
-        break;
-    case "AirbagStatus":
-        instanceType = new AirbagStatus(value);
-        break;
-    case "DoorStatus":
-        instanceType = new DoorStatus(value);
-        break;
-    case "SeatBeltStatus":
-        instanceType = new SeatBeltStatus(value);
-        break;
-    case "OccupantStatus":
-        instanceType = new OccupantStatus(value);
-        break;
-    case "ObstacleDistance":
-        instanceType = new ObstacleDistance(value);
-        break;
-    case "TurnSignal":
-        instanceType = new TurnSignal(value);
-        break;
     //configuration
     case "Identification":
         instanceType = new Identification(value);
@@ -84410,6 +84099,9 @@ VehicleFactory = function (vehicleType, value) {
     case "TractionControlSystem":
         instanceType = new TractionControlSystem(value);
         break;
+    case "AirbagStatus":
+        instanceType = new AirbagStatus(value);
+        break;
     case "Door":
         instanceType = new Door(value);
         break;
@@ -84429,6 +84121,9 @@ VehicleFactory = function (vehicleType, value) {
     case "Sunroof":
         instanceType = new Sunroof(value);
         break;
+    case "ConvertibleRoof":
+        instanceType = new ConvertibleRoof(value);
+        break;
     //
     case "ParkingBrake":
         instanceType = new ParkingBrake(value);
@@ -84469,46 +84164,6 @@ VehiclePowerModeType = function (propertyTypes) {
     });
 };
 
-TripMeter = function (propertyTypes) {
-    var tripMeter = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    tripMeter.tripMeters = propertyTypes.tripMeters || [];
-
-    this.__defineGetter__("tripMeters", function () {
-        return tripMeter.tripMeters;
-    });
-
-    this.__defineSetter__("tripMeters", function (val) {
-        try {
-        //Changing any items in the array will reset the item's value to '0';
-            tripMeter.tripMeters = t.unsigned_long(val, "[]");
-        }
-        catch (err) {
-        }
-    });
-};
-
-WheelBrake = function (propertyTypes) {
-    var wheelBrake = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    wheelBrake.engaged = propertyTypes.engaged || false;
-
-    this.__defineGetter__("engaged", function () {
-        return wheelBrake.engaged;
-    });
-
-    this.__defineSetter__("engaged", function (val) {
-        try {
-            wheelBrake.engaged = t.boolean(val);
-        } catch (err) {
-        }
-    });
-};
-
 Horn = function (propertyTypes) {
     var horn = {};
 
@@ -84528,99 +84183,13 @@ Horn = function (propertyTypes) {
     });
 };
 
-Location = function (propertyTypes) {
-    var location = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    location.latitude = propertyTypes.latitude || 0;
-    location.longitude = propertyTypes.longitude || 0;
-    location.altitude = propertyTypes.altitude || 0;
-    location.direction = propertyTypes.direction || 0;
-
-    this.__defineGetter__("latitude", function () {
-        return location.latitude;
-    });
-
-    this.__defineSetter__("latitude", function (val) {
-        try {
-            val = t.double(val);
-            if (val >= -180 && val <= 180) {
-                location.latitude = val;
-            }
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("longitude", function () {
-        return location.longitude;
-    });
-
-    this.__defineSetter__("longitude", function (val) {
-        try {
-            val = t.double(val);
-            if (val >= -90 && val <= 90) {
-                location.longitude = val;
-            }
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("altitude", function () {
-        return location.altitude;
-    });
-
-    this.__defineSetter__("altitude", function (val) {
-        try {
-            val = t.double(val);
-            if (val >= 0) {
-                location.altitude = val;
-            }
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("direction", function () {
-        return location.direction;
-    });
-
-    this.__defineSetter__("direction", function (val) {
-        try {
-            val = t.unsigned_short(val);
-            if (val >= 0 && val < 360) {
-                location.direction = val;
-            }
-        } catch (err) {
-        }
-    });
-};
-
-ExteriorBrightness = function (propertyTypes) {
-    var eb = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    eb.exteriorBrightness = propertyTypes.exteriorBrightness || 0;
-
-    this.__defineGetter__("exteriorBrightness", function () {
-        return eb.exteriorBrightness;
-    });
-
-    this.__defineSetter__("exteriorBrightness", function (val) {
-        try {
-            eb.exteriorBrightness = t.unsigned_long(val);
-        } catch (err) {
-        }
-    });
-};
-
 RainSensor = function (propertyTypes) {
     var rainSensor = {};
 
     VehicleCommonDataType.call(this, propertyTypes);
 
     rainSensor.rain = propertyTypes.rain || 0;
-    rainSensor.zone = propertyTypes.zone || null;
+    rainSensor.zone = propertyTypes.zone || 0;
 
     this.__defineGetter__("rain", function () {
         return rainSensor.rain;
@@ -84648,98 +84217,6 @@ RainSensor = function (propertyTypes) {
     });
 };
 
-WindshieldWiper = function (propertyTypes) {
-    var windshieldWiper = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    windshieldWiper.windshieldWiper = propertyTypes.windshieldWiper || 0;
-
-    this.__defineGetter__("WIPERSPEED_OFF", function () {
-        return 0;
-    });
-
-    this.__defineGetter__("WIPERSPEED_SLOWEST", function () {
-        return 1;
-    });
-
-    this.__defineGetter__("WIPERSPEED_FASTEST", function () {
-        return 5;
-    });
-
-    this.__defineGetter__("WIPERSPEED_AUTO", function () {
-        return 10;
-    });
-
-    this.__defineGetter__("windshieldWiper", function () {
-        return windshieldWiper.windshieldWiper;
-    });
-
-    this.__defineSetter__("windshieldWiper", function (val) {
-        try {
-            val = t.unsigned_short(val);
-            if (val === 0 || val === 1 || val === 5 || val === 10) {
-                windshieldWiper.windshieldWiper = val;
-            }
-        } catch (err) {
-        }
-    });
-};
-
-WindowStatus = function (propertyTypes) {
-    var windowStatus = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    windowStatus.openness = propertyTypes.openness || 0;
-    windowStatus.defrost = propertyTypes.defrost || false;
-
-    this.__defineGetter__("WINDOWLOCATION_DRIVER", function () {
-        return 0;
-    });
-
-    this.__defineGetter__("WINDOWLOCATION_PASSENGER", function () {
-        return 1;
-    });
-
-    this.__defineGetter__("WINDOWLOCATION_LEFTREAR", function () {
-        return 2;
-    });
-
-    this.__defineGetter__("WINDOWLOCATION_RIGHTREAR", function () {
-        return 3;
-    });
-
-    this.__defineGetter__("WINDOWLOCATION_REAR", function () {
-        return 4;
-    });
-
-    this.__defineGetter__("openness", function () {
-        return windowStatus.openness;
-    });
-
-    this.__defineSetter__("openness", function (val) {
-        try {
-            val = t.unsigned_short(val);
-            if (val >= 0 && val <= 100) {
-                windowStatus.openness = val;
-            }
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("defrost", function () {
-        return windowStatus.defrost;
-    });
-
-    this.__defineSetter__("defrost", function (val) {
-        try {
-            windowStatus.defrost = t.boolean(val);
-        } catch (err) {
-        }
-    });
-};
-
 Sunroof = function (propertyTypes) {
     var sunroof = {};
 
@@ -84747,7 +84224,7 @@ Sunroof = function (propertyTypes) {
 
     sunroof.openness = propertyTypes.openness || 0;
     sunroof.tilt = propertyTypes.tilt || 0;
-    sunroof.zone = propertyTypes.zone || null;
+    sunroof.zone = propertyTypes.zone || 0;
 
     this.__defineGetter__("openness", function () {
         return sunroof.openness;
@@ -84808,539 +84285,6 @@ ConvertibleRoof = function (propertyTypes) {
     });
 };
 
-VehicleType = function (propertyTypes) {
-    var vehicleType = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    vehicleType.type = propertyTypes.type || 0;
-
-    this.__defineGetter__("VEHICLETYPE_SEDAN", function () {
-        return 0;
-    });
-
-    this.__defineGetter__("VEHICLETYPE_COUPE", function () {
-        return 1;
-    });
-
-    this.__defineGetter__("VEHICLETYPE_CABRIOLE", function () {
-        return 2;
-    });
-
-    this.__defineGetter__("VEHICLETYPE_ROADSTER", function () {
-        return 3;
-    });
-
-    this.__defineGetter__("VEHICLETYPE_SUV", function () {
-        return 4;
-    });
-
-    this.__defineGetter__("VEHICLETYPE_TRUCK", function () {
-        return 5;
-    });
-
-    this.__defineGetter__("type", function () {
-        return vehicleType.type;
-    });
-
-    this.__defineSetter__("type", function (val) {
-        try {
-            val = t.unsigned_short(val);
-            if (val >= 0 && val <= 5) {
-                vehicleType.type = val;
-            }
-        } catch (err) {
-        }
-    });
-};
-
-Doors = function (propertyTypes) {
-    var doors = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    doors.doorsPerRow = propertyTypes.doorsPerRow || [];
-
-    this.__defineGetter__("doorsPerRow", function () {
-        return doors.doorsPerRow;
-    });
-
-    this.__defineSetter__("doorsPerRow", function (val) {
-        try {
-            doors.doorsPerRow = t.unsigned_short(val, "[]");
-        } catch (err) {
-        }
-    });
-};
-
-WheelInformation = function (propertyTypes) {
-    var wheelInfo = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    wheelInfo.frontWheelRadius = propertyTypes.frontWheelRadius || 0;
-    wheelInfo.rearWheelRadius = propertyTypes.rearWheelRadius || 0;
-    wheelInfo.wheelTrack = propertyTypes.wheelTrack || 0;
-    wheelInfo.ABS = propertyTypes.ABS || false;
-
-    this.__defineGetter__("frontWheelRadius", function () {
-        return wheelInfo.frontWheelRadius;
-    });
-
-    this.__defineSetter__("frontWheelRadius", function (val) {
-        try {
-            wheelInfo.frontWheelRadius =t.unsigned_short(val);
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("rearWheelRadius", function () {
-        return wheelInfo.rearWheelRadius;
-    });
-
-    this.__defineSetter__("rearWheelRadius", function (val) {
-        try {
-            wheelInfo.rearWheelRadius =t.unsigned_short(val);
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("wheelTrack", function () {
-        return wheelInfo.wheelTrack;
-    });
-
-    this.__defineSetter__("wheelTrack", function (val) {
-        try {
-            wheelInfo.wheelTrack =t.unsigned_long(val);
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("ABS", function () {
-        return wheelInfo.ABS;
-    });
-
-    this.__defineSetter__("ABS", function (val) {
-        try {
-            wheelInfo.ABS =t.boolean(val);
-        } catch (err) {
-        }
-    });
-};
-
-Fluid = function (propertyTypes) {
-    var fluid = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    fluid.transmission = propertyTypes.transmission || 0;
-    fluid.brake = propertyTypes.brake || 0;
-    fluid.washer = propertyTypes.washer || 0;
-
-    this.__defineGetter__("transmission", function () {
-        return fluid.transmission;
-    });
-
-    this.__defineSetter__("transmission", function (val) {
-        try {
-            val = t.unsigned_short(val);
-            if (val >= 0 && val <= 100) {
-                fluid.transmission = val;
-            }
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("brake", function () {
-        return fluid.brake;
-    });
-
-    this.__defineSetter__("brake", function (val) {
-        try {
-            val = t.unsigned_short(val);
-            if (val >= 0 && val <= 100) {
-                fluid.brake = val;
-            }
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("washer", function () {
-        return fluid.washer;
-    });
-
-    this.__defineSetter__("washer", function (val) {
-        try {
-            val = t.unsigned_short(val);
-            if (val >= 0 && val <= 100) {
-                fluid.washer = val;
-            }
-        } catch (err) {
-        }
-    });
-};
-
-TirePressure = function (propertyTypes) {
-    var tirePressure = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    tirePressure.leftFront = propertyTypes.leftFront || 0;
-    tirePressure.rightFront = propertyTypes.rightFront || 0;
-    tirePressure.leftRear = propertyTypes.leftRear || 0;
-    tirePressure.rightRear = propertyTypes.rightRear || 0;
-
-    this.__defineGetter__("leftFront", function () {
-        return tirePressure.leftFront;
-    });
-
-    this.__defineSetter__("leftFront", function (val) {
-        try {
-            tirePressure.leftFront = t.double(val);
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("rightFront", function () {
-        return tirePressure.rightFront;
-    });
-
-    this.__defineSetter__("rightFront", function (val) {
-        try {
-            tirePressure.rightFront = t.double(val);
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("leftRear", function () {
-        return tirePressure.leftRear;
-    });
-
-    this.__defineSetter__("leftRear", function (val) {
-        try {
-            tirePressure.leftRear = t.double(val);
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("rightRear", function () {
-        return tirePressure.rightRear;
-    });
-
-    this.__defineSetter__("rightRear", function (val) {
-        try {
-            tirePressure.rightRear = t.double(val);
-        } catch (err) {
-        }
-    });
-};
-
-TireTemperature = function (propertyTypes) {
-    var tireTemperature = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    tireTemperature.leftFront = propertyTypes.leftFront || 0;
-    tireTemperature.rightFront = propertyTypes.rightFront || 0;
-    tireTemperature.leftRear = propertyTypes.leftRear || 0;
-    tireTemperature.rightRear = propertyTypes.rightRear || 0;
-
-    this.__defineGetter__("leftFront", function () {
-        return tireTemperature.leftFront;
-    });
-
-    this.__defineSetter__("leftFront", function (val) {
-        try {
-            tireTemperature.leftFront = t.double(val);
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("rightFront", function () {
-        return tireTemperature.rightFront;
-    });
-
-    this.__defineSetter__("rightFront", function (val) {
-        try {
-            tireTemperature.rightFront = t.double(val);
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("leftRear", function () {
-        return tireTemperature.leftRear;
-    });
-
-    this.__defineSetter__("leftRear", function (val) {
-        try {
-            tireTemperature.leftRear = t.double(val);
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("rightRear", function () {
-        return tireTemperature.rightRear;
-    });
-
-    this.__defineSetter__("rightRear", function (val) {
-        try {
-            tireTemperature.rightRear = t.double(val);
-        } catch (err) {
-        }
-    });
-};
-
-SecurityAlert = function (propertyTypes) {
-    var securityAlert = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    securityAlert.securityAlert = propertyTypes.securityAlert || false;
-
-    this.__defineGetter__("securityAlert", function () {
-        return securityAlert.securityAlert;
-    });
-
-    this.__defineSetter__("securityAlert", function (val) {
-        try {
-            securityAlert.securityAlert = t.boolean(val);
-        } catch (err) {
-        }
-    });
-};
-
-ParkingLight = function (propertyTypes) {
-    var parkingLight = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    parkingLight.parkingLight = propertyTypes.parkingLight || false;
-
-    this.__defineGetter__("parkingLight", function () {
-        return parkingLight.parkingLight;
-    });
-
-    this.__defineSetter__("parkingLight", function (val) {
-        try {
-            parkingLight.parkingLight = t.boolean(val);
-        } catch (err) {
-        }
-    });
-};
-
-HazardLight = function (propertyTypes) {
-    var hazardLight = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    hazardLight.hazardLight = propertyTypes.hazardLight || false;
-
-    this.__defineGetter__("hazardLight", function () {
-        return hazardLight.hazardLight;
-    });
-
-    this.__defineSetter__("hazardLight", function (val) {
-        try {
-            hazardLight.hazardLight = t.boolean(val);
-        } catch (err) {
-        }
-    });
-};
-
-VehicleTopSpeedLimit = function (propertyTypes) {
-    var vtl = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    vtl.vehicleTopSpeedLimit = propertyTypes.vehicleTopSpeedLimit || false;
-
-    this.__defineGetter__("vehicleTopSpeedLimit", function () {
-        return vtl.vehicleTopSpeedLimit;
-    });
-
-    this.__defineSetter__("vehicleTopSpeedLimit", function (val) {
-        try {
-            vtl.vehicleTopSpeedLimit = t.unsigned_short(val);
-        } catch (err) {
-        }
-    });
-};
-
-DoorStatus = function (propertyTypes) {
-    var doorStatus = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    doorStatus.doorStatus = propertyTypes.doorStatus || 0;
-    doorStatus.doorLockStatus = propertyTypes.doorLockStatus || false;
-    doorStatus.childLockStatus = propertyTypes.childLockStatus || false;
-
-    this.__defineGetter__("DOORSTATUS_CLOSED", function () {
-        return 0;
-    });
-
-    this.__defineGetter__("DOORSTATUS_OPEN", function () {
-        return 1;
-    });
-
-    this.__defineGetter__("DOORSTATUS_AJAR", function () {
-        return 2;
-    });
-
-    this.__defineGetter__("doorStatus", function () {
-        return doorStatus.doorStatus;
-    });
-
-    this.__defineSetter__("doorStatus", function (val) {
-        try {
-            val = t.unsigned_short(val);
-            if (val === 0 || val === 1 || val === 2) {
-                doorStatus.doorStatus = val;
-            }
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("doorLockStatus", function () {
-        return doorStatus.doorLockStatus;
-    });
-
-    this.__defineSetter__("doorLockStatus", function (val) {
-        try {
-            doorStatus.doorLockStatus = t.boolean(val);
-        } catch (err) {
-        }
-    });
-
-    this.__defineGetter__("childLockStatus", function () {
-        return doorStatus.childLockStatus;
-    });
-
-    this.__defineSetter__("childLockStatus", function (val) {
-        try {
-            doorStatus.childLockStatus = t.boolean(val);
-        } catch (err) {
-        }
-    });
-};
-
-SeatBeltStatus = function (propertyTypes) {
-    var seatBeltStatus = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    seatBeltStatus.seatBeltStatus = propertyTypes.seatBeltStatus || false;
-
-    this.__defineGetter__("seatBeltStatus", function () {
-        return seatBeltStatus.seatBeltStatus;
-    });
-
-    this.__defineSetter__("seatBeltStatus", function (val) {
-        try {
-            seatBeltStatus.seatBeltStatus = t.boolean(val);
-        } catch (err) {
-        }
-    });
-};
-
-OccupantStatus = function (propertyTypes) {
-    var occupantStatus = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    occupantStatus.occupantStatus = propertyTypes.occupantStatus || 0;
-
-    this.__defineGetter__("OCCUPANTSTATUS_VACANT", function () {
-        return 0;
-    });
-
-    this.__defineGetter__("OCCUPANTSTATUS_CHILD", function () {
-        return 1;
-    });
-
-    this.__defineGetter__("OCCUPANTSTATUS_ADULT", function () {
-        return 2;
-    });
-
-    this.__defineGetter__("occupantStatus", function () {
-        return occupantStatus.occupantStatus;
-    });
-
-    this.__defineSetter__("occupantStatus", function (val) {
-        try {
-            val = t.unsigned_short(val);
-            if (val === 0 || val === 1 || val === 2) {
-                occupantStatus.occupantStatus = val;
-            }
-        } catch (err) {
-        }
-    });
-};
-
-ObstacleDistance = function (propertyTypes) {
-    var obstacleDistance = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    obstacleDistance.obstacleDistance = propertyTypes.obstacleDistance || 0;
-
-    this.__defineGetter__("DISTANCESENSORLOCATION_LEFTFRONT", function () {
-        return 0;
-    });
-
-    this.__defineGetter__("DISTANCESENSORLOCATION_RIGHTFRONT", function () {
-        return 1;
-    });
-
-    this.__defineGetter__("DISTANCESENSORLOCATION_LEFTREAR", function () {
-        return 2;
-    });
-
-    this.__defineGetter__("DISTANCESENSORLOCATION_RIGHTREAR", function () {
-        return 3;
-    });
-
-    this.__defineGetter__("DISTANCESENSORLOCATION_LEFTBLINDSPOT",
-            function () {
-        return 4;
-    });
-
-    this.__defineGetter__("DISTANCESENSORLOCATION_RIGHTBLINDSPOT",
-            function () {
-        return 5;
-    });
-
-    this.__defineGetter__("obstacleDistance", function () {
-        return obstacleDistance.obstacleDistance;
-    });
-
-    this.__defineSetter__("obstacleDistance", function (val) {
-        try {
-            obstacleDistance.obstacleDistance = t.double(val);
-        } catch (err) {
-        }
-    });
-};
-
-TurnSignal = function (propertyTypes) {
-    var turnSignal = {};
-
-    VehicleCommonDataType.call(this, propertyTypes);
-
-    turnSignal.turnSignal = propertyTypes.turnSignal || 0;
-
-    this.__defineGetter__("turnSignal", function () {
-        return turnSignal.turnSignal;
-    });
-
-    this.__defineSetter__("turnSignal", function (val) {
-        try {
-            turnSignal.turnSignal = t.unsigned_short(val);
-        } catch (err) {
-        }
-    });
-};
-
 Identification = function (propertyTypes) {
     var identification = {};
 
@@ -85446,7 +84390,7 @@ WheelConfiguration = function (propertyTypes) {
     VehicleCommonDataType.call(this, propertyTypes);
 
     wheelConfiguration.wheelRadius = propertyTypes.wheelRadius || null;
-    wheelConfiguration.zone = propertyTypes.zone || null;
+    wheelConfiguration.zone = propertyTypes.zone || 0;
 
     this.__defineGetter__("wheelRadius", function () {
         return wheelConfiguration.wheelRadius;
@@ -85495,7 +84439,7 @@ WheelSpeed = function (propertyTypes) {
     VehicleCommonDataType.call(this, propertyTypes);
 
     wheelSpeed.speed = propertyTypes.speed || 0;
-    wheelSpeed.zone = propertyTypes.zone || null;
+    wheelSpeed.zone = propertyTypes.zone || 0;
 
     this.__defineGetter__("speed", function () {
         return wheelSpeed.speed;
@@ -85644,7 +84588,7 @@ LightStatus = function (propertyTypes) {
     lightStatus.highBeam = propertyTypes.highBeam || false;
     lightStatus.automaticHeadlights = propertyTypes.automaticHeadlights || null;
     lightStatus.dynamicHighBeam = propertyTypes.dynamicHighBeam || null;
-    lightStatus.zone = propertyTypes.zone || null;
+    lightStatus.zone = propertyTypes.zone || 0;
 
     this.__defineGetter__("head", function () {
         return lightStatus.head;
@@ -86002,7 +84946,7 @@ WheelTick = function (propertyTypes) {
     VehicleCommonDataType.call(this, propertyTypes);
 
     wheelTick.value = propertyTypes.value || 0;
-    wheelTick.zone = propertyTypes.zone || null;
+    wheelTick.zone = propertyTypes.zone || 0;
 
     this.__defineGetter__("value", function () {
         return wheelTick.value;
@@ -86092,10 +85036,10 @@ BatteryStatus = function (propertyTypes) {
 
     VehicleCommonDataType.call(this, propertyTypes);
 
-    batteryStatus.chargeLevel = batteryStatus.chargeLevel || null;
-    batteryStatus.voltage = batteryStatus.voltage || null;
-    batteryStatus.current = batteryStatus.current || null;
-    batteryStatus.zone = batteryStatus.zone || null;
+    batteryStatus.chargeLevel = propertyTypes.chargeLevel || null;
+    batteryStatus.voltage = propertyTypes.voltage || null;
+    batteryStatus.current = propertyTypes.current || null;
+    batteryStatus.zone = propertyTypes.zone || 0;
 
     this.__defineGetter__("chargeLevel", function () {
         return batteryStatus.chargeLevel;
@@ -86129,7 +85073,7 @@ Tire = function (propertyTypes) {
     tire.pressureLow = propertyTypes.pressureLow || null;
     tire.pressure = propertyTypes.pressure || null;
     tire.temperature = propertyTypes.temperature || null;
-    tire.zone = propertyTypes.zone || null;
+    tire.zone = propertyTypes.zone || 0;
 
     this.__defineGetter__("pressureLow", function () {
         return tire.pressureLow;
@@ -86196,7 +85140,7 @@ AirbagStatus = function (propertyTypes) {
 
     airbagStatus.activated = propertyTypes.activated || false;
     airbagStatus.deployed = propertyTypes.deployed || false;
-    airbagStatus.zone = propertyTypes.zone || null;
+    airbagStatus.zone = propertyTypes.zone || 0;
 
     this.__defineGetter__("activated", function () {
         return airbagStatus.activated;
@@ -86225,7 +85169,7 @@ Door = function (propertyTypes) {
 
     door.status = propertyTypes.status || "closed";
     door.lock = propertyTypes.lock || false;
-    door.zone = propertyTypes.zone || null;
+    door.zone = propertyTypes.zone || 0;
 
     this.__defineGetter__("status", function () {
         return door.status;
@@ -86278,7 +85222,7 @@ Defrost = function (propertyTypes) {
 
     defrost.defrostWindow = propertyTypes.defrostWindow || null;
     defrost.defrostMirrors = propertyTypes.defrostMirrors || null;
-    defrost.zone = propertyTypes.zone || null;
+    defrost.zone = propertyTypes.zone || 0;
 
     this.__defineGetter__("defrostWindow", function () {
         return defrost.defrostWindow;
@@ -86330,7 +85274,7 @@ ClimateControl = function (propertyTypes) {
     climateControl.airRecirculation = propertyTypes.airRecirculation || false;
     climateControl.steeringWheelHeater = propertyTypes.steeringWheelHeater ||
         null;
-    climateControl.zone = propertyTypes.zone || null;
+    climateControl.zone = propertyTypes.zone || 0;
 
     this.__defineGetter__("airflowDirection", function () {
         return climateControl.airflowDirection;
@@ -88650,7 +87594,8 @@ module.exports = {
     //"phonegap": {"1.0.0": require('ripple/platform/phonegap/1.0.0/spec')},
     "tizen": {"2.0": require('ripple/platform/tizen/2.0/spec')},
     "ivi": {"3.0": require('ripple/platform/ivi/3.0/spec')},
-    "wearable": {"2.0": require('ripple/platform/wearable/2.0/spec')},
+    //"wearable": {"2.0": require('ripple/platform/wearable/2.0/spec')},
+    //"tv": {"1.0": require('ripple/platform/tv/1.0/spec')},
     //"cordova": {"2.0.0": require('ripple/platform/cordova/2.0.0/spec')},
     //"webworks.bb10": {"1.0.0": require('ripple/platform/webworks.bb10/1.0.0/spec')},
     //"webworks.handset": {"2.0.0": require('ripple/platform/webworks.handset/2.0.0/spec')},
@@ -128083,6 +127028,3537 @@ _self = function () {
 module.exports = _self;
 
 });
+define('ripple/platform/tv/1.0/WebAPIError', function (require, exports, module) {
+/*
+ *  Copyright 2014 Intel Corporation.
+ *
+ * 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.
+ */
+
+var errorcode = require('ripple/platform/wearable/2.0/errorcode');
+
+var msg = {
+        0: "Generic Error",
+        1: "Index or size is negative, or greater than the allowed value.",
+        2: "Specified range of text does not fit into a DOMString.",
+        3: "Node is inserted somewhere it doesn't belong.",
+        4: "Node is used in a different document than the one that created it (that doesn't support it).",
+        5: "An invalid or illegal character is specified.",
+        6: "Data is specified for a Node which does not support data.",
+        7: "An attempt is made to modify an object where modifications are not allowed.",
+        8: "An attempt is made to reference a Node in a context where it does not exist.",
+        9: "The implementation does not support the requested type of object or operation.",
+        10: "An attempt is made to add an attribute that is already in use elsewhere.",
+        11: "An attempt is made to use an object that is not, or is no longer, usable.",
+        12: "An invalid or illegal string is specified.",
+        13: "An attempt is made to modify the type of the underlying object.",
+        14: "An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.",
+        15: "A parameter or an operation is not supported by the underlying object.",
+        16: "A call to a method such as insertBefore or removeChild would make the Node invalid with respect to \"partial validity\", this exception would be raised and the operation would not be done.",
+        17: "The type of an object is incompatible with the expected type of the parameter associated to the object.",
+        18: "An attempt is made to perform an operation or access some data in a way that would be a security risk or a violation of the user agent's security policy.",
+        19: "A network error occurs in synchronous requests.",
+        20: "The abort error occurs in asynchronous requests by user prompt.",
+        21: "The operation could not be completed because the URL does not match.",
+        22: "The quota has been exceeded.",
+        23: "The operation timed out.",
+        24: "The supplied node is incorrect or has an incorrect ancestor for this operation.",
+        25: "The object can not be cloned.",
+        99: "The content of an object does not include valid values.",
+        100: "Error occurred in communication with the underlying implementation that meant the requested method could not complete.",
+        111: "Requested service is not available.",
+        112: "The authentication token of remote peer agent is not generated."
+    },
+    errType = {
+        0: "UnknownError",
+        1: "IndexSizeError",
+        2: "DOMStringSizeError",
+        3: "HierarchyRequestError",
+        4: "WrongDocumentError",
+        5: "InvalidCharacterError",
+        6: "NoDataAllowedError",
+        7: "NoModificationAllowedError",
+        8: "NotFoundError",
+        9: "NotSupportedError",
+        10: "InuseAttributeError",
+        11: "InvalidStateError",
+        12: "SyntaxError",
+        13: "InvalidModificationError",
+        14: "NamespaceError",
+        15: "InvalidAccessError",
+        16: "ValidationError",
+        17: "TypeMismatchError",
+        18: "SecurityError",
+        19: "NetworkError",
+        20: "AbortError",
+        21: "URLMismatchError",
+        22: "QuotaExceededError",
+        23: "TimeoutError",
+        24: "InvalidNodeTypeError",
+        25: "DataCloneError",
+        99: "InvalidValuesError",
+        100: "IOError",
+        111: "ServiceNotAvailableError",
+        112: "TokenNotGeneratedError"
+    };
+
+/*
+ support 3 types of error:
+ - WebAPIError()
+ code = errorcode.UNKNOWN_ERR
+ message = errorcode.message[UNKNOWN_ERR]
+ - WebAPIError(errorcode."TYPE_MISMATCH_ERR")
+ code = 17
+ message = errorcode.message[17]
+ - WebAPIError(my_own_error_code, "This is my error message.")
+ code = my_own_error_code(number)
+ message = "This is my error message."
+ */
+
+module.exports = function (code, message, name) {
+    var _code, _message, _name;
+
+    if (typeof code !== 'number') {
+        _code = errorcode.UNKNOWN_ERR;
+        _message = msg[_code];
+        _name = errType[_code];
+    } else {
+        _code = code;
+        if (typeof message === 'string') {
+            _message = message;
+        } else {
+            _message = msg[_code];
+        }
+        if (typeof name === 'string') {
+            _name = name;
+        } else {
+            _name = errType[_code];
+        }
+    }
+
+    this.__defineGetter__("code", function () {
+        return _code;
+    });
+    this.__defineGetter__("message", function () {
+        return _message;
+    });
+    this.__defineGetter__("name", function () {
+        return _name;
+    });
+};
+
+});
+define('ripple/platform/tv/1.0/WebAPIException', function (require, exports, module) {
+/*
+ *  Copyright 2014 Intel Corporation.
+ *
+ * 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.
+ */
+
+var errorcode = require('ripple/platform/wearable/2.0/errorcode');
+
+var msg = {
+        0: "Generic Error",
+        1: "Index or size is negative, or greater than the allowed value.",
+        2: "Specified range of text does not fit into a DOMString.",
+        3: "Node is inserted somewhere it doesn't belong.",
+        4: "Node is used in a different document than the one that created it (that doesn't support it).",
+        5: "An invalid or illegal character is specified.",
+        6: "Data is specified for a Node which does not support data.",
+        7: "An attempt is made to modify an object where modifications are not allowed.",
+        8: "An attempt is made to reference a Node in a context where it does not exist.",
+        9: "The implementation does not support the requested type of object or operation.",
+        10: "An attempt is made to add an attribute that is already in use elsewhere.",
+        11: "An attempt is made to use an object that is not, or is no longer, usable.",
+        12: "An invalid or illegal string is specified.",
+        13: "An attempt is made to modify the type of the underlying object.",
+        14: "An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.",
+        15: "A parameter or an operation is not supported by the underlying object.",
+        16: "A call to a method such as insertBefore or removeChild would make the Node invalid with respect to \"partial validity\", this exception would be raised and the operation would not be done.",
+        17: "The type of an object is incompatible with the expected type of the parameter associated to the object.",
+        18: "An attempt is made to perform an operation or access some data in a way that would be a security risk or a violation of the user agent's security policy.",
+        19: "A network error occurs in synchronous requests.",
+        20: "The abort error occurs in asynchronous requests by user prompt.",
+        21: "The operation could not be completed because the URL does not match.",
+        22: "The quota has been exceeded.",
+        23: "The operation timed out.",
+        24: "The supplied node is incorrect or has an incorrect ancestor for this operation.",
+        25: "The object can not be cloned.",
+        99: "The content of an object does not include valid values.",
+        100: "Error occurred in communication with the underlying implementation that meant the requested method could not complete.",
+        111: "Requested service is not available.",
+        112: "The authentication token of remote peer agent is not generated."
+    },
+    errType = {
+        0: "UnknownError",
+        1: "IndexSizeError",
+        2: "DOMStringSizeError",
+        3: "HierarchyRequestError",
+        4: "WrongDocumentError",
+        5: "InvalidCharacterError",
+        6: "NoDataAllowedError",
+        7: "NoModificationAllowedError",
+        8: "NotFoundError",
+        9: "NotSupportedError",
+        10: "InuseAttributeError",
+        11: "InvalidStateError",
+        12: "SyntaxError",
+        13: "InvalidModificationError",
+        14: "NamespaceError",
+        15: "InvalidAccessError",
+        16: "ValidationError",
+        17: "TypeMismatchError",
+        18: "SecurityError",
+        19: "NetworkError",
+        20: "AbortError",
+        21: "URLMismatchError",
+        22: "QuotaExceededError",
+        23: "TimeoutError",
+        24: "InvalidNodeTypeError",
+        25: "DataCloneError",
+        99: "InvalidValuesError",
+        100: "IOError",
+        111: "ServiceNotAvailableError",
+        112: "TokenNotGeneratedError"
+    };
+
+/*
+ support 3 types of error:
+ - WebAPIError()
+ code = errorcode.UNKNOWN_ERR
+ message = errorcode.message[UNKNOWN_ERR]
+ - WebAPIError(errorcode."TYPE_MISMATCH_ERR")
+ code = 17
+ message = errorcode.message[17]
+ - WebAPIError(my_own_error_code, "This is my error message.")
+ code = my_own_error_code(number)
+ message = "This is my error message."
+ */
+
+module.exports = function (code, message, name) {
+    var _code, _message, _name;
+
+    if (typeof code !== 'number') {
+        _code = errorcode.UNKNOWN_ERR;
+        _message = msg[_code];
+        _name = errType[_code];
+    } else {
+        _code = code;
+        if (typeof message === 'string') {
+            _message = message;
+        } else {
+            _message = msg[_code];
+        }
+        if (typeof name === 'string') {
+            _name = name;
+        } else {
+            _name = errType[_code];
+        }
+    }
+
+    this.__defineGetter__("code", function () {
+        return _code;
+    });
+    this.__defineGetter__("message", function () {
+        return _message;
+    });
+    this.__defineGetter__("name", function () {
+        return _name;
+    });
+};
+
+});
+define('ripple/platform/tv/1.0/dbinit', function (require, exports, module) {
+/*
+ *  Copyright 2014 Intel Corporation.
+ *
+ * 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.
+ */
+
+var exception = require('ripple/exception'),
+    DBBuilder,
+    _data = {
+        dbBuilder: null
+    },
+    _self = {};
+
+function _initialize() {
+    _data.dbBuilder = new DBBuilder();
+}
+
+DBBuilder = function () {
+    var self;
+
+    // private
+    function formatString(str) {
+        return str.replace(/^\s+|[\t\n\r\v]+|\s+$/g, "").replace(/\s+/g, "");
+    }
+
+    // private
+    function formatHex(str) {
+        return str.replace(/,(0x[0-9a-fA-F]+?),/g, ',"$1",');
+    }
+
+    // public
+    function register(type, dbFile, Extension) {
+        _data[type] = Extension ? new Extension() : {};
+
+        if (!dbFile)
+            return;
+
+        _self.__defineGetter__(type, function () {
+            var fnInit;
+
+            if (!_data[type].db) {
+                fnInit = _data[type].initdb || initdb;
+                _data[type].db = fnInit(dbFile);
+            }
+
+            return _data[type].db;
+        });
+    }
+
+    function initdb(dbFile) {
+        var xmlHttp, res;
+
+        try {
+            xmlHttp = new XMLHttpRequest();
+            xmlHttp.open("GET", "dbsamples/" + dbFile, false);
+            xmlHttp.send();
+        } catch (e) {
+            exception.handle(e);
+        }
+
+        if (!xmlHttp.responseText) {
+            return null;
+        }
+
+        res = formatHex(formatString(xmlHttp.responseText));
+
+        return JSON.parse(res);
+    }
+
+    self = {
+        register: register,
+        initdb:   initdb
+    };
+
+    return self;
+};
+
+_initialize();
+
+module.exports = _self;
+
+});
+define('ripple/platform/tv/1.0/errorcode', function (require, exports, module) {
+/*
+ *  Copyright 2014 Intel Corporation.
+ *
+ * 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.
+ */
+
+var _self = {};
+
+_self.__defineGetter__("UNKNOWN_ERR", function () {
+    return 0;
+});
+
+_self.__defineGetter__("INDEX_SIZE_ERR", function () {
+    return 1;
+});
+
+_self.__defineGetter__("DOMSTRING_SIZE_ERR", function () {
+    return 2;
+});
+
+_self.__defineGetter__("HIERARCHY_REQUEST_ERR", function () {
+    return 3;
+});
+
+_self.__defineGetter__("WRONG_DOCUMENT_ERR", function () {
+    return 4;
+});
+
+_self.__defineGetter__("INVALID_CHARACTER_ERR", function () {
+    return 5;
+});
+
+_self.__defineGetter__("NO_DATA_ALLOWED_ERR", function () {
+    return 6;
+});
+
+_self.__defineGetter__("NO_MODIFICATION_ALLOWED_ERR", function () {
+    return 7;
+});
+
+_self.__defineGetter__("NOT_FOUND_ERR", function () {
+    return 8;
+});
+
+_self.__defineGetter__("NOT_SUPPORTED_ERR", function () {
+    return 9;
+});
+
+_self.__defineGetter__("INUSE_ATTRIBUTE_ERR", function () {
+    return 10;
+});
+
+_self.__defineGetter__("INVALID_STATE_ERR", function () {
+    return 11;
+});
+
+_self.__defineGetter__("SYNTAX_ERR", function () {
+    return 12;
+});
+
+_self.__defineGetter__("INVALID_MODIFICATION_ERR", function () {
+    return 13;
+});
+
+_self.__defineGetter__("NAMESPACE_ERR", function () {
+    return 14;
+});
+
+_self.__defineGetter__("INVALID_ACCESS_ERR", function () {
+    return 15;
+});
+
+_self.__defineGetter__("VALIDATION_ERR", function () {
+    return 16;
+});
+
+_self.__defineGetter__("TYPE_MISMATCH_ERR", function () {
+    return 17;
+});
+
+_self.__defineGetter__("SECURITY_ERR", function () {
+    return 18;
+});
+
+_self.__defineGetter__("NETWORK_ERR", function () {
+    return 19;
+});
+
+_self.__defineGetter__("ABORT_ERR", function () {
+    return 20;
+});
+
+_self.__defineGetter__("URL_MISMATCH_ERR", function () {
+    return 21;
+});
+
+_self.__defineGetter__("QUOTA_EXCEEDED_ERR", function () {
+    return 22;
+});
+
+_self.__defineGetter__("TIMEOUT_ERR", function () {
+    return 23;
+});
+
+_self.__defineGetter__("INVALID_NODE_TYPE_ERR", function () {
+    return 24;
+});
+
+_self.__defineGetter__("DATA_CLONE_ERR", function () {
+    return 25;
+});
+
+_self.__defineGetter__("INVALID_VALUES_ERR", function () {
+    return 99;
+});
+
+_self.__defineGetter__("IO_ERR", function () {
+    return 100;
+});
+
+_self.__defineGetter__("SERVICE_NOT_AVAILABLE_ERR", function () {
+    return 111;
+});
+
+_self.__defineGetter__("TOKEN_NOT_GENERATED_ERR", function () {
+    return 112;
+});
+
+module.exports = _self;
+
+
+});
+define('ripple/platform/tv/1.0/spec/config', function (require, exports, module) {
+/*
+ *  Copyright 2014 Research In Motion Limited.
+ *  Copyright 2014 Intel Corporation.
+ *
+ * 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.
+ */
+var utils = require('ripple/utils'),
+    db = require('ripple/db'),
+    constants = require('ripple/constants');
+
+module.exports = {
+    fileName: "config.xml",
+    validateVersion: function (configValidationObject) {
+        var valid = true;
+        // no xmlns:JIL in wac 2.0 spec
+        valid = !!configValidationObject.widget.validationResult[0].attributes.xmlns.valid;
+
+        return valid;
+    },
+    extractInfo: function (configValidationObject) {
+        if (!configValidationObject) {
+            return null;
+        }
+
+        var widgetInfo = {},
+            configFeatures,
+            configPreferences,
+            preferenceName,
+            platform, rst, i, j,
+            settingRst = {
+                'screen-orientation': 'portrait',
+                'context-menu': 'enable',
+                'background-support': 'disable',
+                encryption: 'disable',
+                'install-location': 'auto',
+                'hwkey-event': 'enable'
+            };
+
+        widgetInfo.id = configValidationObject.widget.validationResult[0].attributes.id.value || "";
+        widgetInfo.name = configValidationObject.widget.children.name.validationResult[0].value;
+        widgetInfo.icon = configValidationObject.widget.children.icon.validationResult[0].attributes.src.value;
+        widgetInfo.version = configValidationObject.widget.validationResult[0].attributes.version.value;
+        if (configValidationObject.widget.children.application.validationResult[0].valid) {
+            widgetInfo.tizenAppId = configValidationObject.widget.children.application.validationResult[0].attributes.id.value;
+            widgetInfo.tizenPackageId = configValidationObject.widget.children.application.validationResult[0].attributes.package.value;
+        }
+
+        widgetInfo.features = {};
+
+        if (configValidationObject.widget.children.setting.hasOwnProperty('validationResult') === true) {
+            rst = configValidationObject.widget.children.setting.validationResult;
+            // the first one has higher priority per platform implementation
+            for (i = rst.length -1 ; i >= 0; i--) {
+                if (rst[i].valid === true) {
+                    for (j in rst[i].attributes) {
+                        if (rst[i].attributes[j].value !== undefined) {
+                            settingRst[j] = rst[i].attributes[j].value;
+                        }
+                    }
+                }
+            }
+            db.save("layout", settingRst["screen-orientation"]);
+        }
+
+        configFeatures = configValidationObject.widget.children.feature.validationResult;
+        utils.forEach(configFeatures, function (f) {
+            if (f.valid === true) {
+                var feature = {id: f.attributes.name.value,
+                         required: f.attributes.required.valid};
+                widgetInfo.features[feature.id] = feature;
+            }
+        });
+
+        widgetInfo.metadata = {};
+        if (configValidationObject.widget.children.metadata.hasOwnProperty('validationResult') === true) {
+            widgetInfo.metadata.key = configValidationObject.widget.children.metadata.validationResult[0].attributes.key.value;
+            widgetInfo.metadata.value = configValidationObject.widget.children.metadata.validationResult[0].attributes.value.value;
+        }
+        
+        widgetInfo.category = {};
+        if (configValidationObject.widget.children.category.hasOwnProperty('validationResult') === true) {
+            widgetInfo.metadata.name = configValidationObject.widget.children.category.validationResult[0].attributes.name.value;
+        }
+
+        widgetInfo.preferences = {};
+
+        configPreferences = configValidationObject.widget.children.preference.validationResult;
+
+        platform = require('ripple/platform');
+        utils.forEach(configPreferences, function (preference) {
+            preferenceName = preference.attributes.name.value;
+            if (preferenceName) {
+                widgetInfo.preferences[preferenceName] = {
+                    "key": preferenceName,
+                    "value": preference.attributes.value.value || "",
+                    "readonly": preference.attributes.readonly.value === "true"
+                };
+
+                db.save(preferenceName,
+                        widgetInfo.preferences[preferenceName].value,
+                        platform.getPersistencePrefix(widgetInfo.id));
+            }
+        });
+
+        return widgetInfo;
+    },
+    schema: {
+        rootElement: "widget",
+        widget: {
+            nodeName: "widget",
+            required: true,
+            occurrence: 1,
+            helpText: "\"widget\" element describes widget information in configuration documents and serves as a container for other elements. It must be used in the configuration document and may have the following child elments: name,description,icon,author,license,content,feature and preference.The \"widget\" element MAY have following attributes: id,version,height,width, defaultlocale, xml:lang and dir",
+            attributes: {
+                xmlns: {
+                    attributeName: "xmlns",
+                    required: true,
+                    type: "list",
+                    listValues: ["http://www.w3.org/ns/widgets"]
+                },
+                "xmlns:tizen": {
+                    attributeName: "xmlns:tizen",
+                    required: false,
+                    type: "list",
+                    listValues: ["http://tizen.org/ns/widgets"]
+                },
+                "xml:lang": {
+                    attributeName: "xml:lang",
+                    required: false,
+                    type: "iso-language"
+                },
+                dir: {
+                    attributeName: "dir",
+                    required: false,
+                    type: "list",
+                    listValues: ["ltr", "rtl", "lro", "rlo"]
+                },
+                id: {
+                    attributeName: "id",
+                    required: false,
+                    type: "string"
+                },
+                version: {
+                    attributeName: "version",
+                    required: false,
+                    type: "string"
+                },
+                height: {
+                    attributeName: "height",
+                    required: false,
+                    type: "integer"
+                },
+                width: {
+                    attributeName: "width",
+                    required: false,
+                    type: "integer"
+                },
+                viewmodes: {
+                    attributeName: "viewmodes",
+                    required: false,
+                    type: "list",
+                    listValues: ["windowed", "floating", "fullscreen", "maximized", "minimized"]
+                },
+                defaultlocale: {
+                    attributeName: "defaultlocale",
+                    required: false,
+                    type: "iso-language"
+                }
+            },
+            children: {
+                name: {
+                    nodeName: "name",
+                    required: false,
+                    occurrence: 0,
+                    type: "string",
+                    attributes: {
+                        "xml:lang": {
+                            attributeName: "xml:lang",
+                            required: false,
+                            type: "iso-language",
+                            unique: true
+                        },
+                        dir: {
+                            attributeName: "dir",
+                            required: false,
+                            type: "list",
+                            listValues: ["ltr", "rtl", "lro", "rlo"]
+                        },
+                        "short": {
+                            attributeName: "short",
+                            required: false,
+                            type: "string"
+                        }
+                    },
+                    children: {
+                        span: {
+                            nodeName: "span",
+                            required: false,
+                            type: "string",
+                            attributes: {
+                                "xml:lang": {
+                                    attributeName: "xml:lang",
+                                    required: false,
+                                    type: "iso-language",
+                                    unique: true
+                                },
+                                dir: {
+                                    attributeName: "dir",
+                                    required: false,
+                                    type: "list",
+                                    listValues: ["ltr", "rtl", "lro", "rlo"]
+                                }
+                            }
+                        }
+                    }
+                },
+                description: {
+                    nodeName: "description",
+                    required: false,
+                    occurrence: 0,
+                    type: "string",
+                    attributes: {
+                        "xml:lang": {
+                            attributeName: "xml:lang",
+                            required: false,
+                            type: "iso-language",
+                            unique: true
+                        },
+                        dir: {
+                            attributeName: "dir",
+                            required: false,
+                            type: "list",
+                            listValues: ["ltr", "rtl", "lro", "rlo"]
+                        }
+                    },
+                    children: {
+                        span: {
+                            nodeName: "span",
+                            required: false,
+                            type: "string",
+                            attributes: {
+                                "xml:lang": {
+                                    attributeName: "xml:lang",
+                                    required: false,
+                                    type: "iso-language",
+                                    unique: true
+                                },
+                                dir: {
+                                    attributeName: "dir",
+                                    required: false,
+                                    type: "list",
+                                    listValues: ["ltr", "rtl", "lro", "rlo"]
+                                }
+                            }
+                        }
+                    }
+                },
+                author: {
+                    nodeName: "author",
+                    required: false,
+                    occurrence: 0,
+                    type: "string",
+                    attributes: {
+                        "xml:lang": {
+                            attributeName: "xml:lang",
+                            required: false,
+                            type: "iso-language"
+                        },
+                        dir: {
+                            attributeName: "dir",
+                            required: false,
+                            type: "list",
+                            listValues: ["ltr", "rtl", "lro", "rlo"]
+                        },
+                        href: {
+                            attributeName: "href",
+                            required: false,
+                            type: "regex",
+                            regex: constants.REGEX.URL
+                        },
+                        email: {
+                            attributeName: "email",
+                            required: false,
+                            type: "regex",
+                            regex: constants.REGEX.EMAIL
+                        }
+                    },
+                    children: {
+                        span: {
+                            nodeName: "span",
+                            required: false,
+                            type: "string",
+                            attributes: {
+                                "xml:lang": {
+                                    attributeName: "xml:lang",
+                                    required: false,
+                                    type: "iso-language",
+                                    unique: true
+                                },
+                                dir: {
+                                    attributeName: "dir",
+                                    required: false,
+                                    type: "list",
+                                    listValues: ["ltr", "rtl", "lro", "rlo"]
+                                }
+                            }
+                        }
+                    }
+                },
+                license: {
+                    nodeName: "license",
+                    required: false,
+                    occurrence: 0,
+                    type: "string",
+                    attributes: {
+                        "xml:lang": {
+                            attributeName: "xml:lang",
+                            required: false,
+                            type: "iso-language"
+                        },
+                        dir: {
+                            attributeName: "dir",
+                            required: false,
+                            type: "list",
+                            listValues: ["ltr", "rtl", "lro", "rlo"]
+                        },
+                        href: {
+                            attributeName: "href",
+                            type: "regex",
+                            required: false,
+                            regex: constants.REGEX.URL
+                        }
+                    },
+                    children: {
+                        span: {
+                            nodeName: "span",
+                            required: false,
+                            type: "string",
+                            attributes: {
+                                "xml:lang": {
+                                    attributeName: "xml:lang",
+                                    required: false,
+                                    type: "iso-language",
+                                    unique: true
+                                },
+                                dir: {
+                                    attributeName: "dir",
+                                    required: false,
+                                    type: "list",
+                                    listValues: ["ltr", "rtl", "lro", "rlo"]
+                                }
+                            }
+                        }
+                    }
+                },
+                icon: {
+                    nodeName: "icon",
+                    required: false,
+                    occurrence: 0,
+                    attributes: {
+                        "xml:lang": {
+                            attributeName: "xml:lang",
+                            required: false,
+                            type: "iso-language"
+                        },
+                        dir: {
+                            attributeName: "dir",
+                            required: false,
+                            type: "list",
+                            listValues: ["ltr", "rtl", "lro", "rlo"]
+                        },
+                        src: {
+                            attributeName: "src",
+                            required: true,
+                            type: "string"
+                        },
+                        width: {
+                            attributeName: "width",
+                            required: false,
+                            type: "integer"
+                        },
+                        height: {
+                            attributeName: "height",
+                            required: false,
+                            type: "integer"
+                        }
+                    }
+                },
+                content: {
+                    nodeName: "content",
+                    required: false,
+                    occurrence: 1,
+                    attributes: {
+                        "xml:lang": {
+                            attributeName: "xml:lang",
+                            required: false,
+                            type: "iso-language",
+                            unique: true
+                        },
+                        dir: {
+                            attributeName: "dir",
+                            required: false,
+                            type: "list",
+                            listValues: ["ltr", "rtl", "lro", "rlo"]
+                        },
+                        src: {
+                            attributeName: "src",
+                            required: true,
+                            type: "string"
+                        },
+                        encoding: {
+                            attributeName: "encoding",
+                            required: false,
+                            type: "string"
+                        },
+                        type: {
+                            attributeName: "type",
+                            required: false,
+                            type: "string"
+                        }
+                    }
+                },
+                setting: {
+                    nodeName: "tizen:setting",
+                    required: false,
+                    occurrence: 0,
+                    attributes: {
+                        'screen-orientation': {
+                            attributeName: "screen-orientation",
+                            required: false,
+                            type: "list",
+                            listValues: ['portrait', 'landscape', 'auto']
+                        },
+                        'context-menu': {
+                            attributeName: "context-menu",
+                            required: false,
+                            type: "list",
+                            listValues: ['enable', 'disable']
+                        },
+                        'background-support': {
+                            attributeName: "background-support",
+                            required: false,
+                            type: "list",
+                            listValues: ['enable', 'disable']
+                        },
+                        'encryption': {
+                            attributeName: "encryption",
+                            required: false,
+                            type: "list",
+                            listValues: ['enable', 'disable']
+                        },
+                        'install-location': {
+                            attributeName: "install-location",
+                            required: false,
+                            type: "list",
+                            listValues: ['auto', 'internal-only', 'perfer-external']
+                        },
+                        'hwkey-event': {
+                            attributeName: "hwkey-event",
+                            required: false,
+                            type: "list",
+                            listValues: ['enable', 'disable']
+                        }
+                    }
+                },
+                application: {
+                    nodeName: "tizen:application",
+                    required: true,
+                    occurrence: 1,
+                    attributes: {
+                        id: {
+                            attributeName: "id",
+                            required: true,
+                            type: "string"
+                        },
+                        required_version: {
+                            attributeName: "required_version",
+                            required: true,
+                            type: "list",
+                            listValues: ['1.0', '2.0', '2.1', '2.2']
+                        },
+                        package: {
+                            attributeName: "package",
+                            required: false,
+                            type: "string"
+                        }
+                    }
+                },
+                "tizen:content": {
+                    nodeName: "tizen:content",
+                    required: false,
+                    occurrence: 1,
+                    attributes: {
+                        src: {
+                            attributeName: "src",
+                            required: true,
+                            type: "string"
+                        }
+                    }
+                },
+                control: {
+                    nodeName: "tizen:app-control",
+                    required: false,
+                    occurrence: 0,
+                    children: {
+                        src: {
+                            nodeName: "tizen:src",
+                            required: true,
+                            occurence: 0,
+                            attributes: {
+                                name: {
+                                    attributeName: "name",
+                                    required: false,
+                                    type: "string"
+                                }
+                            }
+                        },
+                        operation: {
+                            nodeName: "tizen:operation",
+                            required: true,
+                            occurence: 0,
+                            attributes: {
+                                name: {
+                                    attributeName: "name",
+                                    required: false,
+                                    type: "string"
+                                }
+                            }
+                        },
+                        uri: {
+                            nodeName: "tizen:uri",
+                            required: false,
+                            occurence: 0,
+                            attributes: {
+                                name: {
+                                    attributeName: "name",
+                                    required: false,
+                                    type: "string"
+                                }
+                            }
+                        },
+                        mime: {
+                            nodeName: "tizen:mime",
+                            required: false,
+                            occurence: 0,
+                            attributes: {
+                                name: {
+                                    attributeName: "name",
+                                    required: false,
+                                    type: "string"
+                                }
+                            }
+                        }
+                    }
+                },
+                "app-widget": {
+                    nodeName: "tizen:app-widget",
+                    required: false,
+                    occurrence: 0,
+                    attributes: {
+                        id: {
+                            attributeName: "id",
+                            required: true,
+                            type: "string"
+                        },
+                        primary: {
+                            attributeName: "primary",
+                            required: true,
+                            type: "list",
+                            listValues: ['true', 'false']
+                        },
+                        "auto-launch": {
+                            attributeName: "auto-launch",
+                            required: false,
+                            type: "list",
+                            listValues: ['true', 'false']
+                        },
+                        "update-period": {
+                            attributeName: "update-period",
+                            required: false,
+                            type: "integer"
+                        }
+                    },
+                    children: {
+                        "box-label": {
+                            nodeName: "tizen:box-label",
+                            required: true,
+                            occurence: 1
+                        },
+                        "box-icon": {
+                            nodeName: "tizen:box-icon",
+                            required: true,
+                            occurence: 1,
+                            attributes: {
+                                src: {
+                                    attributeName: "src",
+                                    required: true,
+                                    type: "string"
+                                }
+                            }
+                        },
+                        "box-content": {
+                            nodeName: "tizen:box-content",
+                            required: true,
+                            occurence: 1,
+                            attributes: {
+                                src: {
+                                    attributeName: "src",
+                                    required: true,
+                                    type: "string"
+                                },
+                                "mouse-event": {
+                                    attributeName: "mouse-event",
+                                    required: false,
+                                    type: "string"
+                                },
+                                "touch-event": {
+                                    attributeName: "touch-event",
+                                    required: false,
+                                    type: "string"
+                                }
+                            },
+                            children: {
+                                "box-size": {
+                                    nodeName: "tizen:box-size",
+                                    required: false,
+                                    occurence: 1,
+                                    attributes: {
+                                        "preview": {
+                                            attributeName: "preview",
+                                            required: false,
+                                            type: "string"
+                                        }
+                                    }
+                                },
+                                pd: {
+                                    nodeName: "tizen:pd",
+                                    required: false,
+                                    occurence: 1,
+                                    attributes: {
+                                        "src": {
+                                            attributeName: "src",
+                                            required: true,
+                                            type: "string"
+                                        },
+                                        "width": {
+                                            attributeName: "width",
+                                            required: true,
+                                            type: "integer"
+                                        },
+                                        "height": {
+                                            attributeName: "height",
+                                            required: true,
+                                            type: "integer"
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                },
+                account: {
+                    nodeName: "tizen:account",
+                    required: false,
+                    occurrence: 0,
+                    attributes: {
+                        "multiple-account-support": {
+                            attributeName: "multiple-account-support",
+                            required: true,
+                            type: "list",
+                            listValues: ['true', 'false']
+                        }
+                    },
+                    children: {
+                        icon: {
+                            nodeName: "tizen:icon",
+                            required: false,
+                            occurence: 1,
+                            attributes: {
+                                section: {
+                                    attributeName: "section",
+                                    required: true,
+                                    type: "string"
+                                }
+                            }
+                        },
+                        "display-name": {
+                            nodeName: "tizen:display-name",
+                            required: false,
+                            occurence: 1,
+                            attributes: {
+                                "xml:lang": {
+                                    attributeName: "xml:lang",
+                                    required: false,
+                                    type: "string"
+                                }
+                            }
+                        },
+                        capability: {
+                            nodeName: "capability",
+                            required: false,
+                            occurence: 1
+                        }
+                    }
+                },
+                feature: {
+                    nodeName: "tizen:privilege",
+                    required: false,
+                    occurrence: 0,
+                    attributes: {
+                        "xml:lang": {
+                            attributeName: "xml:lang",
+                            required: false,
+                            type: "iso-language"
+                        },
+                        dir: {
+                            attributeName: "dir",
+                            required: false,
+                            type: "list",
+                            listValues: ["ltr", "rtl", "lro", "rlo"]
+                        },
+                        name: {
+                            attributeName: "name",
+                            required: true,
+                            type: "list",
+                            listValues: ["http://www.w3.org/TR/battery-status/",
+                                         "http://www.w3.org/TR/geolocation-API/",
+                                         "http://www.w3.org/TR/touch-events/",
+                                         "http://www.w3.org/TR/vibration/",
+                                         "http://tizen.org/privilege/tizen",
+                                         "http://tizen.org/privilege/alarm",
+                                         "http://tizen.org/privilege/application.launch",
+                                         "http://tizen.org/privilege/appmanager.kill", "http://tizen.org/privilege/appmanager.certificate",
+                                         "http://tizen.org/privilege/content.read", "http://tizen.org/privilege/content.write",
+                                         "http://tizen.org/privilege/filesystem.read", "http://tizen.org/privilege/filesystem.write",
+                                         "http://tizen.org/privilege/packagemanager.install", "http://tizen.org/privilege/package.info",
+                                         "http://tizen.org/privilege/power",
+                                         "http://tizen.org/privilege/system", "http://tizen.org/privilege/systemmanager",
+                                         "http://tizen.org/privilege/time"]
+                        },
+                        required: {
+                            attributeName: "required",
+                            type: "boolean",
+                            required: false
+                        }
+                    },
+                    children: {
+                        param: {
+                            nodeName: "param",
+                            required: false,
+                            occurrence: 0,
+                            attributes: {
+                                "xml:lang": {
+                                    attributeName: "xml:lang",
+                                    required: false,
+                                    type: "iso-language"
+                                },
+                                dir: {
+                                    attributeName: "dir",
+                                    required: false,
+                                    type: "list",
+                                    listValues: ["ltr", "rtl", "lro", "rlo"]
+                                },
+                                name: {
+                                    attributeName: "name",
+                                    required: true,
+                                    type: "string"
+                                },
+                                value: {
+                                    attributeName: "value",
+                                    required: true,
+                                    type: "string"
+                                }
+                            }
+                        }
+                    }
+                },
+                category: {
+                    nodeName: "tizen:category",
+                    required: false,
+                    occurrence: 0,
+                    attributes: {
+                        "name": {
+                            attributeName: "name",
+                            required: true,
+                            type: "string"
+                        }
+                    }
+                },
+                metadata: {
+                    nodeName: "tizen:metadata",
+                    required: false,
+                    occurrence: 0,
+                    attributes: {
+                        "key": {
+                            attributeName: "key",
+                            required: true,
+                            type: "string"
+                        },
+                        "value": {
+                            attributeName: "value",
+                            required: true,
+                            type: "string"
+                        }
+                    }
+                },
+                preference: {
+                    nodeName: "preference",
+                    required: false,
+                    occurrence: 0,
+                    attributes: {
+                        "xml:lang": {
+                            attributeName: "xml:lang",
+                            required: false,
+                            type: "iso-language"
+                        },
+                        dir: {
+                            attributeName: "dir",
+                            required: false,
+                            type: "list",
+                            listValues: ["ltr", "rtl", "lro", "rlo"]
+                        },
+                        name: {
+                            attributeName: "name",
+                            required: true,
+                            type: "string"
+                        },
+                        value: {
+                            type: "string",
+                            required: false,
+                            attributeName: "value"
+                        },
+                        readonly: {
+                            attributeName: "readonly",
+                            type: "boolean",
+                            required: false
+                        }
+                    }
+                }
+            }
+        }
+    }
+};
+
+});
+define('ripple/platform/tv/1.0/spec/device', function (require, exports, module) {
+/*
+ *  Copyright 2011 Intel Corporation.
+ *
+ * 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.
+ */
+var event = require('ripple/event'),
+    utils = require('ripple/utils'),
+    StorageTypeTable = {
+        "UNKNOWN": "UNKNOWN",
+        "INTERNAL": "INTERNAL",
+        "MMC": "MMC",
+        "USB_HOST": "USB_HOST"
+    },
+    NetworkTypeTable = {
+        "NONE": "NONE",
+        "2G": "2G",
+        "2.5G": "2.5G",
+        "3G": "3G",
+        "4G": "4G",
+        "WIFI": "WIFI",
+        "ETHERNET": "ETHERNET",
+        "UNKNOWN": "UNKNOWN"
+    },
+    LocaleTable = {
+        "eng_USA": "eng_USA",
+        "eng_CAN": "eng_CAN",
+        "deu_DEU": "deu_DEU",
+        "jpn_JPN": "jpn_JPN",
+        "zho_CHN": "zho_CHN",
+        "UNKNOWN": "UNKNOWN"
+    },
+    SimStateTable = {
+        "ABSENT": "ABSENT",
+        "INITIALIZING": "INITIALIZING",
+        "READY": "READY",
+        "PIN_REQUIRED": "PIN_REQUIRED",
+        "PUK_REQUIRED":"PUK_REQUIRED",
+        "NETWORK_LOCKED": "NETWORK_LOCKED",
+        "SIM_LOCKED": "SIM_LOCKED",
+        "UNKNOWN": "UNKNOWN"
+    };
+
+function deviceStatusEventTrigger(setting) {
+    event.trigger("DeviceStatusChanged", [setting]);
+}
+
+module.exports = {
+    "Config": {
+        "vibratingMode": {
+            "name": "Vibrator",
+            "control": {
+                "type": "checkbox",
+                "value": true
+            },
+            "callback": function (setting) {
+                event.trigger("VibratingModeChanged", [setting]);
+            }
+        },
+        "lockScreen": {
+            "name": "Lock Screen",
+            "control": {
+                "type": "checkbox",
+                "value": false
+            },
+            "callback": function (setting) {
+                event.trigger("LockScreenChanged", [setting]);
+            }
+        }
+    },
+    "DEVICE_ORIENTATION": {
+        "status": {
+            "name": "Status",
+            "control": {
+                "type": "label",
+                "innertext": "PORTRAIT_PRIMARY",
+                "value": "PORTRAIT_PRIMARY"
+            },
+            "event": "LayoutChanged"
+        },
+        "isAutoRotation": {
+            "name": "Is Auto Rotation",
+            "control": {
+                "type": "label",
+                "value": false
+            }
+        }
+    },
+    "CPU": {
+        "load": {
+            "name": "Load",
+            "control": {
+                "type": "number",
+                "value": 0.1
+            },
+            "event": "CpuLoadChanged",
+            "callback": function (setting) {
+                if (setting > 1) setting = 1;
+                if (setting < 0) setting = 0;
+                event.trigger("CpuLoadChanged", [setting]);
+            }
+        }
+    },
+    "STORAGE": {
+        "type": {
+            "name": "Type",
+            "control": {
+                "type": "select",
+                "value": StorageTypeTable["INTERNAL"]
+            },
+            "options": (function () {
+                var optionList = {};
+                utils.forEach(StorageTypeTable, function (key, value) {
+                    optionList[key] = StorageTypeTable[value];
+                });
+
+                return optionList;
+            }())
+        },
+        "capacity": {
+            "name": "Capacity(bytes)",
+            "control": {
+                "type": "label",
+                "value": 16000000000
+            }
+        },
+        "availableCapacity": {
+            "name": "AvailableCapacity(bytes)",
+            "control": {
+                "type": "number",
+                "value": 12000000000
+            },
+            "callback": function (setting) {
+                event.trigger("AvailCapacityChanged", [setting]);
+            }
+        },
+        "isRemovable": {
+            "name": "IsRemovable",
+            "control": {
+                "type": "checkbox",
+                "value": true
+            }
+        }
+    },
+    "BUILD": {
+        "model": {
+            "name": "Model",
+            "control": {
+                "type": "label",
+                "innertext": "tizen-2.2 build",
+                "value": "tizen-2.2 build"
+            }
+        },
+        "manufacturer": {
+            "name": "Manufacturer",
+            "control": {
+                "type": "label",
+                "innertext": "Tizen",
+                "value": "Tizen"
+            }
+        },
+        "buildVersion": {
+            "name": "Build Version",
+            "control": {
+                "type": "label",
+                "innertext": "TIZEN_WEB_SIMULATOR_000001",
+                "value": "TIZEN_WEB_SIMULATOR_000001"
+            }
+        }
+    },
+    "LOCALE": {
+        "language": {
+            "name": "Language",
+            "control": {
+                "type": "select",
+                "value": LocaleTable["eng_USA"]
+            },
+            "options": (function () {
+                var optionList = {};
+                utils.forEach(LocaleTable, function (key, value) {
+                    optionList[key] = LocaleTable[value];
+                });
+
+                return optionList;
+            }())
+        },
+        "country": {
+            "name": "Country",
+            "control": {
+                "type": "select",
+                "value": LocaleTable["eng_USA"]
+            },
+            "options": (function () {
+                var optionList = {};
+                utils.forEach(LocaleTable, function (key, value) {
+                    optionList[key] = LocaleTable[value];
+                });
+
+                return optionList;
+            }())
+        }
+    },
+    "DISPLAY": {
+        "resolutionWidth": {
+            "name": "Resolution Width(pixels)",
+            "control": {
+                "type": "label",
+                "value": 0
+            }
+        },
+        "resolutionHeight": {
+            "name": "Resolution Height(pixels)",
+            "control": {
+                "type": "label",
+                "value": 0
+            }
+        },
+        "dotsPerInchWidth": {
+            "name": "DPI-X",
+            "control": {
+                "type": "label",
+                "value": 0
+            }
+        },
+        "dotsPerInchHeight": {
+            "name": "DPI-Y",
+            "control": {
+                "type": "label",
+                "value": 0
+            }
+        },
+        "physicalWidth": {
+            "name": "Physical Width(millimeters)",
+            "control": {
+                "type": "label",
+                "value": 0
+            }
+        },
+        "physicalHeight": {
+            "name": "Physical Height(millimeters)",
+            "control": {
+                "type": "label",
+                "value": 0
+            }
+        },
+        "brightness": {
+            "name": "Brightness",
+            "control": {
+                "type": "number",
+                "value": 1
+            },
+            "event": "DisplayBrightnessChanged",
+            "callback": function (setting) {
+                if (setting > 1) setting = 1;
+                if (setting < 0) setting = 0;
+                event.trigger("DisplayBrightnessChanged", [setting]);
+            }
+        }
+    },
+    "NETWORK": {
+        "networkType": {
+            "name": "Network Type",
+            "control" : {
+                "type": "select",
+                "value": NetworkTypeTable["NONE"]
+            },
+            "options": (function () {
+                var optionList = {};
+                utils.forEach(NetworkTypeTable, function (key, value) {
+                    optionList[key] = NetworkTypeTable[value];
+                });
+
+                return optionList;
+            }())
+        }
+    },
+    "WIFI_NETWORK": {
+        "status": {
+            "name": "Status",
+            "control": {
+                "type": "checkbox",
+                "value": false
+            },
+            "event": "WiFiNetworkStatusChanged",
+            "callback": function (setting) {
+                event.trigger("WiFiNetworkStatusChanged", [setting]);
+            }
+        },
+        "ssid": {
+            "name": "SSID",
+            "control": {
+                "type": "text",
+                "value": "Tizen WiFi"
+            }
+        },
+        "ipAddress": {
+            "name": "IP Address",
+            "control": {
+                "type": "text",
+                "value": "192.168.0.1"
+            }
+        },
+        "ipv6Address": {
+            "name": "IPv6 Address",
+            "control": {
+                "type": "text",
+                "value": "2001:db8:85a3:0:0:0:70:7334"
+            }
+        },
+        "signalStrength": {
+            "name": "Signal Strength",
+            "control": {
+                "type": "select",
+                "value": 0
+            },
+            "options": (function () {
+                var i,
+                    optionList = {};
+
+                for (i = 0; i <= 10; i++) {
+                    optionList[i] = i;
+                }
+
+                return optionList;
+            }())
+        }
+    },
+    "CELLULAR_NETWORK": {
+        "status": {
+            "name": "Status",
+            "control": {
+                "type": "checkbox",
+                "value": true
+            },
+            "event": "CellularNetworkStatusChanged",
+            "callback": function (setting) {
+                event.trigger("CellularNetworkStatusChanged", [setting]);
+            }
+        },
+        "apn": {
+            "name": "APN",
+            "control": {
+                "type": "text",
+                "value": "Tizen"
+            }
+        },
+        "ipAddress": {
+            "name": "IP Address",
+            "control": {
+                "type": "text",
+                "value": "10.0.2.16"
+            }
+        },
+        "ipv6Address": {
+            "name": "IPv6 Address",
+            "control": {
+                "type": "text",
+                "value": "2001:db8:85a3:0:0:0:70:7334"
+            }
+        },
+        "mcc": {
+            "name": "MCC",
+            "control": {
+                "type": "number",
+                "value": 460
+            }
+        },
+        "mnc": {
+            "name": "MNC",
+            "control": {
+                "type": "number",
+                "value": 0
+            }
+        },
+        "cellId": {
+            "name": "Cell ID",
+            "control": {
+                "type": "number",
+                "value": 0
+            }
+        },
+        "lac": {
+            "name": "LAC",
+            "control": {
+                "type": "number",
+                "value": 0
+            }
+        },
+        "isRoaming": {
+            "name": "Roaming",
+            "control": {
+                "type": "checkbox",
+                "value": true
+            }
+        },
+        "isFlightMode": {
+            "name": "Flight Mode",
+            "control": {
+                "type": "checkbox",
+                "value": false
+            },
+            "callback": function (setting) {
+                event.trigger("FlightModeChanged", [setting]);
+            }
+        },
+        "imei": {
+            "name": "IMEI",
+            "control": {
+                "type": "text",
+                "value": "012417005203000"
+            }
+        }
+    },
+    "SIM": {
+        "state": {
+            "name": "State",
+            "control": {
+                "type": "select",
+                "value": SimStateTable["READY"]
+            },
+            "options": (function () {
+                var optionList = {};
+                utils.forEach(SimStateTable, function (key, value) {
+                    optionList[key] = SimStateTable[value];
+                });
+
+                return optionList;
+            }())
+        },
+        "operatorName": {
+            "name": "Operator Name",
+            "control": {
+                "type": "text",
+                "value": "Tizen"
+            }
+        },
+        "msisdn": {
+            "name": "MSISDN",
+            "control": {
+                "type": "text",
+                "value": "088123456789"
+            }
+        },
+        "iccid": {
+            "name": "ICCID",
+            "control": {
+                "type": "text",
+                "value": "123000MFSSYYGXXXXXXP"
+            }
+        },
+        "mcc": {
+            "name": "MCC",
+            "control": {
+                "type": "number",
+                "value": 460
+            }
+        },
+        "mnc": {
+            "name": "MNC",
+            "control": {
+                "type": "number",
+                "value": 0
+            }
+        },
+        "msin": {
+            "name": "MSIN",
+            "control": {
+                "type": "text",
+                "value": "H1 H2 H3 S 12345"
+            }
+        },
+        "spn": {
+            "name": "SPN",
+            "control": {
+                "type": "text",
+                "value": "TizenSPN"
+            }
+        }
+    },
+    "PERIPHERAL": {
+        "isVideoOutputOn": {
+            "name": "Video Output",
+            "control": {
+                "type": "checkbox",
+                "value": false
+            }
+        }
+    }
+};
+
+});
+define('ripple/platform/tv/1.0/spec/sensor', function (require, exports, module) {
+/*
+ *  Copyright 2012 Intel Corporation.
+ *
+ * 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.
+ */
+var event = require('ripple/event');
+
+function sensorStatusEventTrigger(setting) {
+    event.trigger("SensorStatusChanged", [setting]);
+}
+
+module.exports = {
+    "Accelerometer": {
+        "resolution": 0.039239998906850815,
+        "minDelay": 20,
+        "range": 20.051639556884766,
+        "name": "Accelerometer",
+        "type": "Accelerometer"
+    },
+    "MagneticField": {
+        "x": {
+            "name": "X",
+            "control": {
+                "type": "range",
+                "value": 100.0000000000000000,
+                "min": 0.0000000000000000,
+                "max": 200.0000000000000000,
+                "step": 0.0000000000000001
+            },
+            "callback": function (setting) {
+                event.trigger("MagneticField-xChanged", [setting]);
+            }
+        },
+
+        "y": {
+            "name": "Y",
+            "control": {
+                "type": "range",
+                "value": 100.0000000000000000,
+                "min": 0.0000000000000000,
+                "max": 200.0000000000000000,
+                "step": 0.0000000000000001
+            },
+            "callback": function (setting) {
+                event.trigger("MagneticField-yChanged", [setting]);
+            }
+        },
+
+        "z": {
+            "name": "Z",
+            "control": {
+                "type": "range",
+                "value": 100.0000000000000000,
+                "min": 0.0000000000000000,
+                "max": 200.0000000000000000,
+                "step": 0.0000000000000001
+            },
+            "callback": function (setting) {
+                event.trigger("MagneticField-zChanged", [setting]);
+            }
+        },
+
+        "resolution": 1,
+        "minDelay": 20,
+        "range": 359,
+        "name": "MagneticField",
+        "type": "MagneticField"
+    },
+    "Rotation": {
+        "resolution": 1,
+        "minDelay": 20,
+        "range": 359,
+        "name": "Rotation",
+        "type": "Rotation"
+    },
+    "Orientation": {
+        "resolution": 1,
+        "minDelay": 20,
+        "range": 359,
+        "name": "Orientation",
+        "type": "Orientation"
+    }
+};
+
+});
+define('ripple/platform/tv/1.0/spec/ui', function (require, exports, module) {
+/*
+ *  Copyright 2014 Intel Corporation.
+ *
+ * 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.
+ */
+module.exports = {
+    plugins: [
+        "sensors",
+        "communication",
+        "geoView",
+        "widgetConfig",
+        "deviceSettings",
+        "application",
+        "network",
+        "power",
+        "download",
+        "notifications",
+        "package",
+        "messagePort",
+        "secureElement"
+    ]
+};
+
+});
+define('ripple/platform/tv/1.0/spec', function (require, exports, module) {
+/*
+ *  Copyright 2014 Intel Corporation.
+ *
+ * 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.
+ */
+
+module.exports = {
+
+    id: "tv",
+    version: "1.0",
+    name: "TV",
+
+    persistencePrefix: "tv2-",
+
+    config: require('ripple/platform/tv/1.0/spec/config'),
+    ui: require('ripple/platform/tv/1.0/spec/ui'),
+    device: require('ripple/platform/tv/1.0/spec/device'),
+    sensor: require('ripple/platform/tv/1.0/spec/sensor'),
+    DeviceMotionEvent: require('ripple/platform/tizen/2.0/DeviceMotionEvent'),
+    DeviceOrientationEvent: require('ripple/platform/tizen/2.0/DeviceOrientationEvent'),
+
+    objects: {
+        Coordinates: {
+            path: "w3c/1.0/Coordinates"
+        },
+        Position: {
+            path: "w3c/1.0/Position"
+        },
+        PositionError: {
+            path: "w3c/1.0/PositionError"
+        },
+        SensorConnection: {
+            path: "w3c/1.0/SensorConnection"
+        },
+        navigator: {
+            path: "tizen/2.0/navigator",
+            children: {
+                geolocation: {
+                    path: "wac/2.0/geolocation"
+                },
+                battery: {
+                    path: "tizen/2.0/battery"
+                }
+            }
+        },
+        tizen: {
+            feature: "http://tizen.org/privilege/tizen",
+            children: {
+                AlarmAbsolute: {
+                    path: "tizen/2.0/AlarmAbsolute"
+                },
+                AlarmRelative: {
+                    path: "tizen/2.0/AlarmRelative"
+                },
+                ApplicationControl: {
+                    path: "tizen/2.0/ApplicationControl"
+                },
+                ApplicationControlData: {
+                    path: "tizen/2.0/ApplicationControlData"
+                },
+                AttributeFilter: {
+                    path: "tizen/2.0/AttributeFilter"
+                },
+                AttributeRangeFilter: {
+                    path: "tizen/2.0/AttributeRangeFilter"
+                },
+                BookmarkFolder: {
+                    path: "tizen/2.0/BookmarkFolder"
+                },
+                BookmarkItem: {
+                    path: "tizen/2.0/BookmarkItem"
+                },
+                CalendarAlarm: {
+                    path: "tizen/2.0/CalendarAlarm"
+                },
+                CalendarAttendee: {
+                    path: "tizen/2.0/CalendarAttendee"
+                },
+                CalendarEvent: {
+                    path: "tizen/2.0/CalendarEvent"
+                },
+                CalendarEventId: {
+                    path: "tizen/2.0/CalendarEventId"
+                },
+                CalendarRecurrenceRule: {
+                    path: "tizen/2.0/CalendarRecurrenceRule"
+                },
+                CalendarTask: {
+                    path: "tizen/2.0/CalendarTask"
+                },
+                CompositeFilter: {
+                    path: "tizen/2.0/CompositeFilter"
+                },
+                Contact: {
+                    path: "tizen/2.0/ContactBase"
+                },
+                ContactAddress: {
+                    path: "tizen/2.0/ContactAddress"
+                },
+                ContactAnniversary: {
+                    path: "tizen/2.0/ContactAnniversary"
+                },
+                ContactEmailAddress: {
+                    path: "tizen/2.0/ContactEmailAddress"
+                },
+                ContactGroup: {
+                    path: "tizen/2.0/ContactGroup"
+                },
+                ContactName: {
+                    path: "tizen/2.0/ContactName"
+                },
+                ContactOrganization: {
+                    path: "tizen/2.0/ContactOrganization"
+                },
+                ContactPhoneNumber: {
+                    path: "tizen/2.0/ContactPhoneNumber"
+                },
+                ContactRef: {
+                    path: "tizen/2.0/ContactRef"
+                },
+                ContactWebSite: {
+                    path: "tizen/2.0/ContactWebSite"
+                },
+                DownloadRequest: {
+                    path: "tizen/2.0/DownloadRequest"
+                },
+                Message: {
+                    path: "tizen/2.0/Message"
+                },
+                NDEFMessage: {
+                    path: "tizen/2.0/NDEFMessage"
+                },
+                NDEFRecord: {
+                    path: "tizen/2.0/NDEFRecord"
+                },
+                NDEFRecordMedia: {
+                    path: "tizen/2.0/NDEFRecordMedia"
+                },
+                NDEFRecordText: {
+                    path: "tizen/2.0/NDEFRecordText"
+                },
+                NDEFRecordURI: {
+                    path: "tizen/2.0/NDEFRecordURI"
+                },
+                NotificationDetailInfo: {
+                    path: "tizen/2.0/NotificationDetailInfo"
+                },
+                SimpleCoordinates: {
+                    path: "tizen/2.0/SimpleCoordinates"
+                },
+                SortMode: {
+                    path: "tizen/2.0/SortMode"
+                },
+                StatusNotification: {
+                    path: "tizen/2.0/StatusNotification"
+                },
+                SyncInfo: {
+                    path: "tizen/2.0/SyncInfo"
+                },
+                SyncServiceInfo: {
+                    path: "tizen/2.0/SyncServiceInfo"
+                },
+                SyncProfileInfo: {
+                    path: "tizen/2.0/SyncProfileInfo"
+                },
+                TZDate: {
+                    path: "tizen/2.0/TZDate"
+                },
+                TimeDuration: {
+                    path: "tizen/2.0/TimeDuration"
+                },
+                alarm: {
+                    path: "tizen/2.0/alarm",
+                    feature: "http://tizen.org/privilege/alarm",
+                    handleSubfeatures: true
+                },
+                application: {
+                    path: "tizen/2.0/application",
+                    feature: "http://tizen.org/privilege/application.launch|http://tizen.org/privilege/appmanager.kill|http://tizen.org/privilege/appmanager.certificate",
+                    handleSubfeatures: true
+                },
+                bluetooth: {
+                    path: "tizen/2.0/bluetooth",
+                    feature: "http://tizen.org/privilege/bluetoothmanager|http://tizen.org/privilege/bluetooth.admin|http://tizen.org/privilege/bluetooth.gap|http://tizen.org/privilege/bluetooth.spp",
+                    handleSubfeatures: true
+                },
+                bookmark: {
+                    path: "tizen/2.0/bookmark",
+                    feature: "http://tizen.org/privilege/bookmark.read|http://tizen.org/privilege/bookmark.write",
+                    handleSubfeatures: true
+                },
+                callhistory: {
+                    path: "tizen/2.0/callHistory",
+                    feature: "http://tizen.org/privilege/callhistory|http://tizen.org/privilege/callhistory.read|http://tizen.org/privilege/callhistory.write",
+                    handleSubfeatures: true
+                },
+                calendar: {
+                    path: "tizen/2.0/calendar",
+                    feature: "http://tizen.org/privilege/calendar.read|http://tizen.org/privilege/calendar.write",
+                    handleSubfeatures: true
+                },
+                contact: {
+                    path: "tizen/2.0/contact",
+                    feature: "http://tizen.org/privilege/contact.read|http://tizen.org/privilege/contact.write",
+                    handleSubfeatures: true
+                },
+                content: {
+                    path: "tizen/2.0/content",
+                    feature: "http://tizen.org/privilege/content.read|http://tizen.org/privilege/content.write",
+                    handleSubfeatures: true
+                },
+                datacontrol: {
+                    path: "tizen/2.0/datacontrol",
+                    feature: "http://tizen.org/privilege/datacontrol.consumer",
+                    handleSubfeatures: true
+                },
+                datasync: {
+                    path: "tizen/2.0/datasync",
+                    feature: "http://tizen.org/privilege/datasync",
+                    handleSubfeatures: true
+                },
+                download: {
+                    path: "tizen/2.0/download",
+                    feature: "http://tizen.org/privilege/download",
+                    handleSubfeatures: true
+                },
+                filesystem: {
+                    path: "tizen/2.0/filesystem",
+                    feature: "http://tizen.org/privilege/filesystem.read|http://tizen.org/privilege/filesystem.write"
+                },
+                messageport: {
+                    path: "tizen/2.0/messageport"
+                },
+                messaging: {
+                    path: "tizen/2.0/messaging",
+                    feature: "http://tizen.org/privilege/messaging.send|http://tizen.org/privilege/messaging.read|http://tizen.org/privilege/messaging.write",
+                    handleSubfeatures: true
+                },
+                networkbearerselection: {
+                    path: "tizen/2.0/networkbearerselection",
+                    feature: "http://tizen.org/privilege/networkbearerselection",
+                    handleSubfeatures: true
+                },
+                nfc: {
+                    path: "tizen/2.0/nfc",
+                    feature: "http://tizen.org/privilege/nfc.common|http://tizen.org/privilege/nfc.admin|http://tizen.org/privilege/nfc.tag|http://tizen.org/privilege/nfc.p2p",
+                    handleSubfeatures: true
+                },
+                notification: {
+                    path: "tizen/2.0/notification",
+                    feature: "http://tizen.org/privilege/notification",
+                    handleSubfeatures: true
+                },
+                package: {
+                    path: "tizen/2.0/package",
+                    feature: "http://tizen.org/privilege/packagemanager.install|http://tizen.org/privilege/package.info",
+                    handleSubfeatures: true
+                },
+                power: {
+                    path: "tizen/2.0/power",
+                    feature: "http://tizen.org/privilege/power",
+                    handleSubfeatures: true
+                },
+                push: {
+                    path: "tizen/2.0/push",
+                    feature: "http://tizen.org/privilege/push",
+                    handleSubfeatures: true
+                },
+                seService: {
+                    path: "tizen/2.0/secureelement",
+                    feature: "http://tizen.org/privilege/secureelement",
+                    handleSubfeatures: true
+                },
+                systeminfo: {
+                    path: "tizen/2.0/systeminfo",
+                    feature: "http://tizen.org/privilege/system|http://tizen.org/privilege/systemmanager",
+                    handleSubfeatures: true
+                },
+                systemsetting: {
+                    path: "tizen/2.0/systemsetting",
+                    feature: "http://tizen.org/privilege/setting",
+                    handleSubfeatures: true
+                },
+                time: {
+                    path: "tizen/2.0/time",
+                    feature: "http://tizen.org/privilege/time",
+                    handleSubfeatures: true
+                },
+                websetting: {
+                    path: "tizen/2.0/websetting",
+                    feature: "http://tizen.org/privilege/websetting",
+                    handleSubfeatures: true
+                }
+            }
+        }
+    }
+};
+
+});
+define('ripple/platform/tv/1.0/typecast', function (require, exports, module) {
+/*
+ *  Copyright 2014 Intel Corporation.
+ *
+ * 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.
+ */
+
+var typedef = require('ripple/platform/tv/1.0/typedef'),
+    errorcode = require('ripple/platform/tv/1.0/errorcode'),
+    WebAPIException = require('ripple/platform/tv/1.0/WebAPIException'),
+    TypeCoerce = require('ripple/platform/tv/1.0/typecoerce'),
+    _self = {};
+
+function _cast(pattern, obj, isDuplicate) {
+    var tc, tcFunc;
+
+    if (pattern === null)
+        return;
+
+    tc = new TypeCoerce(pattern);
+    tcFunc = isDuplicate ? tc.copy : tc.cast;
+
+    if ((obj = tcFunc(obj)) === null) {
+        throw new WebAPIException(errorcode.TYPE_MISMATCH_ERR);
+    }
+
+    return obj;
+}
+
+function _castType(pattern) {
+    /*
+     * Type cast for each known type. The function name is the exact name of the
+     * corresponding type.
+     *
+     * obj
+     *    Variable to be casted
+     *
+     * aux
+     *    Auxiliary descriptor of obj. It can be any one or combination of below
+     *    strings, or ignored in most cases.
+     *
+     *    "?"     Nullable types
+     *    "[]"    Array
+     *    "+"     Deep copy
+     *
+     * Return
+     *    Casted or duplicated object.
+     */
+
+    return function (obj, aux) {
+        var type, isNullable, isDuplicate;
+
+        aux = aux ? String(aux) : "";
+        type = (aux.indexOf("[]") !== -1) ? [pattern] : pattern;
+        isNullable = (aux.indexOf("?") !== -1);
+        isDuplicate = (aux.indexOf("+") !== -1);
+
+        if (isNullable && ((obj === null) || (obj === undefined))) {
+            return obj;
+        }
+
+        return _cast(type, obj, isDuplicate);
+    };
+}
+
+function _castConstructor(name) {
+    var constructors, hook, vtc, isOverloaded, castConstructor;
+
+    /*
+     * Type cast for constructor. The function name is the exact name of the
+     * object type.
+     *
+     * argv
+     *    arguments. The keyword 'arguments' will always be passed in.
+     */
+
+    function castUnique(argv) {
+        _cast(constructors, argv, false);
+    }
+
+    /*
+     * Type cast for overloaded constructors. The function name is the exact
+     * name of the object type.
+     *
+     * argv
+     *    arguments. The keyword 'arguments' will always be passed in.
+     *
+     * scope
+     *    'this' of the original constructor.
+     *
+     * voc
+     *    Array of overloaded constructors callback
+     */
+
+    function castOverload(argv, scope, voc) {
+        var iOverload;
+
+        if (!vtc) {
+            vtc = [];
+            constructors.forEach(function (c) {
+                vtc.push((c === null) ? null : new TypeCoerce(c));
+            });
+        }
+
+        vtc.some(function (tc, index) {
+            if (tc && (tc.cast(argv) === null))
+                return false;
+
+            iOverload = index;
+            return true;
+        });
+
+        if (iOverload === undefined) {
+            throw new WebAPIException(errorcode.TYPE_MISMATCH_ERR);
+        }
+
+        return (voc && voc[iOverload].apply(scope, argv));
+    }
+
+    constructors = typedef.constructor[name];
+
+    if (name in _self) {
+        hook = _self[name];
+    }
+
+    isOverloaded = (Object.prototype.toString.call(constructors) ===
+            "[object Array]");
+    castConstructor = isOverloaded ? castOverload : castUnique;
+
+    return function (argv, scope) {
+        if (Object.prototype.toString.call(argv) !== "[object Arguments]") {
+            return (hook && hook.apply(this, arguments));
+        }
+
+        if (!(scope instanceof argv.callee)) {
+            throw new WebAPIException(errorcode.TYPE_MISMATCH_ERR, null, "TypeError");
+        }
+
+        castConstructor.apply(this, arguments);
+    };
+}
+
+function _castInterface(name) {
+    var interface, hook;
+
+    interface = typedef.interface[name];
+
+    if (name in _self) {
+        hook = _self[name];
+    }
+
+    /*
+     * Type cast for each known method of interface. The function name is the
+     * exact name of the corresponding interface.
+     *
+     * method
+     *    String of method name
+     *
+     * argv
+     *    arguments. The keyword 'arguments' will always be passed in.
+     *
+     * isDuplicate
+     *    A boolean value to indicate whether arguments will be copied or not.
+     */
+
+    return function (method, argv, isDuplicate) {
+        if ((typeof method !== "string") || (typeof argv !== "object")) {
+            return (hook && hook.apply(this, arguments));
+        }
+
+        _cast(interface[method], argv, isDuplicate);
+    };
+}
+
+(function () {
+    var i;
+
+    for (i in typedef) {
+        _self[i] = _castType(typedef[i]);
+    }
+
+    for (i in typedef.constructor) {
+        _self[i] = _castConstructor(i);
+        typedef[i]._constructor = i;
+    }
+
+    for (i in typedef.interface) {
+        _self[i] = _castInterface(i);
+    }
+}());
+
+module.exports = _self;
+
+});
+define('ripple/platform/tv/1.0/typecoerce', function (require, exports, module) {
+/*
+ *  Copyright 2014 Intel Corporation.
+ *
+ * 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.
+ */
+
+var t = require('ripple/platform/tv/1.0/typedef'),
+    _MAX_INT_BITS = 53,
+    _MAX_INT = Math.pow(2, _MAX_INT_BITS) - 1,
+    _self;
+
+_self = function (pattern) {
+    var typeCoerce, typeOfPattern;
+
+    // private
+    function getExtendedType(val) {
+        var type = Object.prototype.toString.call(val), attr;
+
+        switch (type) {
+        case "[object Array]":
+            if ((typeof val[0] === "string") && (val[0].length > 0)) {
+                type = "enum";
+            } else {
+                type = "Union";
+            }
+            return type;
+
+        case "[object Object]":
+            if ("_dictionary" in val) {
+                return "dictionary";
+            }
+
+            type = "Object";
+
+            for (attr in val) {
+                if (attr === "0") {
+                    type = "Arguments";
+                } else if (val[attr] === "Callback") {
+                    type = "Callback";
+                }
+                break;
+            }
+
+            return type;
+        }
+
+        switch (val) {
+        case "Callback":
+            type = "Function";
+            break;
+
+        case "TZDate":
+        case "any":
+        case "byte":
+        case "float":
+        case "long":
+        case "long long":
+        case "octet":
+        case "short":
+        case "unsigned long":
+        case "unsigned long long":
+        case "unsigned short":
+            type = val;
+            break;
+
+        case "double":
+            type = "float";
+            break;
+
+        default:    // Derivative type name: e.g., "AbstractFilter"
+            type = "";
+            break;
+        }
+
+        return type;
+    }
+
+    function getType(val, isPattern) {
+        var type = Object.prototype.toString.call(val);
+
+        switch (type) {
+        case "[object Array]":
+            type = (isPattern && (val.length > 1)) ? getExtendedType(val) :
+                    "Array";
+            break;
+
+        case "[object Arguments]":
+            type = "Arguments";
+            break;
+
+        case "[object Boolean]":
+            type = "boolean";
+            break;
+
+        case "[object Date]":
+            type = "Date";
+            break;
+
+        case "[object Function]":
+            type = "Function";
+            break;
+
+        case "[object Number]":
+            type = "Number";
+            break;
+
+        case "[object Object]":
+            type = isPattern ? getExtendedType(val) : "Object";
+            break;
+
+        case "[object String]":
+            type = (isPattern && !!val) ? getExtendedType(val) : "DOMString";
+            break;
+        }
+
+        return type;
+    }
+
+    function isConstructed(obj) {
+        if (!("_constructor" in pattern))
+            return true;
+
+        if (obj instanceof window.tizen[pattern._constructor])
+            return true;
+
+        if ("_derived" in pattern)
+            return true;
+
+        return false;
+    }
+
+    function toInteger(x) {
+        return (x < 0) ? Math.ceil(x) : Math.floor(x);
+    }
+
+    function isBitsOverflowed(bits) {
+        return (bits >= _MAX_INT_BITS);
+    }
+
+    function toJsInt(x, isUnsigned) {
+        var min, max;
+
+        min = isUnsigned ? 0 : -_MAX_INT;
+        max = _MAX_INT;
+
+        if ((x < min) || (x > max))
+            return null;
+
+        return toInteger(x);
+    }
+
+    function modulo(a, b) {
+        return (a - Math.floor(a / b) * b);
+    }
+
+    function toInt(x, bits) {
+        var p;
+
+        x = Number(x);
+
+        if (isNaN(x) || !isFinite(x))
+            return null;
+
+        if (isBitsOverflowed(bits))
+            return toJsInt(x, false);
+
+        p = Math.pow(2, bits);
+        x = modulo(toInteger(x), p);
+
+        return (x >= Math.pow(2, bits - 1)) ? (x - p) : x;
+    }
+
+    function toUInt(x, bits) {
+        x = Number(x);
+
+        if (isNaN(x) || !isFinite(x))
+            return null;
+
+        if (isBitsOverflowed(bits))
+            return toJsInt(x, true);
+
+        return modulo(toInteger(x), Math.pow(2, bits));
+    }
+
+    function toInt8(x) {
+        return toInt(x, 8);
+    }
+
+    function toInt16(x) {
+        return toInt(x, 16);
+    }
+
+    function toInt32(x) {
+        return toInt(x, 32);
+    }
+
+    function toInt64(x) {
+        return toInt(x, 64);
+    }
+
+    function toUInt8(x) {
+        return toUInt(x, 8);
+    }
+
+    function toUInt16(x) {
+        return toUInt(x, 16);
+    }
+
+    function toUInt32(x) {
+        return toUInt(x, 32);
+    }
+
+    function toUInt64(x) {
+        return toUInt(x, 64);
+    }
+
+    // public
+    function cast(obj) {
+        var typeMap,
+            typeOfObj = getType(obj, false);
+
+        typeMap = {
+            "Arguments": function () {
+                var i, isNullable, ret;
+
+                for (i in pattern) {
+                    if (i === "_optional")
+                        continue;
+
+                    isNullable = !!(pattern._optional && pattern._optional[i]);
+
+                    if (i > obj.length - 1) {
+                        if (!isNullable) {
+                            return null;
+                        }
+                        break;
+                    }
+
+                    if (!isNullable || (obj[i] !== null)) {
+                        ret = _self(pattern[i]).cast(obj[i]);
+                        if (ret === null) {
+                            return null;
+                        }
+                        obj[i] = ret;
+                    }
+                }
+
+                return obj;
+            },
+
+            "Array": function () {
+                var elementType, i, ret;
+
+                if (typeOfObj !== typeOfPattern) {
+                    return null;
+                }
+
+                elementType = _self(pattern[0]);
+                for (i in obj) {
+                    ret = elementType.cast(obj[i]);
+                    if (ret === null) {
+                        return null;
+                    }
+                    obj[i] = ret;
+                }
+
+                return obj;
+            },
+
+            "Callback": function () {
+                var attr;
+
+                if (typeOfObj !== "Object") {
+                    return null;
+                }
+
+                for (attr in pattern) {
+                    if (attr in obj) {
+                        obj[attr] = _self(pattern[attr]).cast(obj[attr]);
+                        if (obj[attr] === null) {
+                            return null;
+                        }
+                    }
+                }
+
+                return obj;
+            },
+
+            "DOMString": function () {
+                switch (typeOfObj) {
+                case "DOMString":
+                case "Date":
+                case "Number":
+                case "boolean":
+                    obj = String(obj);
+                    break;
+
+                default:
+                    if ((obj === null) || (obj === undefined)) {
+                        obj = String(obj);
+                    } else {
+                        obj = null;
+                    }
+                    break;
+                }
+
+                return obj;
+            },
+
+            "Date": function () {
+                return (typeOfObj === typeOfPattern) ? obj : null;
+            },
+
+            "Function": function () {
+                return (typeOfObj === typeOfPattern) ? obj : null;
+            },
+
+            "Object": function () {
+                var ret, attr, i;
+
+                if (typeOfObj !== typeOfPattern) {
+                    if ((obj === null) || (obj === undefined)) {
+                        return null;
+                    }
+                    if (!("_derived" in pattern)) {
+                        return null;
+                    }
+                }
+
+                if (!isConstructed(obj)) {
+                    return null;
+                }
+
+                for (attr in pattern) {
+                    switch (attr) {
+                    case "_optional":
+                    case "_constructor":
+                        break;
+
+                    case "_derived":
+                        for (i in pattern._derived) {
+                            ret = _self(pattern._derived[i]).cast(obj);
+                            if (ret !== null)
+                                break;
+                        }
+                        if (ret === null) {
+                            if ("_constructor" in pattern)
+                                break;
+
+                            return null;
+                        }
+                        break;
+
+                    default:
+                        if (!pattern._optional || !pattern._optional[attr] ||
+                                (obj[attr] !== undefined) &&
+                                (obj[attr] !== null)) {
+                            ret = _self(pattern[attr]).cast(obj[attr]);
+                            if (ret === null) {
+                                return null;
+                            }
+                            obj[attr] = ret;
+                        }
+                        break;
+                    }
+                }
+
+                return obj;
+            },
+
+            "TZDate": function () {
+                if (typeOfObj !== "Object") {
+                    return null;
+                }
+                return (obj instanceof window.tizen.TZDate) ? obj : null;
+            },
+
+            "Union": function () {
+                var ret, i;
+
+                for (i in pattern) {
+                    ret = _self(pattern[i]).cast(obj);
+                    if (ret !== null)
+                        break;
+                }
+
+                return ret;
+            },
+
+            "any": function () {
+                return obj;
+            },
+
+            "boolean": function () {
+                return (typeOfObj === typeOfPattern) ? obj : null;
+            },
+
+            "byte": function () {
+                return toInt8(obj);
+            },
+
+            "dictionary": function () {
+                var attr, ret;
+
+                if (typeOfObj !== "Object") {
+                    return null;
+                }
+
+                for (attr in pattern) {
+                    switch (attr) {
+                    case "_dictionary":
+                        if (pattern._dictionary !== null) {
+                            ret = _self(pattern._dictionary).cast(obj);
+                            if (ret === null) {
+                                return null;
+                            }
+                        }
+                        break;
+
+                    default:
+                        if ((attr in obj) && (obj[attr] !== null) &&
+                                (obj[attr] !== undefined)) {
+                            ret = _self(pattern[attr]).cast(obj[attr]);
+                            if (ret === null) {
+                                return null;
+                            }
+                            obj[attr] = ret;
+                        }
+                        break;
+                    }
+                }
+
+                return obj;
+            },
+
+            "enum": function () {
+                var i;
+
+                obj = String(obj).trim();
+                for (i in pattern) {
+                    if (obj === pattern[i]) {
+                        return obj;
+                    }
+                }
+
+                return null;
+            },
+
+            "float": function () {
+                var f = parseFloat(obj, 10);
+
+                return (isNaN(f) ? null : f);
+            },
+
+            "long": function () {
+                return toInt32(obj);
+            },
+
+            "long long": function () {
+                return toInt64(obj);
+            },
+
+            "octet": function () {
+                return toUInt8(obj);
+            },
+
+            "short": function () {
+                return toInt16(obj);
+            },
+
+            "unsigned long": function () {
+                return toUInt32(obj);
+            },
+
+            "unsigned long long": function () {
+                return toUInt64(obj);
+            },
+
+            "unsigned short": function () {
+                return toUInt16(obj);
+            },
+
+            "": function () {
+                return _self(t[pattern]).cast(obj);
+            }
+        };
+
+        return typeMap[typeOfPattern]();
+    }
+
+    function copy(obj) {
+        var typeMap,
+            typeOfObj = getType(obj, false);
+
+        typeMap = {
+            "Arguments": function () {
+                var i, isNullable, ret = [];
+
+                for (i in pattern) {
+                    if (i === "_optional")
+                        continue;
+
+                    isNullable = !!(pattern._optional && pattern._optional[i]);
+
+                    if (i > obj.length - 1) {
+                        if (!isNullable) {
+                            return null;
+                        }
+                        break;
+                    }
+
+                    if (!isNullable || (obj[i] !== null)) {
+                        ret[i] = _self(pattern[i]).copy(obj[i]);
+                        if (ret[i] === null) {
+                            return null;
+                        }
+                    }
+                }
+
+                for (i in ret) {
+                    obj[i] = ret[i];
+                }
+
+                return obj;
+            },
+
+            "Array": function () {
+                var arr = [], elementType, i;
+
+                if (typeOfObj !== typeOfPattern) {
+                    return null;
+                }
+
+                elementType = _self(pattern[0]);
+                for (i in obj) {
+                    if (obj[i] !== undefined) {
+                        arr[i] = elementType.copy(obj[i]);
+                        if (arr[i] === null)
+                            return null;
+                    }
+                }
+
+                return arr;
+            },
+
+            "Callback": function () {
+                var ret = {}, attr;
+
+                if (typeOfObj !== "Object") {
+                    return null;
+                }
+
+                for (attr in pattern) {
+                    if (attr in obj) {
+                        ret[attr] = _self(pattern[attr]).copy(obj[attr]);
+                        if (ret[attr] === null) {
+                            return null;
+                        }
+                    }
+                }
+
+                return ret;
+            },
+
+            "Object": function () {
+                var ret = {}, attr, i, derived;
+
+                if (typeOfObj !== typeOfPattern) {
+                    if ((obj === null) || (obj === undefined)) {
+                        return null;
+                    }
+                    if (!("_derived" in pattern)) {
+                        return null;
+                    }
+                }
+
+                if (!isConstructed(obj)) {
+                    return null;
+                }
+                if ("_constructor" in pattern) {
+                    ret.__proto__ = window.tizen[pattern._constructor].prototype;
+                }
+
+                for (attr in pattern) {
+                    switch (attr) {
+                    case "_optional":
+                    case "_constructor":
+                        break;
+
+                    case "_derived":
+                        for (i in pattern._derived) {
+                            derived = _self(pattern._derived[i]).copy(obj);
+                            if (derived !== null)
+                                break;
+                        }
+                        if (derived === null) {
+                            if ("_constructor" in pattern)
+                                break;
+
+                            return null;
+                        }
+                        for (attr in derived) {
+                            ret[attr] = derived[attr];
+                        }
+                        break;
+
+                    default:
+                        if (!pattern._optional || !pattern._optional[attr] ||
+                                (obj[attr] !== undefined) &&
+                                (obj[attr] !== null)) {
+                            ret[attr] = _self(pattern[attr]).copy(obj[attr]);
+                            if (ret[attr] === null) {
+                                return null;
+                            }
+                        }
+                        break;
+                    }
+                }
+
+                return ret;
+            },
+
+            "Union": function () {
+                var ret, i;
+
+                for (i in pattern) {
+                    ret = _self(pattern[i]).copy(obj);
+                    if (ret !== null)
+                        break;
+                }
+
+                return ret;
+            },
+
+            "dictionary": function () {
+                var ret = {}, attr, base, i;
+
+                if (typeOfObj !== "Object") {
+                    return null;
+                }
+
+                for (attr in pattern) {
+                    switch (attr) {
+                    case "_dictionary":
+                        if (pattern._dictionary !== null) {
+                            base = _self(pattern._dictionary).copy(obj);
+                            if (base === null) {
+                                return null;
+                            }
+                            for (i in base) {
+                                ret[i] = base[i];
+                            }
+                        }
+                        break;
+
+                    default:
+                        if ((attr in obj) && (obj[attr] !== null) &&
+                                (obj[attr] !== undefined)) {
+                            ret[attr] = _self(pattern[attr]).copy(obj[attr]);
+                            if (ret[attr] === null) {
+                                return null;
+                            }
+                        }
+                        break;
+                    }
+                }
+
+                return ret;
+            },
+
+            "": function () {
+                return _self(t[pattern]).copy(obj);
+            }
+        };
+
+        return (typeOfPattern in typeMap) ? typeMap[typeOfPattern]() :
+                cast(obj);
+    }
+
+    function match(obj) {
+        var typeMap,
+            typeOfObj = getType(obj, false);
+
+        typeMap = {
+            "Array": function () {
+                var elementType, i;
+
+                if (typeOfObj !== typeOfPattern)
+                    return false;
+
+                elementType = _self(pattern[0]);
+                for (i in obj) {
+                    if (!elementType.match(obj[i])) {
+                        return false;
+                    }
+                }
+
+                return true;
+            },
+
+            "Callback": function () {
+                var attr, isMatched = true;
+
+                if (typeOfObj !== "Object") {
+                    return false;
+                }
+
+                for (attr in pattern) {
+                    if (attr in obj) {
+                        isMatched = _self(pattern[attr]).match(obj[attr]);
+                        if (!isMatched) {
+                            break;
+                        }
+                    }
+                }
+
+                return isMatched;
+            },
+
+            "DOMString": function () {
+                return (typeOfObj === typeOfPattern);
+            },
+
+            "Date": function () {
+                return (typeOfObj === typeOfPattern);
+            },
+
+            "Function": function () {
+                return (typeOfObj === typeOfPattern);
+            },
+
+            "Object": function () {
+                var attr, isMatched = false, i;
+
+                if (typeOfObj !== typeOfPattern) {
+                    if ((obj === null) || (obj === undefined)) {
+                        return false;
+                    }
+                    if (!("_derived" in pattern)) {
+                        return false;
+                    }
+                    return false;
+                }
+
+                if (!isConstructed(obj)) {
+                    return false;
+                }
+
+                for (attr in pattern) {
+                    switch (attr) {
+                    case "_optional":
+                    case "_constructor":
+                        break;
+
+                    case "_derived":
+                        for (i in pattern._derived) {
+                            isMatched = _self(pattern._derived[i]).match(obj);
+                            if (isMatched)
+                                break;
+                        }
+                        break;
+
+                    default:
+                        if (pattern._optional && pattern._optional[attr]) {
+                            isMatched = ((obj[attr] === null) ||
+                                    (obj[attr] === undefined) ||
+                                    _self(pattern[attr]).match(obj[attr]));
+                        } else {
+                            isMatched = (obj[attr] !== undefined) &&
+                                    _self(pattern[attr]).match(obj[attr]);
+                        }
+                        break;
+                    }
+
+                    if (!isMatched)
+                        break;
+                }
+
+                /*// Check if verbose attributes are present
+                if (isMatched) {
+                    for (attr in obj) {
+                        if (pattern[attr] === undefined) {
+                            isMatched = false;
+                            break;
+                        }
+                    }
+                }*/
+
+                return isMatched;
+            },
+
+            "Union": function () {
+                var isMatched, i;
+
+                for (i in pattern) {
+                    isMatched = _self(pattern[i]).match(obj);
+                    if (isMatched)
+                        break;
+                }
+
+                return isMatched;
+            },
+
+            "any": function () {
+                return true;
+            },
+
+            "boolean": function () {
+                return (typeOfObj === typeOfPattern);
+            },
+
+            "byte": function () {
+                return (obj === toInt8(obj));
+            },
+
+            "dictionary": function () {
+                var attr, isMatched = true;
+
+                if (typeOfObj !== "Object") {
+                    return false;
+                }
+
+                for (attr in pattern) {
+                    switch (attr) {
+                    case "_dictionary":
+                        if (pattern._dictionary !== null) {
+                            isMatched = _self(pattern._dictionary).match(obj);
+                            if (!isMatched)
+                                break;
+                        }
+                        break;
+
+                    default:
+                        if ((attr in obj) && (obj[attr] !== null) &&
+                                (obj[attr] !== undefined)) {
+                            isMatched = _self(pattern[attr]).match(obj[attr]);
+                            if (!isMatched)
+                                break;
+                        }
+                        break;
+                    }
+                }
+
+                return isMatched;
+            },
+
+            "enum": function () {
+                for (var i in pattern) {
+                    if (obj === pattern[i]) {
+                        return true;
+                    }
+                }
+
+                return false;
+            },
+
+            "float": function () {
+                return (typeOfObj === "Number");
+            },
+
+            "long": function () {
+                return (obj === toInt32(obj));
+            },
+
+            "long long": function () {
+                return (obj === toInt64(obj));
+            },
+
+            "octet": function () {
+                return (obj === toUInt8(obj));
+            },
+
+            "short": function () {
+                return (obj === toInt16(obj));
+            },
+
+            "unsigned long": function () {
+                return (obj === toUInt32(obj));
+            },
+
+            "unsigned long long": function () {
+                return (obj === toUInt64(obj));
+            },
+
+            "unsigned short": function () {
+                return (obj === toUInt16(obj));
+            },
+
+            "Arguments": function () {
+                return true;
+            },
+
+            "": function () {
+                return _self(t[pattern]).match(obj);
+            }
+        };
+
+        return typeMap[typeOfPattern]();
+    }
+
+    typeOfPattern = getType(pattern, true);
+
+    typeCoerce = {
+        cast:  cast,
+        copy:  copy,
+        match: match
+    };
+
+    return typeCoerce;
+};
+
+module.exports = _self;
+
+});
+define('ripple/platform/tv/1.0/typedef', function (require, exports, module) {
+/*
+ *  Copyright 2014 Intel Corporation.
+ *
+ * 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.
+ */
+
+var _t, _c, _i;
+
+/*
+ * Primitive type definition
+ */
+
+_t = {
+    // Basic
+    Callback:                       "Callback",
+    DOMString:                      "",
+    Date:                           new Date(),
+    Function:                       function () {},
+    TZDate:                         "TZDate",
+    any:                            "any",
+    boolean:                        false,
+    byte:                           "byte",
+    double:                         "double",
+    float:                          "float",
+    long:                           "long",
+    octet:                          "octet",
+    short:                          "short",
+    long_long:                      "long long",
+    unsigned_long:                  "unsigned long",
+    unsigned_long_long:             "unsigned long long",
+    unsigned_short:                 "unsigned short"
+};
+
+/*
+ * Derivative type definition
+ */
+
+/*
+ * Object attributes
+ *     Contruct a prototype of an object. Specify a primitive type for each attribute.
+ *
+ * _optional
+ *     Optional attributes table, which consists of two types of attributes,
+ *
+ *     nullable
+ *         Nullable attributes, marked as '?' in IDL.
+ *
+ *     undefined
+ *         Array type attributes, that not definitely specified to be
+ *         initialized as an empty array, i.e., undefined-initialized array.
+ *
+ * _derived
+ *     Derived types, which used in two cases of definition,
+ *
+ *     Subtype list
+ *         An array consists of derived subtypes. It exists in the definition of
+ *         a base type.
+ *
+ *     Union types
+ *         An array consists of member types. It exists in the definition of
+ *         a union type.
+ *
+ * _dictionary
+ *     Dictionary type, which indicates that the object is a dictionary type.
+ */
+
+/*
+ * Constructor list definition
+ */
+
+/*
+ * Generic constructor
+ *     Construct a prototype of constructor. A fake array of arguments type is
+ *     specified for constructor.
+ *
+ * Overloaded constructors
+ *     Construct an array of prototype of constructor. Each array element is
+ *     specified for one of constructors. The constructor with extra arguments
+ *     are recommended to be defined ahead of the one with fewer same arguments
+ *     for exact match.
+ */
+
+_c = {};
+
+/*
+ * Interface prototype definition
+ */
+
+_i = {};
+
+// Exports
+_t.constructor = _c;
+_t.interface   = _i;
+
+module.exports = _t;
+
+});
 define('ripple/platform/w3c/1.0/Acceleration', function (require, exports, module) {
 module.exports = function (x, y, z) {
     return {
@@ -154050,17 +156526,21 @@ function _getCurrentPlatform() {
     if (uriParams && uriParams.platform) {
         var platformName = uriParams.platform.split("-")[0], platformVersion;
 
-        if (platformName === "mobile" || platformName === "tizen") {
-            platformName = "tizen";
-            platformVersion = "2.0";
+        if (platformName === "ivi") {
+            platformName = "ivi";
+            platformVersion = "3.0";
         }
         else if (platformName === "wearable") {
             platformName = "wearable";
             platformVersion = "2.0";
         }
+        else if (platformName === "tv") {
+            platformName = "tv";
+            platformVersion = "1.0";
+        }
         else {
-            platformName = "ivi";
-            platformVersion = "3.0";
+            platformName = "tizen";
+            platformVersion = "2.0";
         }
         platform.name = platformName;
         platform.version = platformVersion;
@@ -156452,17 +158932,21 @@ function _showConfigWindow() {
             }
         }
 
-        if (platformId === "mobile" || platformId === "tizen") {
-            platformId = "tizen";
-            version = "2.0";
+        if (platformId === "ivi") {
+            platformId = "ivi";
+            version = "3.0";
         }
         else if (platformId === "wearable") {
             platformId = "wearable";
             version = "2.0";
         }
+        else if (platformId === "tv") {
+            platformId = "tv";
+            version = "1.0";
+        }
         else {
-            platformId = "ivi";
-            version = "3.0";
+            platformId = "tizen";
+            version = "2.0";
         }
 
         platform.changeEnvironment({
@@ -156572,7 +159056,9 @@ function _showConfigWindow() {
         $("#overlayBackground").css("height", $(window).height());
     });
 
-    if (jQuery("#platform-select").val() === "ivi" || jQuery("#platform-select").val() === "wearable") {
+    if (jQuery("#platform-select").val() === "ivi" ||
+            jQuery("#platform-select").val() === "wearable" ||
+            jQuery("#platform-select").val() === "tv") {
         jQuery("#configuration-window-save-btn").hide();
         jQuery("#configuration-window-load-btn").hide();
 
@@ -160519,6 +163005,7 @@ module.exports = {
         tooltip.create("#history-reload", "Reload Application");
         tooltip.create("#options-button-history", "History");
         tooltip.create("#options-button-config-window", "Configuration");
+        tooltip.create("#options-button-preview-window", "Preview");
         tooltip.create("#options-button-panels", "Panel Settings");
         tooltip.create("#options-button-about", "About");
     },
@@ -161204,7 +163691,7 @@ function _updatePlatformDeviceSelect(platformID, currentDeviceKey) {
         devicesSelect.appendChild(deviceNode);
     });
 
-    if (platformID === "ivi" || platformID === "wearable") {
+    if (platformID === "ivi" || platformID === "wearable" || platformID === "tv") {
         jQuery("#configuration-window-save-btn").hide();
         jQuery("#configuration-window-load-btn").hide();
 
@@ -161651,6 +164138,361 @@ module.exports = {
 };
 
 });
+define('ripple/ui/plugins/previewWindow', function (require, exports, module) {
+/*
+ *  Copyright 2014 Intel Corporation.
+ *
+ * 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.
+ */
+
+var platform = require("ripple/platform"),
+    devices = require("ripple/devices"),
+    LIMIT_SIZE = 230, ROW_COUNT = 3, ROW_TOP = 40,
+    previewSource, deviceResolutions,
+    oldContainer, oldLeft, oldTop, oldScale,
+    previewContainer, prevLeft,
+    rowIndex, rowNum, currentRowIndex, containerArr;
+
+function getAbsoluteURI(base, relative) {
+    var stack = base.split("/"),
+        parts = relative.split("/"),
+        i;
+
+    stack.pop();
+    for (i = 0; i < parts.length; i++) {
+        if (parts[i] === ".")
+            continue;
+        if (parts[i] === "..")
+            stack.pop();
+        else
+            stack.push(parts[i]);
+    }
+
+    return stack.join("/");
+}
+
+function _readPreviewSourceHtml() {
+    var resource = document.getElementById("document"),
+        links, linkHref,
+        images, imgSrc,
+        sources, sourceSrc,
+        scripts, i, src;
+
+    previewSource = resource.contentDocument.cloneNode(true);
+    src = previewSource.documentURI;
+    links = previewSource.getElementsByTagName("link");
+    images = previewSource.getElementsByTagName("img");
+    sources = previewSource.getElementsByTagName("source");
+    scripts = previewSource.getElementsByTagName("script");
+    for (i = 0; i < links.length; i++) {
+        linkHref = links[i].getAttribute("href");
+        if (!linkHref)
+            continue;
+        if (linkHref.indexOf("file://") === 0 ||
+                linkHref.indexOf("http://") === 0)
+            continue;
+        previewSource.getElementsByTagName("link")[i].setAttribute("href",
+            getAbsoluteURI(src, linkHref));
+    }
+    for (i = 0; i < images.length; i++) {
+        imgSrc = images[i].getAttribute("src");
+        if (!imgSrc)
+            continue;
+        if (imgSrc.indexOf("file://") === 0 ||
+                imgSrc.indexOf("http://") === 0 ||
+                imgSrc.indexOf("data:") === 0)
+            continue;
+        previewSource.getElementsByTagName("img")[i].setAttribute("src",
+            getAbsoluteURI(src, imgSrc));
+    }
+    for (i = 0; i < sources.length; i++) {
+        sourceSrc = sources[i].getAttribute("src");
+        if (!sourceSrc)
+            continue;
+        if (sourceSrc.indexOf("file://") === 0 ||
+                sourceSrc.indexOf("http://") === 0)
+            continue;
+        previewSource.getElementsByTagName("source")[i].setAttribute("src",
+            getAbsoluteURI(src, sourceSrc));
+    }
+    while (scripts.length > 0) {
+        previewSource.getElementsByTagName("script")[0].remove();
+    }
+}
+
+function _createPreviewLayout(container, width, height) {
+    var frameId = container.id.replace("container", "preview"),
+        frame = document.createElement("iframe"),
+        frameContent;
+
+    container.appendChild(frame);
+    frame.setAttribute("id", frameId);
+    //frame.setAttribute("src", previewSource.documentURI);
+    frame.setAttribute("src", "");
+    $(frame).css("width", width + "px");
+    $(frame).css("height", height + "px");
+
+    frameContent = frame.contentDocument;
+    frameContent.open();
+    frameContent.writeln(previewSource.documentElement.outerHTML);
+    frameContent.close();
+}
+
+function _showPreviewField(container, width, height, title) {
+    var suffix = title.replace(/\s/g, "").replace("(", "").replace(")", ""),
+        containerId = "table" + suffix,
+        containerField = $("<table></table>"),
+        containerLeft = prevLeft,
+        containerTop = ROW_TOP,
+        containerScale = 1,
+        template = '<tr><td>' +
+            '<div style="background-color: #dddddd; height: 25px; width: 100%; border: 1px solid #888888;">' +
+            '<span style="margin-top:3px; margin-left:20px;">#TITLE</span></div>' +
+            '</td></tr><tr><td>' +
+            '<div id="container#SUFFIX" style="margin: 0; border: 10px solid #000000;"></div>' +
+            '<input type="hidden" id="scale#SUFFIX" value="#SCALE" />' +
+            '<input type="hidden" id="left#SUFFIX" value="#LEFT" />' +
+            '<input type="hidden" id="top#SUFFIX" value="#TOP" />' +
+            '<div class="preview-window-table-layout" style="position: absolute; width: 100%; height: 100%; left: 0; top: 18px; opacity: 0.5;"></div>' +
+            '</td></tr>',
+        iframeContainer;
+
+    containerScale = (width > LIMIT_SIZE) ? Math.floor((LIMIT_SIZE / width) * 100) / 100 : 1;
+    previewContainer.append(containerField);
+    containerField.html(template.replace(/#SUFFIX/g, suffix)
+        .replace(/#TITLE/g, title)
+        .replace(/#SCALE/g, containerScale)
+        .replace(/#LEFT/g, containerLeft)
+        .replace(/#TOP/g, containerTop));
+    containerField.attr("id", containerId);
+    containerField.css({
+        "left": containerLeft + "px",
+        "top": containerTop + "px",
+        '-webkit-transform-origin':  '0% 0%',
+        '-webkit-transform':  "translate(0px, 0px) rotate(0deg) scale(" + containerScale + ")"
+    });
+
+    containerArr.push(containerId);
+    if (rowIndex > 2) {
+        containerField.css({"display": "none"});
+        currentRowIndex = 0;
+    }
+
+    rowIndex++;
+    if (rowIndex % ROW_COUNT === 0) {
+        prevLeft = 20;
+    }
+    else {
+        prevLeft = containerLeft + LIMIT_SIZE + 20;
+    }
+
+    iframeContainer = document.getElementById("container" + suffix);
+    _createPreviewLayout(iframeContainer, width, height);
+}
+
+function _showPreviewLayouts() {
+    var deviceName,
+        container = document.getElementById("preview-window-container-div");
+
+    for (deviceName in deviceResolutions) {
+        _showPreviewField(container, deviceResolutions[deviceName].width,
+                deviceResolutions[deviceName].height, deviceName);
+    }
+}
+
+function _initializeDeviceResolutions() {
+    var platforms = platform.getList(),
+        platformId,
+        platformDevices,
+        i, count = 0;
+
+    deviceResolutions = {};
+    for (platformId in platforms) {
+        platformDevices = devices.getDevicesForPlatform(platformId);
+        for (i = 0; i < platformDevices.length; i++) {
+            count++;
+            deviceResolutions[platformDevices[i].name] = {
+                width: platformDevices[i].viewPort.portrait.width,
+                height: platformDevices[i].viewPort.portrait.height
+            };
+        }
+    }
+    rowNum = Math.ceil(count / ROW_COUNT);
+}
+
+function _bindEventsForPreviewWindow() {
+    $("#preview-window-close-btn").unbind("click");
+    $("#preview-window-close-btn").bind("click", function (event) {
+        $("#preview-window-popup").hide("slide", {direction: "up"}, "slow" ,function () {
+            previewContainer.html("");
+            $("#overlayBackground").hide();
+        });
+
+        event.preventDefault();
+    });
+
+    $("#preview-window-container-div table").unbind("click");
+    $("#preview-window-container-div table").bind("click", function (event) {
+        var containers = $("#preview-window-container-div table"),
+            container = $(this),
+            containerId = container.attr("id"),
+            scaleId = containerId.replace("table", "scale"),
+            leftId = containerId.replace("table", "left"),
+            topId = containerId.replace("table", "top");
+
+        oldLeft = container.find("#" + leftId).val();
+        oldTop = container.find("#" + topId).val();
+        oldScale = container.find("#" + scaleId).val();
+        oldContainer = containerId;
+        containers.find(".preview-window-table-layout").css("background", "");
+        container.find(".preview-window-table-layout").css("background", "#000000");
+
+        event.preventDefault();
+    });
+
+    $("#preview-window-preview-btn").unbind("click");
+    $("#preview-window-preview-btn").bind("click", function (event) {
+        var containerId = oldContainer;
+        if (!containerId)
+            return;
+
+        $("#preview-window-container-div table").hide();
+
+        $("#" + containerId).css('left', '0px');
+        $("#" + containerId).css('top', '0px');
+        $("#" + containerId).find(".preview-window-table-layout").css("background", "");
+        $("#" + containerId).css('-webkit-transform-origin', '0% 0%');
+        $("#" + containerId).css('-webkit-transform',  "translate(0px, 0px) rotate(0deg) scale(1)");
+        $("#" + containerId).show();
+
+        $("#preview-window-preview-btn").hide();
+        $("#preview-window-container-bar").hide();
+        $("#preview-window-back-btn").show();
+        $("#preview-window-scale-range").show();
+        $("#preview-window-scale-range").val(100);
+        $("#preview-window-popup .preview-window-scale-num").show();
+        $("#preview-window-popup .preview-window-scale-num").text("100%");
+
+        event.preventDefault();
+    });
+
+    $("#preview-window-scale-range").unbind("change");
+    $("#preview-window-scale-range").bind("change", function (event) {
+        var containerId = oldContainer,
+            nScale = Number($(this).val());
+
+        $("#" + containerId).css('-webkit-transform',  "translate(0px, 0px) rotate(0deg) scale(" + nScale / 100 + ")");
+        $("#preview-window-popup .preview-window-scale-num").text(nScale + "%");
+
+        event.preventDefault();
+    });
+
+    $("#preview-window-back-btn").unbind("click");
+    $("#preview-window-back-btn").bind("click", function (event) {
+        var containerId = oldContainer, i;
+
+        $("#" + containerId).css('left', oldLeft + "px");
+        $("#" + containerId).css('top', oldTop + "px");
+        $("#" + containerId).find(".preview-window-table-layout").css("background", "#000000");
+        $("#" + containerId).css('-webkit-transform-origin', '0% 0%');
+        $("#" + containerId).css('-webkit-transform',  "translate(0px, 0px) rotate(0deg) scale(" + oldScale + ")");
+
+        $("#preview-window-container-div table").hide();
+        for (i = 0; i < ROW_COUNT; i++) {
+            if (containerArr.length >= i) {
+                $("#" + containerArr[currentRowIndex * ROW_COUNT + i]).show();
+            }
+        }
+
+        $("#preview-window-preview-btn").show();
+        $("#preview-window-container-bar").show();
+        $("#preview-window-back-btn").hide();
+        $("#preview-window-scale-range").hide();
+        $("#preview-window-popup .preview-window-scale-num").hide();
+
+        event.preventDefault();
+    });
+
+    $("#preview-window-container-bar").slider({
+        orientation: "vertical",
+        min: 0,
+        max: 100,
+        value: 100,
+        slide: function(event, ui) {
+            var rangeSize = 100 / rowNum, start, end, i;
+
+            for (i = 0; i < rowNum; i++) {
+                start = 100 - i * rangeSize;
+                end = (i + 1 < rowNum) ? (100 - (i + 1) * rangeSize) : 0;
+                if (start >= ui.value && end < ui.value) {
+                    currentRowIndex = i;
+                }
+            }
+            $("#preview-window-container-div table").hide();
+            for (i = 0; i < ROW_COUNT; i++) {
+                if (containerArr.length >= i) {
+                    $("#" + containerArr[currentRowIndex * ROW_COUNT + i]).show();
+                }
+            }
+        }
+    });
+}
+
+function _showPreviewWindow() {
+    var position_x;
+
+    position_x = (($(window).width() - 800) / 2) < 0 ? 0 : ($(window).width() - 800) / 2;
+    $("#preview-window-popup").css("top", 80);
+    $("#preview-window-popup").css("left", position_x);
+    $("#preview-window-popup").show("slide", {direction: "up"}, "slow" ,function () {
+        $("#overlayBackground").css("width", $(window).width());
+        $("#overlayBackground").css("height", $(window).height());
+        $("#overlayBackground").show("fade", "slow");
+        _showPreviewLayouts();
+        _bindEventsForPreviewWindow();
+        $("#preview-window-container-div table:first-child").trigger("click");
+    });
+}
+
+module.exports = {
+    initialize : function() {
+        previewContainer = $("#preview-window-container-div");
+        $("#options-button-preview-window").bind("click", function () {
+            previewContainer.html("");
+            $("#preview-window-preview-btn").show();
+            $("#preview-window-container-bar").show();
+            $("#preview-window-back-btn").hide();
+            $("#preview-window-scale-range").hide();
+            $("#preview-window-popup .preview-window-scale-num").hide();
+
+            prevLeft = 20;
+
+            oldLeft = oldTop = 0;
+            oldScale = 1;
+            oldContainer = null;
+
+            rowIndex = 0;
+            currentRowIndex = 0;
+            containerArr = [];
+
+            _initializeDeviceResolutions();
+            _readPreviewSourceHtml();
+            _showPreviewWindow();
+        });
+    }
+};
+
+});
 define('ripple/ui/plugins/push', function (require, exports, module) {
 /*
  *  Copyright 2011 Research In Motion Limited.
@@ -164140,7 +166982,7 @@ var event = require('ripple/event'),
         vehicleCache: {},
         history: {},
         notShowProperties: [
-            "zone", "time", "source"
+            "timeStamp"
         ]
     };
 
@@ -164380,7 +167222,7 @@ function _setVehicleAutoRunning (autoRunning, isFill) {
 
     if (!isFill) {
         html += '<tr class="vehicle-property-content">' +
-            '<td class="vehicle-property-label">Time</td>' +
+            '<td class="vehicle-property-label">time</td>' +
             '<td class="vehicle-property-value" id="vehicle-time-show">' + timeStamp + '</td></tr>';
 
         for (property in data) {
@@ -164488,7 +167330,7 @@ function _setVehicleAutoRunning (autoRunning, isFill) {
     _vehicleGlobalVars.currentDataIndex++;
 }
 
-function _formatHistory (historyData, time, zone, source) {
+function _formatHistory (historyData, timeStamp) {
     var format = {}, property, name, item, value;
 
     for (property in historyData) {
@@ -164497,9 +167339,7 @@ function _formatHistory (historyData, time, zone, source) {
 
         if (!format[name]) {
             format[name] = {};
-            format[name].time = time;
-            format[name].zone = zone;
-            format[name].source = source;
+            format[name].timeStamp = timeStamp;
         }
 
         value = historyData[property];
@@ -164522,7 +167362,7 @@ function _saveVehicleData () {
         autoContainer = jQuery("#vehicle-container #vehicle-running-show  *[id$='-set']"),
         supportedContainer = jQuery("#vehicle-container #vehicle-supported-hide  *[id$='-supported']:checked"),
         supported = [], currentConfig, configuration = [], setting = [], autoRunning = [],
-        history = {}, itemKey, format, delTime, time, zone, source;
+        history = {}, itemKey, format, delTime, timeStamp;
 
     supportedContainer.each(function (index, item) {
         supported.push(item.value);
@@ -164564,13 +167404,11 @@ function _saveVehicleData () {
         delete _vehicleGlobalVars.history[delTime];
     }
 
-    time = _vehicleGlobalVars.timeCurrent;
-    source = "";
-    zone = 0;
-
-    format = _formatHistory(history, time, zone, source);
+    timeStamp = _vehicleGlobalVars.timeCurrent;
+    format = _formatHistory(history, timeStamp);
     _vehicleGlobalVars.history[_vehicleGlobalVars.timeCurrent] = format;
     event.trigger("vehicle-cache-refresh", [supported, format]);
+    _setVehicleHistory();
 
     vehiclePanelEngine.saveData(supported, currentConfig, configuration, setting, autoRunning);
 }
@@ -164716,7 +167554,7 @@ function _addVehicleEventListener () {
             return;
         }
 
-        var value, status, time, history,
+        var value, status, timeStamp, history,
             propertyObj = {};
 
         if (_vehicleGlobalVars.vehicleCache.supported.indexOf(property) === -1) {
@@ -164726,10 +167564,10 @@ function _addVehicleEventListener () {
         }
         else {
             history = _vehicleGlobalVars.history;
-            time = _vehicleGlobalVars.timeCurrent;
+            timeStamp = _vehicleGlobalVars.timeCurrent;
 
-            value = history[time][property];
-            value.time = time;
+            value = history[timeStamp][property];
+            value.timeStamp = timeStamp;
             status = true;
 
             propertyObj.val = value;
@@ -164741,13 +167579,14 @@ function _addVehicleEventListener () {
     });
 
     event.on("vehicle-set-request", function (property, value) {
-        var status = true, enums, showValue;
+        var enums, showID, showValue, showContainer, item,
+            enterID, enterContainer;
 
-        for (var item in value) {
-            var enterID = property + "-" + item + "-set";
-            var showID = property + "-" + item + "-show";
-            var enterContainer = jQuery("#vehicle-container #" + enterID);
-            var showContainer = jQuery("#vehicle-container #" + showID);
+        for (item in value) {
+            enterID = property + "-" + item + "-set";
+            showID = property + "-" + item + "-show";
+            enterContainer = jQuery("#vehicle-container #" + enterID);
+            showContainer = jQuery("#vehicle-container #" + showID);
 
             if (Object.prototype.toString.call(value[item]) === '[object Array]') {
                 enterContainer.val(value[item].join(","));
@@ -164764,27 +167603,19 @@ function _addVehicleEventListener () {
                 showContainer.html(showValue);
             }
         }
-
-        event.trigger("vehicle-set-response", [status]);
     });
+}
 
-    event.on("vehicle-history-request", function (property, zone, startTime, endTime) {
-        var history, historyResponse = [], obj, status, time;
-
-        history = _vehicleGlobalVars.history;
+function _setVehicleHistory() {
+    var history = [], obj, timeStamp;
 
-        for (time in history) {
-            if (time >= startTime && time <= endTime &&
-                history[time].hasOwnProperty(property)) {
-                obj = history[time][property];
-                obj.time = time;
-                historyResponse.push(obj);
-            }
+        for (timeStamp in _vehicleGlobalVars.history) {
+            obj = _vehicleGlobalVars.history[timeStamp];
+            obj.timeStamp = timeStamp;
+            history.push(obj);
         }
-        status = true;
 
-        event.trigger("vehicle-history-response", [property, historyResponse, status]);
-    });
+        event.trigger("vehicle-history-response", [history]);
 }
 
 function _initializeVehiclePanel () {
@@ -165182,6 +168013,7 @@ var _self,
         "themeSwitcher",
         "settings-menu",
         "configWindow",
+        "previewWindow",
         "HWKeys"
         //"launchingHistory"
     ],