summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwangjun <junx.j.wang@intel.com>2014-07-10 10:59:05 +0800
committerwangjun <junx.j.wang@intel.com>2014-07-10 10:59:05 +0800
commit57b97ed4b4b17c38d101cb74c5cbf61b154a2435 (patch)
treeb2ea2a1b16083c8ee4f9f54937441691adaffb82
parent0e1728845b5ecf4d1fdf44b9b1fbee0938fce197 (diff)
downloadivi-57b97ed4b4b17c38d101cb74c5cbf61b154a2435.tar.gz
ivi-57b97ed4b4b17c38d101cb74c5cbf61b154a2435.tar.bz2
ivi-57b97ed4b4b17c38d101cb74c5cbf61b154a2435.zip
Initial version for IVI help documentation.
Change-Id: I50f8c702ba5a2f9f02aebe69e0cd274ff9c69fea Signed-off-by: wangjun <junx.j.wang@intel.com>
-rw-r--r--.classpath7
-rw-r--r--.project28
-rw-r--r--.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--META-INF/MANIFEST.MF10
-rw-r--r--Tizen_IVI_Toc.xml6
-rw-r--r--bin/.gitignore1
-rw-r--r--build.properties7
-rw-r--r--html/Locale.html257
-rw-r--r--html/MediaServer.html533
-rw-r--r--html/Speech.html957
-rw-r--r--html/Vehicle.html3351
-rw-r--r--html/apireference.html80
-rw-r--r--html/ga.js65
-rw-r--r--html/snippet.css52
-rw-r--r--html/snippet.js1473
-rw-r--r--html/styles.css629
-rw-r--r--html/tizen.css932
-rw-r--r--html/toc.html34
-rw-r--r--plugin.xml16
-rw-r--r--src/org/tizen/ivi/help/Activator.java61
-rw-r--r--toc.xml11
21 files changed, 8517 insertions, 0 deletions
diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..cd7b121
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/.project b/.project
new file mode 100644
index 0000000..b0ffa45
--- /dev/null
+++ b/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.tizen.ivi.help</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ac299c9
--- /dev/null
+++ b/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Help
+Bundle-SymbolicName: org.tizen.ivi.help; singleton:=true
+Bundle-Version: 1.1.0.qualifier
+Bundle-Activator: org.tizen.ivi.help.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/Tizen_IVI_Toc.xml b/Tizen_IVI_Toc.xml
new file mode 100644
index 0000000..cea9c89
--- /dev/null
+++ b/Tizen_IVI_Toc.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Tizen IVI App Programming" topic="html/toc.html">
+ <link toc="toc.xml" />
+</toc>
diff --git a/bin/.gitignore b/bin/.gitignore
new file mode 100644
index 0000000..571ee51
--- /dev/null
+++ b/bin/.gitignore
@@ -0,0 +1 @@
+/org
diff --git a/build.properties b/build.properties
new file mode 100644
index 0000000..fc53675
--- /dev/null
+++ b/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ html/,\
+ *.xml
diff --git a/html/Locale.html b/html/Locale.html
new file mode 100644
index 0000000..c56e87a
--- /dev/null
+++ b/html/Locale.html
@@ -0,0 +1,257 @@
+<!DOCTYPE html PUBLIC "html">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+<script type="text/javascript" src="snippet.js"></script>
+<title>Locale API</title>
+</head>
+<body id="content" onload="prettyPrint()">
+ <div class="api" id="::Locale">
+ <div class="title">
+ <h1>Locale API</h1>
+ </div>
+ <div class="description">
+ <p>Allows access to the Locale API.</p>
+ </div>
+ <h2>Table of Contents</h2>
+ <ul class="toc">
+ <li>1. <a href="#interfaces">Interfaces</a>
+ <ul class="toc">
+ <li>1.1. <a href="#::Locale::LocaleManagerObject">LocaleManagerObject</a>
+ </li>
+ <li>1.2. <a href="#::Locale::Locale">Locale</a>
+ </li>
+ <li>1.3. <a href="#::Locale::LocaleChangedCallback">LocaleChangedCallback</a>
+ </li>
+ </ul>
+ </li>
+ <li>2. <a href="#full-webidl">Full WebIDL</a>
+ </li>
+ </ul>
+
+ <hr>
+
+ <h2 id="method-summary">Summary of Interfaces and Methods</h2>
+ <table class="informaltable">
+ <thead>
+ <tr>
+ <th>Interface</th>
+ <th>Method</th>
+ </tr>
+ <tr>
+ <td><a href="#::Locale::LocaleManagerObject"> LocaleManagerObject</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Locale::Locale"> Locale</a></td>
+ <td>DOMString <a href="#::Locale::Locale::getLocale">getLocale()</a>; <br>
+ void <a href="#::Locale::Locale::setLocale">setLocale</a>(DOMString
+ newLocale); <br> void <a href="#::Locale::Locale::localeChanged">
+ localeChanged</a>(<a href="#::Locale::LocaleChangedCallback"><span class="typ">LocaleChangedCallback</span></a> changeCallback); <br></td>
+ </tr>
+ <tr>
+ <td><a href="#::Locale::LocaleChangedCallback"> LocaleChangedCallback</a></td>
+ <td></td>
+ </tr>
+ </thead>
+ <tbody></tbody>
+ </table>
+ <!-- -------------------------------- -->
+ <div class="interfaces" id="interfaces">
+ <h2>1. Interfaces</h2>
+
+ <div class="interface" id="::Locale::LocaleManagerObject">
+ <h3>1.1. LocaleManagerObject</h3>
+ <div class="brief"></div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface LocaleManagerObject {
+ readonly attribute <a href="#::Locale::Locale"><span class="typ">Locale</span></a> locale;
+};
+</pre>
+<pre class="webidl prettyprint">
+Tizen implements Locale;
+</pre>
+ </div>
+
+ <div class="interface" id="::Locale::Locale">
+ <h3>1.2. Locale</h3>
+ <div class="brief">The Vehicle interface defines access to locale functionality.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface Locale {
+
+ DOMString getLocale();
+
+ void setLocale(DOMString newLocale);
+
+ void localeChanged(<a href="#::Locale::LocaleChangedCallback"><span class="typ">LocaleChangedCallback</span></a> changeCallback);
+
+};
+</pre>
+ <div class="methods">
+ <h4>Methods</h4>
+ <dl>
+ <dt class="method" id="::Locale::Locale::getLocale">
+ <span class="methodName">getLocale</span>
+ </dt>
+ <dd>
+ <div class="brief">Gets the current locale.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+DOMString getLocale();
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="returntype">
+ <p>
+ <span class="return">Return value:</span>
+ </p>
+ Current locale in ISO 639-2 format (i.e., en_US for English US).
+ </div>
+ </dd>
+ <dt class="method" id="::Locale::Locale::setLocale">
+ <span class="methodName">setLocale</span>
+ </dt>
+ <dd>
+ <div class="brief">Sets the system locale.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void setLocale(DOMString newLocale);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">newLocale</span>:
+ Locale to set in ISO 639-2 format.</li>
+ </ul>
+ </div>
+ </dd>
+ <dt class="method" id="::Locale::Locale::localeChanged">
+ <span class="methodName">localeChanged</span>
+ </dt>
+ <dd>
+ <div class="brief">Subscribes a callback function to be invoked when locale changes.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void localeChanged(<a href="#::LocaleChangedCallback"><span class="typ">LocaleChangedCallback</span></a> changeCallback);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">changeCallback</span>: Callback
+ to be called when this event occurs.</li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+
+ <div class="interface" id="::Locale::LocaleChangedCallback">
+ <h3>1.3. LocaleChangedCallback</h3>
+ <div class="brief">This interface specified a success callback that is invoked when current locale is changed.</div>
+<pre class="webidl prettyprint">
+[Callback=FunctionOnly, NoInterfaceObject] interface LocaleChangedCallback {
+
+ void onsuccess(DOMString newLocale);
+
+};
+</pre>
+ <div class="methods">
+ <h4>Methods</h4>
+
+ <dl>
+ <dt class="method" id="::Locale::LocaleChangedCallback::onsuccess">
+ <span class="methodName">onsuccess</span>
+ </dt>
+ <dd>
+ <div class="brief">The callback function used to return a new locale. Called when current locale is changed successfully.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void onsuccess(DOMString newLocale);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">newLocale</span>: A new locale.</li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!-- -------------------------------- -->
+ <h2 id="full-webidl">2. Full WebIDL</h2>
+<pre class="webidl prettyprint">
+module Locale {
+
+ [NoInterfaceObject] interface LocaleManagerObject {
+ readonly attribute Locale locale;
+ };
+
+ Tizen implements Locale;
+
+ [NoInterfaceObject] interface Locale {
+
+ DOMString getLocale();
+
+ void setLocale(DOMString newLocale);
+
+ void localeChanged(LocaleChangedCallback changeCallback);
+
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface LocaleChangedCallback {
+
+ void onsuccess(DOMString newLocale);
+
+ };
+};
+</pre>
+ <div id="footer">
+ <div class="copyright" align="center">
+ Except as noted, this content - excluding the Code Examples - is
+ licensed under <a
+ href="http://creativecommons.org/licenses/by/3.0/legalcode"
+ target="_blank">Creative Commons Attribution 3.0</a> and all of
+ the Code Examples contained herein are licensed under <a
+ href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.
+ <br>For details, see the <a
+ href="https://www.tizen.org/content-license" target="_blank">Content
+ License</a>.
+ </div>
+ </div>
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push([ '_setAccount', 'UA-25976949-1' ]);
+ _gaq.push([ '_setDomainName', 'tizen.org' ]);
+ _gaq.push([ '_trackPageview' ]);
+
+ (function() {
+ var ga = document.createElement('script');
+ ga.type = 'text/javascript';
+ ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl'
+ : 'http://www')
+ + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+ </div>
+</body>
+</html>
diff --git a/html/MediaServer.html b/html/MediaServer.html
new file mode 100644
index 0000000..f207659
--- /dev/null
+++ b/html/MediaServer.html
@@ -0,0 +1,533 @@
+<!DOCTYPE html PUBLIC "html">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+<script type="text/javascript" src="snippet.js"></script>
+<title>MediaServer API</title>
+</head>
+<body id="content" onload="prettyPrint()">
+ <div class="api" id="::MediaServer">
+ <div class="title">
+ <h1>MediaServer API</h1>
+ </div>
+ <div class="description">
+ <p>Media Server API to discover and manage images, videos, and music. </p>
+ </div>
+ <h2>Table of Contents</h2>
+ <ul class="toc">
+ <li>1. <a href="#interfaces">Interfaces</a>
+ <ul class="toc">
+ <li>1.1. <a href="#::MediaServerManagerObject">MediaServerManagerObject</a>
+ </li>
+ <li>1.2. <a href="#::MediaServerManager">MediaServerManager</a>
+ </li>
+ <li>1.3. <a href="#::MediaServer::MediaServer">MediaServer</a>
+ </li>
+ <li>1.4. <a href="#::MediaServerError">MediaServerError</a>
+ </li>
+ <li>1.5. <a href="#::MediaServerFoundServerCallback">MediaServerFoundServerCallback</a>
+ </li>
+ <li>1.6. <a href="#::MediaServerBrowseFindCallback">MediaServerBrowseFindCallback</a>
+ </li>
+ <li>1.7. <a href="#::MediaServerErrorCallback">MediaServerErrorCallback</a>
+ </li>
+ </ul>
+ </li>
+ <li>2. <a href="#full-webidl">Full WebIDL</a>
+ </li>
+ </ul>
+
+ <hr>
+
+ <h2 id="method-summary">Summary of Interfaces and Methods</h2>
+ <table class="informaltable">
+ <thead>
+ <tr>
+ <th>Interface</th>
+ <th>Method</th>
+ </tr>
+ <tr>
+ <td><a href="#::MediaServerManagerObject"> MediaServerManagerObject</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::MediaServerManager"> MediaServerManager</a></td>
+ <td>void <a href="#::MediaServerManager::scanNetwork">
+ scanNetwork</a>(<a href="#::MediaServerFoundServerCallback"><span class="typ">MediaServerFoundServerCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback);</td>
+ </tr>
+ <tr>
+ <td><a href="#::MediaServer::MediaServer"> MediaServer</a></td>
+ <td>void <a href="#::MediaServer::MediaServer::browse">browse</a>(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <a href="#::MediaServerBrowseFindCallback"><span class="typ">MediaServerBrowseFindCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback); <br>
+ void <a href="#::MediaServer::MediaServer::find">find</a>(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <a href="#::MediaServerBrowseFindCallback"><span class="typ">MediaServerBrowseFindCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback);</td>
+ </tr>
+ <tr>
+ <td><a href="#::MediaServerFoundServerCallback"> MediaServerFoundServerCallback</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::MediaServerBrowseFindCallback"> MediaServerBrowseFindCallback</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::MediaServerErrorCallback"> MediaServerErrorCallback</a></td>
+ <td></td>
+ </tr>
+ </thead>
+ <tbody></tbody>
+ </table>
+ <!-- -------------------------------- -->
+
+ <div class="interfaces" id="interfaces">
+ <h2>1. Interfaces</h2>
+ <div class="interface" id="::MediaServerManagerObject">
+ <h3>1.1. MediaServerManagerObject</h3>
+ <div class="brief">This interface defines what is instantiated
+ by the Tizen object by the Tizen Platform. There will be a
+ tizen.mediaserver object that allows access to the functionality of the
+ MediaServerManager API.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface MediaServerManagerObject {
+ readonly attribute <a href="#::MediaServerManager"><span class="typ">MediaServerManager</span></a> mediaserver;
+};
+</pre>
+<pre class="webidl prettyprint">
+Tizen implements MediaServerManagerObject;
+</pre>
+ </div>
+ <div class="interface" id="::MediaServerManager">
+ <h3>1.2. MediaServerManager</h3>
+ <div class="brief">The MediaServerManager interface defines access to local network media servers discovery functionality. </div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface MediaServerManager {
+
+ void scanNetwork(<a href="#::MediaServerFoundServerCallback"><span class="typ">MediaServerFoundServerCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback);
+
+};
+</pre>
+ <div class="methods">
+ <h4>Methods</h4>
+
+ <dl>
+ <dt class="method" id="::MediaServerManager::scanNetwork">
+ <span class="methodName">scanNetwork</span>
+ </dt>
+ <dd>
+ <div class="brief">Scans local network for media servers.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void scanNetwork(<a href="#::MediaServerFoundServerCallback"><span class="typ">MediaServerFoundServerCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">successCallback</span>:
+ The method to call when each MediaServer is discovered.</li>
+ <li class="param"><span class="name">errorCallback[optional]</span>:
+ The method to call when no MediaServer is discovered.</li>
+ </ul>
+ </div>
+ <div class="exceptionlist">
+ <p>
+ <span class="except">Exceptions:</span>
+ </p>
+ <ul class="exception">
+ <li>WebAPIError
+ <ul>
+ <li class="list"><p>with error type
+ UnknownError, if no MediaServer is discovered.
+ </p></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="interface" id="::MediaServer::MediaServer">
+ <h3>1.3. MediaServer</h3>
+ <div class="brief">The MediaServer interface.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface MediaServer {
+
+ readonly attribute DOMString id;
+
+ readonly attribute DOMString friendlyName;
+
+ readonly attribute object root;
+
+ void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <a href="#::MediaServerBrowseFindCallback"><span class="typ">MediaServerBrowseFindCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback);
+
+ void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <a href="#::MediaServerBrowseFindCallback"><span class="typ">MediaServerBrowseFindCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback);
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::MediaServer::MediaServer::id"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">DOMString
+ </span><span class="name">id</span></span>
+ <div class="brief">An opaque unique ID.</div></li>
+ <li class="attribute" id="::MediaServer::MediaServer::friendlyName"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">DOMString </span><span
+ class="name">friendlyName</span></span>
+ <div class="brief"> A user-friendly name for the device.</div></li>
+ <li class="attribute" id="::MediaServer::MediaServer::root"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">object </span><span
+ class="name">root</span></span>
+ <div class="brief">Media server root folder.</div></li>
+ </ul>
+ </div>
+ <div class="methods">
+ <h4>Methods</h4>
+
+ <dl>
+ <dt class="method" id="::MediaServer::MediaServer::browse">
+ <span class="methodName">browse</span>
+ </dt>
+ <dd>
+ <div class="brief">Browses for media items under a given media container.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <a href="#::MediaServerBrowseFindCallback"><span class="typ">MediaServerBrowseFindCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">containerId</span>:
+ A unique identifier for media container in a media server.</li>
+ <li class="param"><span class="name">sortMode</span>:
+ Sort mode for media items.</li>
+ <li class="param"><span class="name">count</span>:
+ The maximum number of media items to return out of the browse result (0 for no limit).</li>
+ <li class="param"><span class="name">offset</span>:
+ The (0-based) index of the first item in the browse result.</li>
+ <li class="param"><span class="name">successCallback</span>:
+ The method to call when media items are discovered.</li>
+ <li class="param"><span class="name">errorCallback[optional]</span>:
+ The method to call when an error occurs.</li>
+ </ul>
+ </div>
+ <div class="exceptionlist">
+ <p>
+ <span class="except">Exceptions:</span>
+ </p>
+ <ul class="exception">
+ <li>WebAPIError
+ <ul>
+ <li class="list"><p>with error type
+ UnknownError, if an error occurs.
+ </p></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ </dd>
+ <dt class="method" id="::MediaServer::MediaServer::find">
+ <span class="methodName">find</span>
+ </dt>
+ <dd>
+ <div class="brief">Searches for media items under a given MediaContainer.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <a href="#::MediaServerBrowseFindCallback"><span class="typ">MediaServerBrowseFindCallback</span></a> successCallback, optional <a href="#::MediaServerErrorCallback"><span class="typ">MediaServerErrorCallback</span></a> errorCallback);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">containerId</span>:
+ A unique identifier for media container in a media server.</li>
+ <li class="param"><span class="name">searchFilter</span>:
+ The search criteria string.</li>
+ <li class="param"><span class="name">sortMode</span>:
+ Sort mode for media items.</li>
+ <li class="param"><span class="name">count</span>:
+ The maximum number of media items to return out of the browse result (0 for no limit).</li>
+ <li class="param"><span class="name">offset</span>:
+ The (0-based) index of the first item in the browse result.</li>
+ <li class="param"><span class="name">successCallback</span>:
+ The method to call when media items are discovered.</li>
+ <li class="param"><span class="name">errorCallback[optional]</span>:
+ The method to call when an error occurs.</li>
+ </ul>
+ </div>
+ <div class="exceptionlist">
+ <p>
+ <span class="except">Exceptions:</span>
+ </p>
+ <ul class="exception">
+ <li>WebAPIError
+ <ul>
+ <li class="list"><p>with error type
+ UnknownError, if an error occurs.
+ </p></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+
+ <div class="interface" id="::MediaServerError">
+ <h3>1.4. MediaServerError</h3>
+ <div class="brief">The MediaServerError interface defines error codes and messages.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface MediaServerError {
+
+ const unsigned short GENERIC = 1;
+
+ attribute unsigned short code;
+
+ attribute DOMString message;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::MediaServerError::GENERIC"><span
+ class="name">GENERIC</span>
+ <div class="brief">It defines an error code.</div></li>
+ </ul>
+ </div>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::MediaServerError::code"><span
+ class="attrName"><span class="type">unsigned short </span><span
+ class="name">code</span></span>
+ <div class="brief">An attribute to get error code.</div></li>
+ <li class="attribute" id="::MediaServerError::message"><span
+ class="attrName"><span class="type">DOMString </span><span
+ class="name">message</span></span>
+ <div class="brief">An attribute to get error message.</div></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="interface" id="::MediaServerFoundServerCallback">
+ <h3>1.5. MediaServerFoundServerCallback</h3>
+ <div class="brief">This interface invokes the success callback that is invoked when a MediaServer is discovered. </div>
+<pre class="webidl prettyprint">
+[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerFoundServerCallback {
+
+ void onsuccess(<a href="#::MediaServer"><span class="typ">MediaServer</span></a> value);
+
+};
+</pre>
+ <div class="methods">
+ <h4>Methods</h4>
+
+ <dl>
+ <dt class="method" id="::MediaServerFoundServerCallback::onsuccess">
+ <span class="methodName">onsuccess</span>
+ </dt>
+ <dd>
+ <div class="brief">The callback function used to return a MediaServer object. Called when the media server is found successfully. </div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void onsuccess(MediaServer value);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">value</span>: A MediaServer object.</li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+
+ <div class="interface" id="::MediaServerBrowseFindCallback">
+ <h3>1.6. MediaServerBrowseFindCallback</h3>
+ <div class="brief">This interface specified a success callback that is invoked when some media items is found.</div>
+<pre class="webidl prettyprint">
+[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerBrowseFindCallback {
+
+ void onsuccess(object[] value);
+
+};
+</pre>
+ <div class="methods">
+ <h4>Methods</h4>
+
+ <dl>
+ <dt class="method" id="::MediaServerBrowseFindCallback::onsuccess">
+ <span class="methodName">onsuccess</span>
+ </dt>
+ <dd>
+ <div class="brief">The callback function used to return a list of MediaServerItem objects. Called when the list of media server item is retrieved successfully.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void onsuccess(object[] value);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">value</span>: A list of media items.</li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+
+ <div class="interface" id="::MediaServerErrorCallback">
+ <h3>1.6. MediaServerErrorCallback</h3>
+ <div class="brief">This interface specified a failure callback that is invoked when any errors are happened.</div>
+<pre class="webidl prettyprint">
+[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerErrorCallback {
+
+ void onfailure(<a href="#::MediaServerError"><span class="typ">MediaServerError</span></a> error);
+
+};
+</pre>
+ <div class="methods">
+ <h4>Methods</h4>
+
+ <dl>
+ <dt class="method" id="::MediaServerErrorCallback::onfailure">
+ <span class="methodName">onfailure</span>
+ </dt>
+ <dd>
+ <div class="brief">The callback function used to return a MediaServerError object. Called when an error occurs.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void onfailure(MediaServerError error);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">error</span>: A MediaServerError object.</li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+
+ <!-- -------------------------------- -->
+ <h2 id="full-webidl">3. Full WebIDL</h2>
+<pre class="webidl prettyprint">
+module MediaServer {
+
+ [NoInterfaceObject] interface MediaServerManagerObject {
+ readonly attribute MediaServerManager mediaserver;
+ };
+
+ Tizen implements MediaServerManagerObject;
+
+ [NoInterfaceObject] interface MediaServerManager {
+
+ void scanNetwork(MediaServerFoundServerCallback successCallback, optional MediaServerErrorCallback errorCallback);
+
+ };
+
+ [NoInterfaceObject] interface MediaServer {
+
+ readonly attribute DOMString id;
+
+ readonly attribute DOMString friendlyName;
+
+ readonly attribute object root;
+
+ void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, MediaServerBrowseFindCallback successCallback, optional MediaServerErrorCallback errorCallback);
+
+ void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, MediaServerBrowseFindCallback successCallback, optional MediaServerErrorCallback errorCallback);
+
+ };
+
+ [NoInterfaceObject] interface MediaServerError {
+
+ const unsigned short GENERIC = 1;
+
+ attribute unsigned short code;
+
+ attribute DOMString message;
+
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerFoundServerCallback {
+
+ void onsuccess(MediaServer value);
+
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerBrowseFindCallback {
+
+ void onsuccess(object[] value);
+
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerErrorCallback {
+
+ void onfailure(MediaServerError error);
+
+ };
+};
+</pre>
+ <div id="footer">
+ <div class="copyright" align="center">
+ Except as noted, this content - excluding the Code Examples - is
+ licensed under <a
+ href="http://creativecommons.org/licenses/by/3.0/legalcode"
+ target="_blank">Creative Commons Attribution 3.0</a> and all of the
+ Code Examples contained herein are licensed under <a
+ href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.
+ <br>For details, see the <a
+ href="https://www.tizen.org/content-license" target="_blank">Content
+ License</a>.
+ </div>
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push([ '_setAccount', 'UA-25976949-1' ]);
+ _gaq.push([ '_setDomainName', 'tizen.org' ]);
+ _gaq.push([ '_trackPageview' ]);
+
+ (function() {
+ var ga = document.createElement('script');
+ ga.type = 'text/javascript';
+ ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl'
+ : 'http://www')
+ + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+ </div>
+</body>
+</html>
diff --git a/html/Speech.html b/html/Speech.html
new file mode 100644
index 0000000..3f2f72a
--- /dev/null
+++ b/html/Speech.html
@@ -0,0 +1,957 @@
+<!DOCTYPE html PUBLIC "html">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+<script type="text/javascript" src="snippet.js"></script>
+<title>Speech API</title>
+</head>
+<body id="content" onload="prettyPrint()">
+ <div class="api" id="::Speech">
+ <div class="title">
+ <h1>Speech API</h1>
+ </div>
+ <div class="description">
+ <p>The Web Speech API aims to enable web developers to provide, in a web browser, speech-input and text-to-speech output
+ features that are typically not available when using standard speech-recognition or screen-reader software.</p>
+ </div>
+ <h2>Table of Contents</h2>
+ <ul class="toc">
+ <li>1. <a href="#typedefs">Type Definitions</a>
+ <ul class="toc">
+ <li>1.1. <a href="#::ErrorCode">ErrorCode</a>
+ </li>
+ </ul>
+ </li>
+ <li>2. <a href="#interfaces">Interfaces</a>
+ <ul class="toc">
+ <li>2.1. <a href="#::SpeechManagerObject">SpeechManagerObject</a>
+ </li>
+ <li>2.2. <a href="#::SpeechManager">SpeechManager</a>
+ </li>
+ <li>2.3. <a href="#::SpeechRecognition">SpeechRecognition</a>
+ </li>
+ <li>2.4. <a href="#::SpeechRecognitionError">SpeechRecognitionError</a>
+ </li>
+ <li>2.5. <a href="#::SpeechRecognitionAlternative">SpeechRecognitionAlternative</a>
+ </li>
+ <li>2.6. <a href="#::SpeechRecognitionResult">SpeechRecognitionResult</a>
+ </li>
+ <li>2.7. <a href="#::SpeechRecognitionResultList">SpeechRecognitionResultList</a>
+ </li>
+ <li>2.8. <a href="#::SpeechRecognitionEvent">SpeechRecognitionEvent</a>
+ </li>
+ <li>2.9. <a href="#::SpeechGrammar">SpeechGrammar</a>
+ </li>
+ <li>2.10. <a href="#::SpeechGrammarList">SpeechGrammarList</a>
+ </li>
+ </ul>
+ </li>
+ <li>3. <a href="#full-webidl">Full WebIDL</a>
+ </li>
+ </ul>
+
+ <hr>
+
+ <h2 id="method-summary">Summary of Interfaces and Methods</h2>
+ <table class="informaltable">
+ <thead>
+ <tr>
+ <th>Interface</th>
+ <th>Method</th>
+ </tr>
+ <tr>
+ <td><a href="#::SpeechManagerObject"> SpeechManagerObject</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::SpeechManager"> SpeechManager</a></td>
+ <td>void <a href="#::SpeechManager::vocalizeString">
+ vocalizeString</a>(DOMString speakString);</td>
+ </tr>
+ <tr>
+ <td><a href="#::SpeechRecognition"> SpeechRecognition</a></td>
+ <td>void <a href="#::SpeechRecognition::start">start</a>(); <br>
+ void <a href="#::SpeechRecognition::stop">stop</a>(); <br> void <a
+ href="#::SpeechRecognition::abort">abort()</a>; <br></td>
+ </tr>
+ <tr>
+ <td><a href="#::SpeechRecognitionError">
+ SpeechRecognitionError</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::SpeechRecognitionAlternative">
+ SpeechRecognitionAlternative</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::SpeechRecognitionResult">
+ SpeechRecognitionResult</a></td>
+ <td><a href="#::SpeechRecognitionAlternative"><span class="typ">SpeechRecognitionAlternative</span></a>
+ <a href="#::SpeechRecognitionResult::item">item</a>(unsigned long index); <br></td>
+ </tr>
+ <tr>
+ <td><a href="#::SpeechRecognitionResultList">
+ SpeechRecognitionResultList</a></td>
+ <td><a href="#::SpeechRecognitionResult"><span class="typ">SpeechRecognitionResult</span></a>
+ <a href="#::SpeechRecognitionResultList::item">item</a>(unsigned long index); <br></td>
+ </tr>
+ <tr>
+ <td><a href="#::SpeechRecognitionEvent">
+ SpeechRecognitionEvent</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::SpeechGrammar"> SpeechGrammar</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::SpeechGrammarList"> SpeechGrammarList</a></td>
+ <td><a href="#::SpeechGrammar"><span class="typ">SpeechGrammar</span></a>
+ <a href="#::SpeechGrammarList::item">item</a>(unsigned long index); <br> void <a
+ href="#::SpeechGrammarList::addFromURI">
+ addFromURI</a>(DOMString src, optional float weight); <br> void <a
+ href="#::SpeechGrammarList::addFromString">
+ addFromString</a>(DOMString string, optional float weight); <br></td>
+ </tr>
+ </thead>
+ <tbody></tbody>
+ </table>
+ <!-- -------------------------------- -->
+
+ <div class="typedefs" id="typedefs">
+ <h2>1. Type Definitions</h2>
+ <div class="enum" id="::ErrorCode">
+ <h3>1.1. ErrorCode</h3>
+ <div class="brief">Error codes for <a href="#::SpeechRecognitionError"><span class="typ">SpeechRecognitionError</span></a>.</div>
+<pre class="webidl prettyprint">
+enum ErrorCode {"no-speech", "aborted", "audio-capture", "network", "not-allowed", "service-not-allowed", "bad-grammar", "language-not-supported"};
+</pre>
+ </div>
+ </div>
+ <!-- -------------------------------- -->
+ <div class="interfaces" id="interfaces">
+ <h2>2. Interfaces</h2>
+ <div class="interface" id="::SpeechManagerObject">
+ <h3>2.1. SpeechManagerObject</h3>
+ <div class="brief">This interface defines what is instantiated
+ by the Tizen object by the Tizen Platform. There will be a
+ tizen.speech object that allows access to the functionality of the
+ SpeechManager API.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface SpeechManagerObject {
+ readonly attribute <a href="#::SpeechManager"><span class="typ">SpeechManager</span></a> speech;
+};
+</pre>
+<pre class="webidl prettyprint">
+Tizen implements SpeechManagerObject;
+</pre>
+ </div>
+ <div class="interface" id="::SpeechManager">
+ <h3>2.2. SpeechManager</h3>
+ <div class="brief">This section defines the speech manager interface.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface SpeechManager {
+
+ void vocalizeString(DOMString speakString);
+
+};
+</pre>
+ <div class="methods">
+ <h4>Methods</h4>
+
+ <dl>
+ <dt class="method" id="::SpeechManager::vocalizeString">
+ <span class="methodName">vocalizeString</span>
+ </dt>
+ <dd>
+ <div class="brief">Achieves text-to-speech feature.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void vocalizeString(DOMString speakString);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">speakString</span>: A text.</li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="interface" id="::SpeechRecognition">
+ <h3>2.3. SpeechRecognition</h3>
+ <div class="brief"></div>
+<pre class="webidl prettyprint">
+[Constructor()]
+
+interface SpeechRecognition : EventTarget {
+
+ attribute <a href="#::SpeechGrammarList"><span class="typ">SpeechGrammarList</span></a> grammars;
+
+ attribute DOMString lang;
+
+ attribute boolean continuous;
+
+ attribute boolean interimResults;
+
+ attribute unsigned long maxAlternatives;
+
+ attribute DOMString serviceURI;
+
+ void start();
+
+ void stop();
+
+ void abort();
+
+ attribute EventHandler onaudiostart;
+
+ attribute EventHandler onsoundstart;
+
+ attribute EventHandler onspeechstart;
+
+ attribute EventHandler onspeechend;
+
+ attribute EventHandler onsoundend;
+
+ attribute EventHandler onaudioend;
+
+ attribute EventHandler onresult;
+
+ attribute EventHandler onnomatch;
+
+ attribute EventHandler onerror;
+
+ attribute EventHandler onstart;
+
+ attribute EventHandler onend;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::SpeechRecognition::grammars"><span
+ class="attrName"><span class="type">SpeechGrammarList
+ </span><span class="name">grammars</span></span>
+ <div class="brief">An attribute to stores the collection of
+ SpeechGrammar objects which represent the grammars that are
+ active for this recognition.</div></li>
+ <li class="attribute" id="::SpeechRecognition::lang"><span
+ class="attrName"><span class="type">DOMString </span><span
+ class="name">lang</span></span>
+ <div class="brief">An attribute to set the language of the
+ recognition for the request.</div></li>
+ <li class="attribute" id="::SpeechRecognition::continuous"><span
+ class="attrName"><span class="type">DOMString </span><span
+ class="name">continuous</span></span>
+ <div class="brief">The default value is false.</div></li>
+ <li class="attribute" id="::SpeechRecognition::interimResults"><span
+ class="attrName"><span class="type">boolean </span><span
+ class="name">interimResults</span></span>
+ <div class="brief">An attribute to control whether interim
+ results are returned. The default value is false.</div></li>
+ <li class="attribute" id="::SpeechRecognition::maxAlternatives"><span
+ class="attrName"><span class="type">unsigned long </span><span
+ class="name">maxAlternatives</span></span>
+ <div class="brief">An attribute to set the maximum number
+ of SpeechRecognitionAlternatives per result. The default value
+ is 1.</div></li>
+ <li class="attribute" id="::SpeechRecognition::serviceURI"><span
+ class="attrName"><span class="type">DOMString </span><span
+ class="name">serviceURI</span></span>
+ <div class="brief">An attribute to specifies the location
+ of the speech recognition service that the web application
+ wishes to use.</div></li>
+ <li class="attribute" id="::SpeechRecognition::onaudiostart"><span
+ class="attrName"><span class="type">EventHandler </span><span
+ class="name">onaudiostart</span></span>
+ <div class="brief">Fired when the user agent has started to capture audio.
+ </div></li>
+ <li class="attribute" id="::SpeechRecognition::onsoundstart"><span
+ class="attrName"><span class="type">EventHandler </span><span
+ class="name">onsoundstart</span></span>
+ <div class="brief">Fired when some sound, possibly speech, has been detected.
+ </div></li>
+ <li class="attribute" id="::SpeechRecognition::onspeechstart"><span
+ class="attrName"><span class="type">EventHandler </span><span
+ class="name">onspeechstart</span></span>
+ <div class="brief">Fired when the speech that will be used for speech recognition has started.
+ </div></li>
+ <li class="attribute" id="::SpeechRecognition::speechend"><span
+ class="attrName"><span class="type">EventHandler </span><span
+ class="name">speechend</span></span>
+ <div class="brief">Fired when the speech that will be used for speech recognition has ended.
+ The speechstart event must always have been fire before speechend.
+ </div></li>
+ <li class="attribute" id="::SpeechRecognition::soundend"><span
+ class="attrName"><span class="type">EventHandler </span><span
+ class="name">soundend</span></span>
+ <div class="brief">Fired when some sound is no longer detected.
+ The soundstart event must always have been fired before soundend.
+ </div></li>
+ <li class="attribute" id="::SpeechRecognition::audioend"><span
+ class="attrName"><span class="type">EventHandler </span><span
+ class="name">audioend</span></span>
+ <div class="brief">Fired when the user agent has finished capturing audio.
+ The audiostart event must always have been fired before audioend.
+ </div></li>
+ <li class="attribute" id="::SpeechRecognition::onresult"><span
+ class="attrName"><span class="type">EventHandler </span><span
+ class="name">onresult</span></span>
+ <div class="brief">Fired when the speech recognizer returns a result.
+ </div></li>
+ <li class="attribute" id="::SpeechRecognition::onnomatch"><span
+ class="attrName"><span class="type">EventHandler </span><span
+ class="name">onnomatch</span></span>
+ <div class="brief">Fired when the speech recognizer returns a final result with no recognition
+ hypothesis that meet or exceed the confidence threshold.
+ </div></li>
+ <li class="attribute" id="::SpeechRecognition::onerror"><span
+ class="attrName"><span class="type">EventHandler </span><span
+ class="name">onerror</span></span>
+ <div class="brief">Fired when a speech recognition error occurs.
+ </div></li>
+ <li class="attribute" id="::SpeechRecognition::onstart"><span
+ class="attrName"><span class="type">EventHandler </span><span
+ class="name">onstart</span></span>
+ <div class="brief">Fired when the recognition service has begun to listen to the audio with the intention of recognizing.
+ </div></li>
+ <li class="attribute" id="::SpeechRecognition::onend"><span
+ class="attrName"><span class="type">EventHandler </span><span
+ class="name">onend</span></span>
+ <div class="brief">Fired when the service has disconnected.
+ </div></li>
+ </ul>
+ </div>
+ <div class="methods">
+ <h4>Methods</h4>
+
+ <dl>
+ <dt class="method" id="::SpeechRecognition::start">
+ <span class="methodName">start</span>
+ </dt>
+ <dd>
+ <div class="brief">When the start method is called it
+ represents the moment in time the web application wishes to
+ begin recognition. Once the system is successfully listening to
+ the recognition the user agent must raise a start event.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void start();
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="exceptionlist">
+ <p>
+ <span class="except">Exceptions:</span>
+ </p>
+ <ul class="exception">
+ <li>WebAPIException
+ <ul>
+ <li class="list"><p>with error type
+ InvalidStateError, if the start method is called on an
+ already started object.
+ </p></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ </dd>
+ <dt class="method" id="::SpeechRecognition::stop">
+ <span class="methodName">stop</span>
+ </dt>
+ <dd>
+ <div class="brief">The stop method represents an
+ instruction to the recognition service to stop listening to more
+ audio, and to try and return a result using just the audio that
+ it has already received for this recognition.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void stop();
+<span class="pln"></span>
+</pre>
+ </div>
+ </dd>
+ <dt class="method" id="::SpeechRecognition::abort">
+ <span class="methodName">abort</span>
+ </dt>
+ <dd>
+ <div class="brief"> The abort method is a request to immediately
+ stop listening and stop recognizing and do not return any
+ information but that the system is done. When the abort method
+ is called, the speech service must stop recognizing. The user
+ agent must raise an end event once the speech service is no
+ longer connected.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void abort();
+<span class="pln"></span>
+</pre>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+
+ <div class="interface" id="::SpeechRecognitionError">
+ <h3>2.4. SpeechRecognitionError</h3>
+ <div class="brief">The SpeechRecognitionError event is the
+ interface used for the error event.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface SpeechRecognitionError : Event {
+
+ readonly attribute <a href="#::ErrorCode"><span class="typ">ErrorCode</span></a> error;
+
+ readonly attribute DOMString message;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::SpeechRecognitionError::error"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">ErrorCode </span><span
+ class="name">error</span></span>
+ <div class="brief">An attribute to get error code.</div></li>
+ <li class="attribute" id="::SpeechRecognitionError::message"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">DOMString </span><span
+ class="name">message</span></span>
+ <div class="brief">An attribute to get error message.</div></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="interface" id="::SpeechRecognitionAlternative">
+ <h3>2.5. SpeechRecognitionAlternative</h3>
+ <div class="brief">The SpeechRecognitionAlternative represents
+ a simple view of the response that gets used in a n-best list.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface SpeechRecognitionAlternative {
+
+ readonly attribute DOMString transcript;
+
+ readonly attribute float confidence;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute"
+ id="::SpeechRecognitionAlternative::transcript"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">DOMString </span><span
+ class="name">transcript</span></span>
+ <div class="brief">An attribute to get the raw words that
+ the user spoke.</div></li>
+ <li class="attribute"
+ id="::SpeechRecognitionAlternative::confidence"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">float </span><span
+ class="name">confidence</span></span>
+ <div class="brief">An attribute to get a numeric estimate
+ between 0 and 1 of how confident the recognition system is that
+ the recognition is correct. A higher number means the system is
+ more confident.</div></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="interface" id="::SpeechRecognitionResult">
+ <h3>2.6. SpeechRecognitionResult</h3>
+ <div class="brief">The SpeechRecognitionResult object represents
+ a single one-shot recognition match, either as one small part of a
+ continuous recognition or as the complete return result of a
+ non-continuous recognition.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface SpeechRecognitionResult {
+
+ readonly attribute unsigned long length;
+
+ <a href="#::SpeechRecognitionAlternative"><span class="typ">SpeechRecognitionAlternative</span></a> item(unsigned long index);
+
+ readonly attribute boolean final;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::SpeechRecognitionResult::length"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">unsigned long </span><span
+ class="name">length</span></span>
+ <div class="brief">An attribute to represent how many n-best
+ alternatives are represented in the item array.</div></li>
+ <li class="attribute" id="::SpeechRecognitionResult::final"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">boolean </span><span
+ class="name">final</span></span>
+ <div class="brief">An attribute to control whether or not an 3 characters.
+ interim result cannot be changed.</div></li>
+ </ul>
+ </div>
+
+ <div class="methods">
+ <h4>Methods</h4>
+
+ <dl>
+ <dt class="method" id="::SpeechRecognitionResult::item">
+ <span class="methodName">item</span>
+ </dt>
+ <dd>
+ <div class="brief">Returns a SpeechRecognitionAlternative
+ from the index into an array of n-best values. If index is greater
+ than or equal to length, returns null.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+SpeechRecognitionAlternative item(unsigned long index);
+<span class="pln"></span>
+</pre>
+</div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">index</span>: An index of the <a href="#::SpeechRecognitionAlternative"><span class="typ">SpeechRecognitionAlternative</span></a> array.</li>
+ </ul>
+ </div>
+ <div class="returntype">
+ <p>
+ <span class="return">Return value:</span>
+ </p>
+ A <a href="#::SpeechRecognitionAlternative"><span class="typ">SpeechRecognitionAlternative</span></a> object.
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+
+ <div class="interface" id="::SpeechRecognitionResultList">
+ <h3>2.7. SpeechRecognitionResultList</h3>
+ <div class="brief">The SpeechRecognitionResult object represents
+ a single one-shot recognition match, either as one small part of a
+ continuous recognition or as the complete return result of a
+ non-continuous recognition.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface SpeechRecognitionResultList {
+
+ readonly attribute unsigned long length;
+
+ <a href="#::SpeechRecognitionResult"><span class="typ">SpeechRecognitionResult</span></a> item(unsigned long index);
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::SpeechRecognitionResultList::length"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">unsigned long </span><span
+ class="name">length</span></span>
+ <div class="brief">An attribute to indicate how many results
+ are represented in the item array.</div></li>
+ </ul>
+ </div>
+
+ <div class="methods">
+ <h4>Methods</h4>
+
+ <dl>
+ <dt class="method" id="::SpeechRecognitionResultList::item">
+ <span class="methodName">item</span>
+ </dt>
+ <dd>
+ <div class="brief">Returns a SpeechRecognitionResult from the
+ index into an array of result values. If index is greater than or
+ equal to length, returns null.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+SpeechRecognitionResult item(unsigned long index);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">index</span>: An index of the <a href="#::SpeechRecognitionResult"><span class="typ">SpeechRecognitionResult</span></a> array.</li>
+ </ul>
+ </div>
+ <div class="returntype">
+ <p>
+ <span class="return">Return value:</span>
+ </p>
+ A <a href="#::SpeechRecognitionResult"><span class="typ">SpeechRecognitionResult</span></a> object.
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+
+ <div class="interface" id="::SpeechRecognitionEvent">
+ <h3>2.8. SpeechRecognitionEvent</h3>
+ <div class="brief">The SpeechRecognitionEvent is the event that
+ is raised each time there are any changes to interim or final
+ results.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface SpeechRecognitionEvent : Event {
+
+ readonly attribute unsigned long resultIndex;
+
+ readonly attribute <a href="#::SpeechRecognitionResultList"><span class="typ">SpeechRecognitionResultList</span></a> results;
+
+ readonly attribute any interpretation;
+
+ readonly attribute Document emma;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::SpeechRecognitionEvent::length"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">unsigned long </span><span
+ class="name">resultIndex</span></span>
+ <div class="brief">An attribute to get the lowest index in
+ the results array that has changed.</div></li>
+ <li class="attribute" id="::SpeechRecognitionEvent::results"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">SpeechRecognitionResultList
+ </span><span class="name">results</span></span>
+ <div class="brief">An attribute to get all current
+ recognition results for this session.</div></li>
+ <li class="attribute" id="::SpeechRecognitionEvent::interpretation"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">any </span><span
+ class="name">interpretation</span></span>
+ <div class="brief">An attribute to represent the semantic
+ meaning from what the user said.</div></li>
+ <li class="attribute" id="::SpeechRecognitionEvent::emma"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">Document </span><span
+ class="name">emma</span></span>
+ <div class="brief">An attribute to get emma.</div></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="interface" id="::SpeechGrammar">
+ <h3>2.9. SpeechGrammar</h3>
+ <div class="brief">The SpeechGrammar object represents a
+ container for a grammar.</div>
+<pre class="webidl prettyprint">
+[Constructor()]
+
+interface SpeechGrammar {
+
+ attribute DOMString src;
+
+ attribute float weight;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::SpeechGrammar::src"><span
+ class="attrName"><span class="type">DOMString </span><span
+ class="name">src</span></span>
+ <div class="brief">An attribute to get the URI for the
+ grammar.</div></li>
+ <li class="attribute" id="::SpeechGrammar::weight"><span
+ class="attrName"><span class="type">float </span><span
+ class="name">weight</span></span>
+ <div class="brief">An attribute to control the weight that
+ the speech recognition service should use with this grammar. By
+ default, a grammar has a weight of 1.</div></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="interface" id="::SpeechGrammarList">
+ <h3>2.10. SpeechGrammarList</h3>
+ <div class="brief">The SpeechGrammarList object represents a
+ collection of SpeechGrammar objects.</div>
+<pre class="webidl prettyprint">
+[Constructor()]
+
+interface SpeechGrammarList {
+
+ readonly attribute unsigned long length;
+
+ <a href="#::SpeechGrammar"><span class="typ">SpeechGrammar</span></a> item(unsigned long index);
+
+ void addFromURI(DOMString src, optional float weight);
+
+ void addFromString(DOMString string, optional float weight);
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::SpeechGrammarList::length"><span
+ class="attrName"><span class="readonly">readonly </span><span class="type">unsigned long </span><span
+ class="name">length</span></span>
+ <div class="brief">An attribute to represent how many
+ grammars are currently in the array.</div></li>
+ </ul>
+ </div>
+
+ <div class="methods">
+ <h4>Methods</h4>
+
+ <dl>
+ <dt class="method" id="::SpeechGrammarList::item">
+ <span class="methodName">item</span>
+ </dt>
+ <dd>
+ <div class="brief">Returns a SpeechGrammar from the index
+ into an array of grammars.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+SpeechGrammar item(unsigned long index);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">index</span>: An index of the <a href="#::SpeechGrammar"><span class="typ">SpeechGrammar</span></a> array.</li>
+ </ul>
+ </div>
+ <div class="returntype">
+ <p>
+ <span class="return">Return value:</span>
+ </p>
+ A <a href="#::SpeechGrammar"><span class="typ">SpeechGrammar</span></a> object.
+ </div>
+ </dd>
+ <dt class="method" id="::SpeechGrammarList::addFromURI">
+ <span class="methodName">addFromURI</span>
+ </dt>
+ <dd>
+ <div class="brief">Appends a grammar to the grammars array
+ parameter based on URI.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void addFromURI(DOMString src, optional float weight);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">src</span>: The URI for the grammar.</li>
+ <li class="param"><span class="name">weight[optional]</span>: The weight the grammar.</li>
+ </ul>
+ </div>
+ </dd>
+ <dt class="method" id="::SpeechGrammarList::addFromString">
+ <span class="methodName">addFromString</span>
+ </dt>
+ <dd>
+ <div class="brief">Appends a grammar to the grammars array
+ parameter based on text.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void addFromString(DOMString string, optional float weight);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">string</span>: The string for the grammar.</li>
+ <li class="param"><span class="name">weight[optional]</span>: The weight the grammar.</li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+
+ <!-- -------------------------------- -->
+ <h2 id="full-webidl">3. Full WebIDL</h2>
+<pre class="webidl prettyprint">
+module Speech {
+
+ enum ErrorCode {"no-speech", "aborted", "audio-capture", "network", "not-allowed", "service-not-allowed", "bad-grammar", "language-not-supported"};
+
+ [NoInterfaceObject] interface SpeechManagerObject {
+ readonly attribute SpeechManager speech;
+ };
+
+ Tizen implements SpeechManagerObject;
+
+ [NoInterfaceObject] interface SpeechManager {
+
+ void vocalizeString(DOMString speakString);
+
+ };
+
+ [Constructor()]
+
+ interface SpeechRecognition : EventTarget {
+
+ attribute SpeechGrammarList grammars;
+
+ attribute DOMString lang;
+
+ attribute boolean continuous;
+
+ attribute boolean interimResults;
+
+ attribute unsigned long maxAlternatives;
+
+ attribute DOMString serviceURI;
+
+ void start();
+
+ void stop();
+
+ void abort();
+
+ attribute EventHandler onaudiostart;
+
+ attribute EventHandler onsoundstart;
+
+ attribute EventHandler onspeechstart;
+
+ attribute EventHandler onspeechend;
+
+ attribute EventHandler onsoundend;
+
+ attribute EventHandler onaudioend;
+
+ attribute EventHandler onresult;
+
+ attribute EventHandler onnomatch;
+
+ attribute EventHandler onerror;
+
+ attribute EventHandler onstart;
+
+ attribute EventHandler onend;
+
+ };
+
+ [NoInterfaceObject] interface SpeechRecognitionError : Event {
+
+ readonly attribute ErrorCode error;
+
+ readonly attribute DOMString message;
+
+ };
+
+ [NoInterfaceObject] interface SpeechRecognitionAlternative {
+
+ readonly attribute DOMString transcript;
+
+ readonly attribute float confidence;
+
+ };
+
+ [NoInterfaceObject] interface SpeechRecognitionResult {
+
+ readonly attribute unsigned long length;
+
+ SpeechRecognitionAlternative item(unsigned long index);
+
+ readonly attribute boolean final;
+
+ };
+
+ [NoInterfaceObject] interface SpeechRecognitionResultList {
+
+ readonly attribute unsigned long length;
+
+ SpeechRecognitionResult item(unsigned long index);
+
+ };
+
+ [NoInterfaceObject] interface SpeechRecognitionEvent : Event {
+
+ readonly attribute unsigned long resultIndex;
+
+ readonly attribute SpeechRecognitionResultList results;
+
+ readonly attribute any interpretation;
+
+ readonly attribute Document emma;
+
+ };
+
+ [Constructor()]
+
+ interface SpeechGrammar {
+
+ attribute DOMString src;
+
+ attribute float weight;
+
+ };
+
+ [Constructor()]
+
+ interface SpeechGrammarList {
+
+ readonly attribute unsigned long length;
+
+ SpeechGrammar item(unsigned long index);
+
+ void addFromURI(DOMString src, optional float weight);
+
+ void addFromString(DOMString string, optional float weight);
+
+ };
+};
+</pre>
+ <div id="footer">
+ <div class="copyright" align="center">
+ Except as noted, this content - excluding the Code Examples - is
+ licensed under <a
+ href="http://creativecommons.org/licenses/by/3.0/legalcode"
+ target="_blank">Creative Commons Attribution 3.0</a> and all of the
+ Code Examples contained herein are licensed under <a
+ href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.
+ <br>For details, see the <a
+ href="https://www.tizen.org/content-license" target="_blank">Content
+ License</a>.
+ </div>
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push([ '_setAccount', 'UA-25976949-1' ]);
+ _gaq.push([ '_setDomainName', 'tizen.org' ]);
+ _gaq.push([ '_trackPageview' ]);
+
+ (function() {
+ var ga = document.createElement('script');
+ ga.type = 'text/javascript';
+ ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl'
+ : 'http://www')
+ + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+ </div>
+</body>
+</html>
diff --git a/html/Vehicle.html b/html/Vehicle.html
new file mode 100644
index 0000000..156de4b
--- /dev/null
+++ b/html/Vehicle.html
@@ -0,0 +1,3351 @@
+<!DOCTYPE html PUBLIC "html">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+<script type="text/javascript" src="snippet.js"></script>
+<title>Vehicle API</title>
+</head>
+<body id="content" onload="prettyPrint()">
+ <div class="api" id="::Vehicle">
+ <div class="title">
+ <h1>Vehicle API</h1>
+ </div>
+ <div class="description">
+ <p>Allows access to the vehicle API.</p>
+ </div>
+ <!-- -------------------------------- -->
+ <h2>Table of Contents</h2>
+ <ul class="toc">
+ <li>1. <a href="#interfaces">Interfaces</a>
+ <ul class="toc">
+ <li>1.1. <a href="#::Vehicle::VehicleManagerObject">VehicleManagerObject</a>
+ </li>
+ <li>1.2. <a href="#::Vehicle::Vehicle">Vehicle</a>
+ </li>
+ <li>1.3. <a href="#::Vehicle::VehiclePropertyType">VehiclePropertyType</a>
+ </li>
+ <li>1.4. <a href="#::Vehicle::VehiclePropertyError">VehiclePropertyError</a>
+ </li>
+ <li>1.5. <a href="#::Vehicle::VehicleSpeed">VehicleSpeed</a>
+ </li>
+ <li>1.6. <a href="#::Vehicle::EngineSpeed">EngineSpeed</a>
+ </li>
+ <li>1.7. <a href="#::Vehicle::VehiclePowerMode">VehiclePowerMode</a>
+ </li>
+ <li>1.8. <a href="#::Vehicle::TripMeter">TripMeter</a>
+ </li>
+ <li>1.9. <a href="#::Vehicle::Acceleration">Acceleration</a>
+ </li>
+ <li>1.10. <a href="#::Vehicle::Transmission">Transmission</a>
+ </li>
+ <li>1.11. <a href="#::Vehicle::CruiseControlStatus">CruiseControlStatus</a>
+ </li>
+ <li>1.12. <a href="#::Vehicle::WheelBrake">WheelBrake</a>
+ </li>
+ <li>1.13. <a href="#::Vehicle::LightStatus">LightStatus</a>
+ </li>
+ <li>1.14. <a href="#::Vehicle::InteriorLightStatus">InteriorLightStatus</a>
+ </li>
+ <li>1.15. <a href="#::Vehicle::Horn">Horn</a>
+ </li>
+ <li>1.16. <a href="#::Vehicle::Fuel">Fuel</a>
+ </li>
+ <li>1.17. <a href="#::Vehicle::EngineOil">EngineOil</a>
+ </li>
+ <li>1.18. <a href="#::Vehicle::Location">Location</a>
+ </li>
+ <li>1.19. <a href="#::Vehicle::ExteriorBrightness">ExteriorBrightness</a>
+ </li>
+ <li>1.20. <a href="#::Vehicle::Temperature">Temperature</a>
+ </li>
+ <li>1.21. <a href="#::Vehicle::RainSensor">RainSensor</a>
+ </li>
+ <li>1.22. <a href="#::Vehicle::WindshieldWiper">WindshieldWiper</a>
+ </li>
+ <li>1.23. <a href="#::Vehicle::HVAC">HVAC</a>
+ </li>
+ <li>1.24. <a href="#::Vehicle::WindowStatus">WindowStatus</a>
+ </li>
+ <li>1.25. <a href="#::Vehicle::Sunroof">Sunroof</a>
+ </li>
+ <li>1.26. <a href="#::Vehicle::ConvertibleRoof">ConvertibleRoof</a>
+ </li>
+ <li>1.27. <a href="#::Vehicle::VehicleId">VehicleId</a>
+ </li>
+ <li>1.28. <a href="#::Vehicle::Size">Size</a>
+ </li>
+ <li>1.29. <a href="#::Vehicle::FuelInfo">FuelInfo</a>
+ </li>
+ <li>1.30. <a href="#::Vehicle::VehicleType">VehicleType</a>
+ </li>
+ <li>1.31. <a href="#::Vehicle::Doors">Doors</a>
+ </li>
+ <li>1.32. <a href="#::Vehicle::TransmissionGearType">TransmissionGearType</a>
+ </li>
+ <li>1.33. <a href="#::Vehicle::WheelInformation">WheelInformation</a>
+ </li>
+ <li>1.34. <a href="#::Vehicle::Odometer">Odometer</a>
+ </li>
+ <li>1.35. <a href="#::Vehicle::Fluid">Fluid</a>
+ </li>
+ <li>1.36. <a href="#::Vehicle::Battery">Battery</a>
+ </li>
+ <li>1.37. <a href="#::Vehicle::TirePressure">TirePressure</a>
+ </li>
+ <li>1.38. <a href="#::Vehicle::TireTemperature">TireTemperature</a>
+ </li>
+ <li>1.39. <a href="#::Vehicle::SecurityAlert">SecurityAlert</a>
+ </li>
+ <li>1.40. <a href="#::Vehicle::ParkingBrake">ParkingBrake</a>
+ </li>
+ <li>1.41. <a href="#::Vehicle::ParkingLight">ParkingLight</a>
+ </li>
+ <li>1.42. <a href="#::Vehicle::HazardLight">HazardLight</a>
+ </li>
+ <li>1.43. <a href="#::Vehicle::AntilockBrakingSystem">AntilockBrakingSystem</a>
+ </li>
+ <li>1.44. <a href="#::Vehicle::TractionControlSystem">TractionControlSystem</a>
+ </li>
+ <li>1.45. <a href="#::Vehicle::VehicleTopSpeedLimit">VehicleTopSpeedLimit</a>
+ </li>
+ <li>1.46. <a href="#::Vehicle::AirbagStatus">AirbagStatus</a>
+ </li>
+ <li>1.47. <a href="#::Vehicle::DoorStatus">DoorStatus</a>
+ </li>
+ <li>1.48. <a href="#::Vehicle::SeatBeltStatus">SeatBeltStatus</a>
+ </li>
+ <li>1.49. <a href="#::Vehicle::OccupantStatus">OccupantStatus</a>
+ </li>
+ <li>1.50. <a href="#::Vehicle::ObstacleDistance">ObstacleDistance</a>
+ </li>
+ <li>1.51. <a href="#::Vehicle::NightMode">NightMode</a>
+ </li>
+ <li>1.52. <a href="#::Vehicle::DrivingMode">DrivingMode</a>
+ </li>
+ <li>1.53. <a href="#::Vehicle::VehiclePropertyCallback">VehiclePropertyCallback</a>
+ </li>
+ <li>1.54. <a href="#::Vehicle::VehiclePropertyErrorCallback">VehiclePropertyErrorCallback</a>
+ </li>
+ <li>1.55. <a href="#::Vehicle::VehiclePropertyListCallback">VehiclePropertyListCallback</a>
+ </li>
+ <li>1.56. <a href="#::Vehicle::SupportedPropertiesCallback">SupportedPropertiesCallback</a>
+ </li>
+ <li>1.57. <a href="#::Vehicle::DefrostDictionary">DefrostDictionary</a>
+ </li>
+ </ul>
+ </li>
+ <li>2. <a href="#full-webidl">Full WebIDL</a>
+ </li>
+ </ul>
+
+ <hr>
+ <!-- -------------------------------- -->
+
+ <h2 id="method-summary">Summary of Interfaces and Methods</h2>
+ <table class="informaltable">
+ <thead>
+ <tr>
+ <th>Interface</th>
+ <th>Method</th>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::VehicleManagerObject"> VehicleManagerObject</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Vehicle"> Vehicle</a></td>
+ <td>
+ DOMString[] <a href="#::Vehicle::Vehicle::supported">supported</a>(); <br>
+ any <a href="#::Vehicle::Vehicle::get">get</a>(DOMString objectType, optional short zone); <br>
+ void <a href="#::Vehicle::Vehicle::getAsync">getAsync</a>(DOMString objectType, <a href="#::Vehicle::VehiclePropertyCallback"><span class="typ">VehiclePropertyCallback</span></a> successCallback, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback, optional short zone); <br>
+ void <a href="#::Vehicle::Vehicle::subscribe">subscribe</a>(DOMString objectType, <a href="#::Vehicle::VehiclePropertyCallback"><span class="typ">VehiclePropertyCallback</span></a> successCallback, optional unsigned short zone, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback); <br>
+ void <a href="#::Vehicle::Vehicle::set">set</a>(DOMString objectType, object value, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback); <br>
+ void <a href="#::Vehicle::Vehicle::getHistory">getHistory</a>(DOMString objectType, unsigned short zone, Date startTime, Date endTime, <a href="#::Vehicle::VehiclePropertyListCallback"><span class="typ">VehiclePropertyListCallback</span></a> successCallback, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback); <br>
+ unsigned short[] <a href="#::Vehicle::Vehicle::listZones">listZones</a>(DOMString objectType);</td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::VehiclePropertyType"> VehiclePropertyType</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::VehiclePropertyError"> VehiclePropertyError</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::VehicleSpeed"> VehicleSpeed</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::EngineSpeed"> EngineSpeed</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::VehiclePowerMode"> VehiclePowerMode</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::TripMeter"> TripMeter</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Acceleration"> Acceleration</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Transmission"> Transmission</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::CruiseControlStatus"> CruiseControlStatus</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::WheelBrake"> WheelBrake</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::LightStatus"> LightStatus</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::InteriorLightStatus"> InteriorLightStatus</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Horn"> Horn</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Fuel"> Fuel</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::EngineOil"> EngineOil</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Location"> Location</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::ExteriorBrightness"> ExteriorBrightness</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Temperature"> Temperature</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::RainSensor"> RainSensor</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::WindshieldWiper"> WindshieldWiper</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::HVAC"> HVAC</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::WindowStatus"> WindowStatus</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Sunroof"> Sunroof</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::ConvertibleRoof"> ConvertibleRoof</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::VehicleId"> VehicleId</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Size"> Size</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::FuelInfo"> FuelInfo</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::VehicleType"> VehicleType</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Doors"> Doors</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::TransmissionGearType"> TransmissionGearType</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::WheelInformation"> WheelInformation</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Odometer"> Odometer</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Fluid"> Fluid</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::Battery"> Battery</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::TirePressure"> TirePressure</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::TireTemperature"> TireTemperature</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::SecurityAlert"> SecurityAlert</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::ParkingBrake"> ParkingBrake</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::ParkingLight"> ParkingLight</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::HazardLight"> HazardLight</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::AntilockBrakingSystem"> AntilockBrakingSystem</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::TractionControlSystem"> TractionControlSystem</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::VehicleTopSpeedLimit"> VehicleTopSpeedLimit</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::AirbagStatus"> AirbagStatus</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::DoorStatus"> DoorStatus</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::SeatBeltStatus"> SeatBeltStatus</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::OccupantStatus"> OccupantStatus</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::ObstacleDistance"> ObstacleDistance</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::NightMode"> NightMode</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::DrivingMode"> DrivingMode</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::VehiclePropertyCallback"> VehiclePropertyCallback</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::VehiclePropertyErrorCallback"> VehiclePropertyErrorCallback</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::VehiclePropertyListCallback"> VehiclePropertyListCallback</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::SupportedPropertiesCallback"> SupportedPropertiesCallback</a></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="#::Vehicle::DefrostDictionary"> DefrostDictionary</a></td>
+ <td></td>
+ </tr>
+ </thead>
+ <tbody></tbody>
+ </table>
+ <!-- -------------------------------- -->
+
+ <div class="interfaces" id="interfaces">
+ <h2>1. Interfaces</h2>
+ <div class="interface" id="::Vehicle::VehicleManagerObject">
+ <h3>1.1. VehicleManagerObject</h3>
+ <div class="brief">This interface defines what is instantiated
+ by the Tizen object by the Tizen Platform. There will be a
+ tizen.vehicle object that allows access to the functionality of the
+ Vehicle API.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface VehicleManagerObject {
+ readonly attribute <a href="#::Vehicle::Vehicle"><span class="typ">Vehicle</span></a> vehicle;
+};</pre>
+<pre class="webidl prettyprint">Tizen implements VehicleManagerObject;</pre>
+ </div>
+
+ <div class="interface" id="::Vehicle::Vehicle">
+ <h3>1.2. Vehicle</h3>
+ <div class="brief">The Vehicle interface defines access to vehicle functionality.</div>
+ <pre class="webidl prettyprint">
+[NoInterfaceObject] interface Vehicle {
+
+ const unsigned short ZONE_None = 0;
+
+ const unsigned short ZONE_Front = 0x01;
+
+ const unsigned short ZONE_Middle = 0x02;
+
+ const unsigned short ZONE_Right = 0x04;
+
+ const unsigned short ZONE_Left = 0x08;
+
+ const unsigned short ZONE_Rear = 0x10;
+
+ const unsigned short ZONE_Center = 0x20;
+
+ DOMString[] supported();
+
+ any get(DOMString objectType, optional short zone);
+
+ void getAsync(DOMString objectType, <a href="#::Vehicle::VehiclePropertyCallback"><span class="typ">VehiclePropertyCallback</span></a> successCallback, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback, optional short zone);
+
+ void subscribe(DOMString objectType, <a href="#::Vehicle::VehiclePropertyCallback"><span class="typ">VehiclePropertyCallback</span></a> successCallback, optional unsigned short zone, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback);
+
+ void set(DOMString objectType, object value, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback);
+
+ void getHistory(DOMString objectType, unsigned short zone, Date startTime, Date endTime, <a href="#::Vehicle::VehiclePropertyListCallback"><span class="typ">VehiclePropertyListCallback</span></a> successCallback, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback);
+
+ unsigned short[] listZones(DOMString objectType);
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::Vehicle::ZONE_None"><span
+ class="name">ZONE_None</span>
+ <div class="brief">It defines a vehicle property zone that represents all direction zones.</div></li>
+ <li class="const" id="::Vehicle::Vehicle::ZONE_Front"><span
+ class="name">ZONE_Front</span>
+ <div class="brief">It defines a vehicle property zone that represents the front zone.</div></li>
+ <li class="const" id="::Vehicle::Vehicle::ZONE_Middle"><span
+ class="name">ZONE_Middle</span>
+ <div class="brief">It defines a vehicle property zone that represents the middle zone.</div></li>
+ <li class="const" id="::Vehicle::Vehicle::ZONE_Right"><span
+ class="name">ZONE_Right</span>
+ <div class="brief">It defines a vehicle property zone that represents the right zone.</div></li>
+ <li class="const" id="::Vehicle::Vehicle::ZONE_Left"><span
+ class="name">ZONE_Left</span>
+ <div class="brief">It defines a vehicle property zone that represents the left zone.</div></li>
+ <li class="const" id="::Vehicle::Vehicle::ZONE_Rear"><span
+ class="name">ZONE_Rear</span>
+ <div class="brief">It defines a vehicle property zone that represents the rear zone.</div></li>
+ <li class="const" id="::Vehicle::Vehicle::ZONE_Center"><span
+ class="name">ZONE_Center</span>
+ <div class="brief">It defines a vehicle property zone that represents the center zone.</div></li>
+ </ul>
+ </div>
+ <div class="methods">
+ <h4>Methods</h4>
+
+ <dl>
+ <dt class="method" id="::Vehicle::Vehicle::supported">
+ <span class="methodName">supported</span>
+ </dt>
+ <dd>
+ <div class="brief">Returns supported vehicle property types.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+DOMString[] supported();
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="returntype">
+ <p>
+ <span class="return">Return value:</span>
+ </p>
+ A vehicle property type array.
+ </div>
+ </dd>
+ <dt class="method" id="::Vehicle::Vehicle::get">
+ <span class="methodName">get</span>
+ </dt>
+ <dd>
+ <div class="brief">Fetches the current value for the vehicle property type.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+any get(DOMString objectType, optional short zone);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">objectType</span>: The requested vehicle property type to be retrieved, i.e., "NightMode".</li>
+ <li class="param"><span class="name">zone[optional]</span>: The specific zone in which the vehicle property type is in.</li>
+ </ul>
+ </div>
+ <div class="returntype">
+ <p>
+ <span class="return">Return value:</span>
+ </p>
+ A vehicle property value object.
+ </div>
+ </dd>
+ <dt class="method" id="::Vehicle::Vehicle::getAsync">
+ <span class="methodName">getAsync</span>
+ </dt>
+ <dd>
+ <div class="brief">Asynchronously fetches the current value for the vehicle property type.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void getAsync(DOMString objectType, <a href="#::Vehicle::VehiclePropertyCallback"><span class="typ">VehiclePropertyCallback</span></a> successCallback, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback, optional short zone);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">objectType</span>: The requested vehicle property type to be retrieved, i.e., "Horn".</li>
+ <li class="param"><span class="name">VehiclePropertyCallback</span>: The method to call when the requested vehicle property type is valid.</li>
+ <li class="param"><span class="name">errorCallback[optional]</span>: The method to call when an error occurs.</li>
+ <li class="param"><span class="name">zone[optional]</span>: The specific zone in which the vehicle property type is in.</li>
+ </ul>
+ </div>
+ </dd>
+ <dt class="method" id="::Vehicle::Vehicle::subscribe">
+ <span class="methodName">subscribe</span>
+ </dt>
+ <dd>
+ <div class="brief">Subscribes to the given property and get callbacks when it changes.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void subscribe(DOMString objectType, <a href="#::Vehicle::VehiclePropertyCallback"><span class="typ">VehiclePropertyCallback</span></a> successCallback, optional unsigned short zone, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">objectType</span>: The requested vehicle property type to be retrieved, i.e., "Transmission".</li>
+ <li class="param"><span class="name">successCallback</span>: The method to call when the requested vehicle property value is changed.</li>
+ <li class="param"><span class="name">zone[optional]</span>: The specific zone in which the vehicle property type is in.</li>
+ <li class="param"><span class="name">errorCallback[optional]</span>: The method to call when an error occurs.</li>
+ </ul>
+ </div>
+ </dd>
+ <dt class="method" id="::Vehicle::Vehicle::set">
+ <span class="methodName">set</span>
+ </dt>
+ <dd>
+ <div class="brief">Sets value for the given object type.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void set(DOMString objectType, object value, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">objectType</span>: The vehicle property type to be set, i.e., "EngineSpeed".</li>
+ <li class="param"><span class="name">value</span>: The vehicle property value to be set, that contains zone information i.e., "Zone": 0.</li>
+ <li class="param"><span class="name">errorCallback[optional]</span>: The method to call when an error occurs.</li>
+ </ul>
+ </div>
+ </dd>
+ <dt class="method" id="::Vehicle::Vehicle::getHistory">
+ <span class="methodName">getHistory</span>
+ </dt>
+ <dd>
+ <div class="brief">Gets values for a given objectType within
+ a certain past time period between 'startTime' and 'endTime'.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void getHistory(DOMString objectType, unsigned short zone, Date startTime, Date endTime, <a href="#::Vehicle::VehiclePropertyListCallback"><span class="typ">VehiclePropertyListCallback</span></a> successCallback, optional <a href="#::Vehicle::VehiclePropertyErrorCallback"><span class="typ">VehiclePropertyErrorCallback</span></a> errorCallback);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">objectType</span>: The requested vehicle property type to be retrieved, i.e., "VehicleSpeed".</li>
+ <li class="param"><span class="name">zone</span>: The specific zone in which the vehicle type is located or 0 if no zone.</li>
+ <li class="param"><span class="name">startTime</span>: Starting period of time.</li>
+ <li class="param"><span class="name">endTime</span>: Ending period of time.</li>
+ <li class="param"><span class="name">successCallback</span>: Callback with the result of the method call.</li>
+ <li class="param"><span class="name">errorCallback[optional]</span>: The method to call when an error occurs.</li>
+ </ul>
+ </div>
+ </dd>
+ <dt class="method" id="::Vehicle::Vehicle::listZones">
+ <span class="methodName">listZones</span>
+ </dt>
+ <dd>
+ <div class="brief">
+ Lists zones available for a given object type.
+ </div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+unsigned short[] listZones(DOMString objectType);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">objectType</span>: The requested vehicle property type to be retrieved, i.e., "HVAC".</li>
+ </ul>
+ </div>
+ <div class="returntype">
+ <p>
+ <span class="return">Return value:</span>
+ </p>
+ An array.
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::VehiclePropertyType">
+ <h3>1.3. VehiclePropertyType</h3>
+ <div class="brief">The interface defines vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface VehiclePropertyType : Event {
+
+ attribute DOMTimeStamp time;
+
+ attribute short zone;
+
+ attribute DOMString source;
+
+};
+</pre>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::VehiclePropertyType::time"><span class="attrName"><span
+ class="type">DOMTimeStamp </span><span class="name">time</span></span>
+ <div class="brief">An attribute to set time of generating the vehicle property.</div></li>
+ <li class="attribute" id="::Vehicle::VehiclePropertyType::zone"><span class="attrName"><span
+ class="type">short </span><span class="name">zone</span></span>
+ <div class="brief">An attribute to set zone of the vehicle property. By default, this attribute is set to 0.</div></li>
+ <li class="attribute" id="::Vehicle::VehiclePropertyType::source"><span class="attrName"><span
+ class="type">DOMString </span><span class="name">source</span></span>
+ <div class="brief">An attribute to set source of the vehicle property. By default, this attribute is set to 0.</div></li>
+ </ul>
+ </div>
+
+ </div>
+
+ <div class="interface" id="::Vehicle::VehiclePropertyError">
+ <h3>1.4. VehiclePropertyError</h3>
+ <div class="brief">The interface defines vehicle property error code and message.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface VehiclePropertyError {
+
+ const unsigned short PERMISSION_DENIED = 1;
+
+ const unsigned short PROPERTY_UNAVAILABLE = 2;
+
+ const unsigned short TIMEOUT = 3;
+
+ const unsigned short UNKNOWN = 10;
+
+ attribute unsigned short code;
+
+ attribute DOMString message;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::VehiclePropertyError::PERMISSION_DENIED"><span
+ class="name">PERMISSION_DENIED</span>
+ <div class="brief">It defines an error code of no accessing permissions.</div></li>
+ <li class="const" id="::Vehicle::VehiclePropertyError::PROPERTY_UNAVAILABLE"><span
+ class="name">PROPERTY_UNAVAILABLE</span>
+ <div class="brief">It defines an error code of unsupported property.</div></li>
+ <li class="const" id="::Vehicle::VehiclePropertyError::TIMEOUT"><span
+ class="name">TIMEOUT</span>
+ <div class="brief">It defines an error code of accessing timeout.</div></li>
+ <li class="const" id="::Vehicle::VehiclePropertyError::UNKNOWN"><span
+ class="name">UNKNOWN</span>
+ <div class="brief">It defines an error code of unknown errors.</div></li>
+ </ul>
+ </div>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::VehiclePropertyError::code"><span class="attrName"><span
+ class="type">unsigned short </span><span class="name">code</span></span>
+ <div class="brief">An attribute to return an error code from PERMISSION_DENIED, PROPERTY_UNAVAILABLE, TIMEOUT and UNKNOWN.</div></li>
+ <li class="attribute" id="::Vehicle::VehiclePropertyError::message"><span class="attrName"><span
+ class="type">DOMString </span><span class="name">time</span></span>
+ <div class="brief">An attribute to return error message.</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::VehicleSpeed">
+ <h3>1.5. VehicleSpeed</h3>
+ <div class="brief">The interface defines vehicle speed of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface VehicleSpeed : VehiclePropertyType {
+
+ attribute unsigned long vehicleSpeed;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::VehicleSpeed::vehicleSpeed"><span class="attrName"><span
+ class="type">unsigned long</span><span class="name"> vehicleSpeed</span></span>
+ <div class="brief">An attribute to return vehicle speed in kilometers per hour.</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::EngineSpeed">
+ <h3>1.6. EngineSpeed</h3>
+ <div class="brief">The interface defines engine speed of vehicle property type.</div>
+ <pre class="webidl prettyprint">
+[NoInterfaceObject] interface EngineSpeed : VehiclePropertyType {
+
+ attribute unsigned long engineSpeed;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::EngineSpeed::engineSpeed"><span class="attrName"><span
+ class="type">unsigned long</span><span class="name"> engineSpeed</span></span>
+ <div class="brief">An attribute to return engine speed in rotations per minute.</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::VehiclePowerMode">
+ <h3>1.7. VehiclePowerMode</h3>
+ <div class="brief">The interface defines vehicle power mode of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface VehiclePowerMode : VehiclePropertyType {
+
+ const unsigned short VEHICLEPOWERMODE_OFF = 0;
+
+ const unsigned short VEHICLEPOWERMODE_ACCESSORY1 = 1;
+
+ const unsigned short VEHICLEPOWERMODE_ACCESSORY2 = 2;
+
+ const unsigned short VEHICLEPOWERMODE_RUN = 3;
+
+ attribute octet vehiclePowerMode;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::VehiclePowerMode::VEHICLEPOWERMODE_OFF"><span
+ class="name">VEHICLEPOWERMODE_OFF</span>
+ <div class="brief">It defines a vehicle power mode that represents off mode.</div></li>
+ <li class="const" id="::Vehicle::VehiclePowerMode::VEHICLEPOWERMODE_ACCESSORY1"><span
+ class="name">VEHICLEPOWERMODE_ACCESSORY1</span>
+ <div class="brief">It defines a vehicle power mode that represents accessory1 mode.</div></li>
+ <li class="const" id="::Vehicle::VehiclePowerMode::VEHICLEPOWERMODE_ACCESSORY2"><span
+ class="name">VEHICLEPOWERMODE_ACCESSORY2</span>
+ <div class="brief">It defines a vehicle power mode that represents accessory2 mode.</div></li>
+ <li class="const" id="::Vehicle::VehiclePowerMode::VEHICLEPOWERMODE_RUN"><span
+ class="name">VEHICLEPOWERMODE_RUN</span>
+ <div class="brief">It defines a vehicle power mode that represents run mode.</div></li>
+ </ul>
+ </div>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::VehiclePowerMode::vehiclePowerMode"><span class="attrName"><span
+ class="type">octet</span><span class="name"> vehiclePowerMode</span></span>
+ <div class="brief">An attribute to return vehicle power mode (see VEHICLEPOWERMODE Constants).</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::TripMeter">
+ <h3>1.8. TripMeter</h3>
+ <div class="brief">The interface defines trip meter of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface TripMeter : VehiclePropertyType {
+
+ attribute unsigned long[] tripMeters;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::TripMeter::tripMeters"><span class="attrName">
+ <span class="type">unsigned long[]</span><span class="name"> tripMeters</span></span>
+ <div class="brief">An attribute to return trip meters. Changing any items in the array will reset the item's value to '0'.</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::Acceleration">
+ <h3>1.9. Acceleration</h3>
+ <div class="brief">The interface defines acceleration of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface Acceleration : VehiclePropertyType {
+
+ attribute unsigned long x;
+
+ attribute unsigned long y;
+
+ attribute unsigned long z;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::Acceleration::x"><span class="attrName"><span
+ class="type">unsigned long</span><span class="name"> x</span></span>
+ <div class="brief">An attribute to return acceleration on the "X" axis as 1/1000 G (gravitational force).</div></li>
+ <li class="attribute" id="::Vehicle::Acceleration::y"><span class="attrName"><span
+ class="type">unsigned long</span><span class="name"> y</span></span>
+ <div class="brief">An attribute to return acceleration on the "Y" axis as 1/1000 G (gravitational force).</div></li>
+ <li class="attribute" id="::Vehicle::Acceleration::z"><span class="attrName"><span
+ class="type">unsigned long</span><span class="name"> z</span></span>
+ <div class="brief">An attribute to return acceleration on the "Z" axis as 1/1000 G (gravitational force).</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::Transmission">
+ <h3>1.10. Transmission</h3>
+ <div class="brief">The interface defines transmission of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface Transmission : VehiclePropertyType {
+
+ const unsigned short TRANSMISSIONPOSITION_NEUTRAL = 0;
+
+ const unsigned short TRANSMISSIONPOSITION_FIRST = 1;
+
+ const unsigned short TRANSMISSIONPOSITION_SECOND = 2;
+
+ const unsigned short TRANSMISSIONPOSITION_THIRD = 3;
+
+ const unsigned short TRANSMISSIONPOSITION_FORTH = 4;
+
+ const unsigned short TRANSMISSIONPOSITION_FIFTH = 5;
+
+ const unsigned short TRANSMISSIONPOSITION_SIXTH = 6;
+
+ const unsigned short TRANSMISSIONPOSITION_SEVENTH = 7;
+
+ const unsigned short TRANSMISSIONPOSITION_EIGHTH = 8;
+
+ const unsigned short TRANSMISSIONPOSITION_NINTH = 9;
+
+ const unsigned short TRANSMISSIONPOSITION_TENTH = 10;
+
+ const unsigned short TRANSMISSIONPOSITION_CVT = 64;
+
+ const unsigned short TRANSMISSIONPOSITION_REVERSE = 128;
+
+ const unsigned short TRANSMISSIONPOSITION_PARK = 255;
+
+ const unsigned short TRANSMISSIONMODE_NORMAL = 0;
+
+ const unsigned short TRANSMISSIONMODE_SPORT = 1;
+
+ const unsigned short TRANSMISSIONMODE_ECONOMY = 2;
+
+ const unsigned short TRANSMISSIONMODE_OEMCUSTOM1 = 3;
+
+ const unsigned short TRANSMISSIONMODE_OEMCUSTOM2 = 4;
+
+ attribute octet gearPosition;
+
+ attribute octet mode;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_NEUTRAL"><span
+ class="name">TRANSMISSIONPOSITION_NEUTRAL</span>
+ <div class="brief">It defines a transmission position that is neutral position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_FIRST"><span
+ class="name">TRANSMISSIONPOSITION_FIRST</span>
+ <div class="brief">It defines a transmission position that is first position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_SECOND"><span
+ class="name">TRANSMISSIONPOSITION_SECOND</span>
+ <div class="brief">It defines a transmission position that is second position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_THIRD"><span
+ class="name">TRANSMISSIONPOSITION_THIRD</span>
+ <div class="brief">It defines a transmission position that is third position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_FORTH"><span
+ class="name">TRANSMISSIONPOSITION_FORTH</span>
+ <div class="brief">It defines a transmission position that is forth position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_FIFTH"><span
+ class="name">TRANSMISSIONPOSITION_FIFTH</span>
+ <div class="brief">It defines a transmission position that is fifth position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_SIXTH"><span
+ class="name">TRANSMISSIONPOSITION_SIXTH</span>
+ <div class="brief">It defines a transmission position that is sixth position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_SEVENTH"><span
+ class="name">TRANSMISSIONPOSITION_SEVENTH</span>
+ <div class="brief">It defines a transmission position that is seventh position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_EIGHTH"><span
+ class="name">TRANSMISSIONPOSITION_EIGHTH</span>
+ <div class="brief">It defines a transmission position that is eighth position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_NINTH"><span
+ class="name">TRANSMISSIONPOSITION_NINTH</span>
+ <div class="brief">It defines a transmission position that is ninth position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_TENTH"><span
+ class="name">TRANSMISSIONPOSITION_TENTH</span>
+ <div class="brief">It defines a transmission position that is tenth position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_CVT"><span
+ class="name">TRANSMISSIONPOSITION_CVT</span>
+ <div class="brief">It defines a transmission position that is cvt position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_REVERSE"><span
+ class="name">TRANSMISSIONPOSITION_REVERSE</span>
+ <div class="brief">It defines a transmission position that is reverse position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONPOSITION_PARK"><span
+ class="name">TRANSMISSIONPOSITION_PARK</span>
+ <div class="brief">It defines a transmission position that is park position.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONMODE_NORMAL"><span
+ class="name">TRANSMISSIONMODE_NORMAL</span>
+ <div class="brief">It defines a transmission mode that represents normal mode.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONMODE_SPORT"><span
+ class="name">TRANSMISSIONMODE_SPORT</span>
+ <div class="brief">It defines a transmission mode that represents sport mode.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONMODE_ECONOMY"><span
+ class="name">TRANSMISSIONMODE_ECONOMY</span>
+ <div class="brief">It defines a transmission mode that represents economy mode.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONMODE_OEMCUSTOM1"><span
+ class="name">TRANSMISSIONMODE_OEMCUSTOM1</span>
+ <div class="brief">It defines a transmission mode that represents oemcustom1 mode.</div></li>
+ <li class="const" id="::Vehicle::Transmission::TRANSMISSIONMODE_OEMCUSTOM2"><span
+ class="name">TRANSMISSIONMODE_OEMCUSTOM2</span>
+ <div class="brief">It defines a transmission mode that represents oemcustom2 mode.</div></li>
+ </ul>
+ </div>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::Transmission::gearPosition"><span class="attrName"><span
+ class="type">octet</span><span class="name"> gearPosition</span></span>
+ <div class="brief">An attribute to return transmission gear position (see TRANSMISSIONPOSITION Constants).</div></li>
+ <li class="attribute" id="::Vehicle::Transmission::mode"><span class="attrName"><span
+ class="type">octet</span><span class="name"> mode</span></span>
+ <div class="brief">An attribute to return transmission mode (see TRANSMISSIONMODE Constants).</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::CruiseControlStatus">
+ <h3>1.11. CruiseControlStatus</h3>
+ <div class="brief">The interface defines cruise control status of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface CruiseControlStatus : VehiclePropertyType {
+
+ attribute boolean activated;
+
+ attribute unsigned short speed;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::CruiseControlStatus::activated"><span class="attrName">
+ <span class="type">boolean</span><span class="name"> activated</span></span>
+ <div class="brief"> An attribute to return whether or not the cruise control system is active (true) or inactive (false).</div></li>
+ <li class="attribute" id="::Vehicle::CruiseControlStatus::speed"><span class="attrName">
+ <span class="type">unsigned short</span><span class="name"> speed</span></span>
+ <div class="brief"> An attribute to return target cruise control speed in kilometers per hour (kph).</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::WheelBrake">
+ <h3>1.12. WheelBrake</h3>
+ <div class="brief">The interface defines wheel brake of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface WheelBrake : VehiclePropertyType {
+
+ attribute boolean engaged;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id=":Vehicle::WheelBrake::engaged"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> engaged</span></span>
+ <div class="brief">An attribute to return wheel brake status, engaged (true) or disengaged (false).</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::LightStatus">
+ <h3>1.13. LightStatus</h3>
+ <div class="brief">The interface defines light status of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface LightStatus : VehiclePropertyType {
+
+ attribute boolean head;
+
+ attribute boolean rightTurn;
+
+ attribute boolean leftTurn;
+
+ attribute boolean brake;
+
+ attribute boolean fog;
+
+ attribute boolean hazard;
+
+ attribute boolean parking;
+
+ attribute boolean highBeam;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id=":Vehicle::LightStatus::head"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> head</span></span>
+ <div class="brief"> An attribute to return headlight status, on (true) or off (false).</div></li>
+ <li class="attribute" id=":Vehicle::LightStatus::rightTurn"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> rightTurn</span></span>
+ <div class="brief"> An attribute to return right turn signal status, on (true) or off (false).</div></li>
+ <li class="attribute" id=":Vehicle::LightStatus::leftTurn"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> leftTurn</span></span>
+ <div class="brief"> An attribute to return left turn signal status, on (true) or off (false).</div></li>
+ <li class="attribute" id=":Vehicle::LightStatus::brake"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> brake</span></span>
+ <div class="brief">An attribute to return brake signal light status, on (true) or off (false).</div></li>
+ <li class="attribute" id=":Vehicle::LightStatus::fog"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> fog</span></span>
+ <div class="brief">An attribute to return fog light status, on (true) or off (false).</div></li>
+ <li class="attribute" id=":Vehicle::LightStatus::hazard"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> hazard</span></span>
+ <div class="brief">An attribute to return hazard light status, on (true) or off (false). </div></li>
+ <li class="attribute" id=":Vehicle::LightStatus::parking"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> parking</span></span>
+ <div class="brief">An attribute to return parking light status, on (true) or off (false).</div></li>
+ <li class="attribute" id=":Vehicle::LightStatus::highBeam"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> highBeam</span></span>
+ <div class="brief">An attribute to return high beam status, on (true) or off (false).</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::InteriorLightStatus">
+ <h3>1.14. InteriorLightStatus</h3>
+ <div class="brief">The interface defines interior light status of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface InteriorLightStatus : VehiclePropertyType {
+
+ attribute boolean passenger;
+
+ attribute boolean driver;
+
+ attribute boolean center;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::InteriorLightStatus::passenger"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> passenger</span></span>
+ <div class="brief">An attribute to return passenger interior light status, on (true) or off (false).</div></li>
+ <li class="attribute" id="::Vehicle::InteriorLightStatus::driver"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> driver</span></span>
+ <div class="brief"> An attribute to return driver interior light status, on (true) or off (false).</div></li>
+ <li class="attribute" id="::Vehicle::InteriorLightStatus::center"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> center</span></span>
+ <div class="brief"> An attribute to return center interior light status, on (true) or off (false).</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::Horn">
+ <h3>1.15. Horn</h3>
+ <div class="brief">The interface defines horn of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface Horn : VehiclePropertyType {
+
+ attribute boolean on;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::Horn::on"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> on</span></span>
+ <div class="brief">An attribute to return horn status, on (true) or off (false).</div></li>
+ </ul>
+ </div>
+ </div>
+ <div class="interface" id="::Vehicle::Fuel">
+ <h3>1.16. Fuel</h3>
+ <div class="brief">The interface defines fuel of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface Fuel : VehiclePropertyType {
+
+ attribute unsigned short level;
+
+ attribute unsigned short range;
+
+ attribute unsigned short instantConsumption;
+
+ attribute unsigned short instantEconomy;
+
+ attribute unsigned short averageEconomy;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::Fuel::level"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> level</span></span>
+ <div class="brief">An attribute to return fuel level as a percentage of fullness.</div></li>
+ <li class="attribute" id="::Vehicle::Fuel::range"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> range</span></span>
+ <div class="brief">An attribute to return estimated fuel range in kilometers.</div></li>
+ <li class="attribute" id="::Vehicle::Fuel::instantConsumption"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> instantConsumption</span></span>
+ <div class="brief">An attribute to return instant fuel consumption in milliliters of fuel per second. </div></li>
+ <li class="attribute" id="::Vehicle::Fuel::instantEconomy"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> instantEconomy</span></span>
+ <div class="brief">An attribute to return instant fuel economy in kilometers per liter of fuel. </div></li>
+ <li class="attribute" id="::Vehicle::Fuel::averageEconomy"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> averageEconomy</span></span>
+ <div class="brief">An attribute to return average fuel economy in kilometers per liter of fuel since last reset.
+ Setting this to any value should reset the counter to 0.</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::EngineOil">
+ <h3>1.17. EngineOil</h3>
+ <div class="brief">The interface defines engine oil of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface EngineOil : VehiclePropertyType {
+
+ attribute unsigned short remaining;
+
+ attribute long temperature;
+
+ attribute unsigned short pressure;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::EngineOil::remaining"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> remaining</span></span>
+ <div class="brief">An attribute to return remaining engine oil as percentage of fullness.</div></li>
+ <li class="attribute" id="::Vehicle::EngineOil::temperature"><span class="attrName"><span
+ class="type">long</span><span class="name"> temperature</span></span>
+ <div class="brief"> An attribute to return engine oil temperature in Celcius.</div></li>
+ <li class="attribute" id="::Vehicle::EngineOil::pressure"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> pressure</span></span>
+ <div class="brief"> An attribute to return engine oil pressure in kpa.</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::Location">
+ <h3>1.18. Location</h3>
+ <div class="brief">The interface defines location of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface Location : VehiclePropertyType {
+
+ attribute double latitude;
+
+ attribute double longitude;
+
+ attribute double altitude;
+
+ attribute unsigned short direction;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::Location::latitude"><span class="attrName"><span
+ class="type">double</span><span class="name"> latitude</span></span>
+ <div class="brief">An attribute to return latitude in Deg.Min (-180, +180).</div></li>
+ <li class="attribute" id="::Vehicle::Location::longitude"><span class="attrName"><span
+ class="type">double</span><span class="name"> longitude</span></span>
+ <div class="brief">An attribute to return longitude in Deg.Min (-90, +90). </div></li>
+ <li class="attribute" id="::Vehicle::Location::altitude"><span class="attrName"><span
+ class="type">double</span><span class="name"> altitude</span></span>
+ <div class="brief">An attribute to return altitude in meters above sea-level (0). </div></li>
+ <li class="attribute" id="::Vehicle::Location::direction"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> direction</span></span>
+ <div class="brief">An attribute to return direction in Degrees (0-360). </div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::ExteriorBrightness">
+ <h3>1.19. ExteriorBrightness</h3>
+ <div class="brief">The interface defines exterior brightness of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface ExteriorBrightness : VehiclePropertyType {
+
+ attribute unsigned long exteriorBrightness;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::ExteriorBrightness::exteriorBrightness"><span class="attrName"><span
+ class="type">unsigned long</span><span class="name"> exteriorBrightness</span></span>
+ <div class="brief"> An attribute to return the brightness outside the vehicle in lux.</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::Temperature">
+ <h3>1.20. Temperature</h3>
+ <div class="brief">The interface defines temperature of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface Temperature : VehiclePropertyType {
+
+ attribute short interior;
+
+ attribute short exterior;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::Temperature::interior"><span class="attrName"><span
+ class="type">short</span><span class="name"> interior</span></span>
+ <div class="brief">An attribute to return the temperature of the interior of the vehicle in celcius.</div></li>
+ <li class="attribute" id="::Vehicle::Temperature::exterior"><span class="attrName"><span
+ class="type">short</span><span class="name"> exterior</span></span>
+ <div class="brief"> An attribute to return the temperature of the exterior of the vehicle in celcius.</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::RainSensor">
+ <h3>1.21. RainSensor</h3>
+ <div class="brief">The interface defines rain sensor of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface RainSensor : VehiclePropertyType {
+
+ attribute unsigned short rainSensor;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::RainSensor::rainSensor"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> rainSensor</span></span>
+ <div class="brief">An attribute to return level of rain intensity, 0: No Rain - 10: Heaviest Rain.</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::WindshieldWiper">
+ <h3>1.22. WindshieldWiper</h3>
+ <div class="brief">The interface defines windshield wiper of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface WindshieldWiper : VehiclePropertyType {
+
+ const unsigned short WIPERSPEED_OFF = 0;
+
+ const unsigned short WIPERSPEED_SLOWEST = 1;
+
+ const unsigned short WIPERSPEED_FASTEST = 5;
+
+ const unsigned short WIPERSPEED_AUTO = 10;
+
+ attribute unsigned short windshieldWiper;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::WindshieldWiper::WIPERSPEED_OFF"><span
+ class="name">WIPERSPEED_OFF</span>
+ <div class="brief">It defines the windshield wiper speed that is off status.</div></li>
+ <li class="const" id="::Vehicle::WindshieldWiper::WIPERSPEED_SLOWEST"><span
+ class="name">WIPERSPEED_SLOWEST</span>
+ <div class="brief">It defines the windshield wiper speed that is slowest status.</div></li>
+ <li class="const" id="::Vehicle::WindshieldWiper::WIPERSPEED_FASTEST"><span
+ class="name">WIPERSPEED_FASTEST</span>
+ <div class="brief">It defines the windshield wiper speed that is fastest status.</div></li>
+ <li class="const" id="::Vehicle::WindshieldWiper::WIPERSPEED_AUTO"><span
+ class="name">WIPERSPEED_AUTO</span>
+ <div class="brief">It defines the windshield wiper speed that is auto status.</div></li>
+ </ul>
+ </div>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::WindshieldWiper::windshieldWiper"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> windshieldWiper</span></span>
+ <div class="brief">An attribute to return Level of windshield whiper speed (see WIPERSPEED Constants).</div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::HVAC">
+ <h3>1.23. HVAC</h3>
+ <div class="brief">The interface defines HVAC of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface HVAC : VehiclePropertyType {
+
+ const unsigned short AIRFLOWDIRECTION_FRONTPANEL = 0;
+
+ const unsigned short AIRFLOWDIRECTION_FLOORDUCT = 0x01;
+
+ const unsigned short AIRFLOWDIRECTION_FRONT = 0x02;
+
+ const unsigned short AIRFLOWDIRECTION_DEFROSTER = 0x04;
+
+ attribute unsigned short airflowDirection;
+
+ attribute unsigned short fanSpeed;
+
+ attribute unsigned short targetTemperature;
+
+ attribute boolean airConditioning;
+
+ attribute boolean airRecirculation;
+
+ attribute boolean heater;
+
+ attribute boolean steeringWheelHeater;
+
+ attribute boolean seatHeater;
+
+ attribute boolean seatCooler;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::HVAC::AIRFLOWDIRECTION_FRONTPANEL"><span
+ class="name">AIRFLOWDIRECTION_FRONTPANEL</span>
+ <div class="brief">It defines an air flow direction that is front panel direction.</div></li>
+ <li class="const" id="::Vehicle::HVAC::AIRFLOWDIRECTION_FLOORDUCT"><span
+ class="name">AIRFLOWDIRECTION_FLOORDUCT</span>
+ <div class="brief">It defines an air flow direction that is floor duct panel direction.</div></li>
+ <li class="const" id="::Vehicle::HVAC::AIRFLOWDIRECTION_FRONT"><span
+ class="name">AIRFLOWDIRECTION_FRONT</span>
+ <div class="brief">It defines an air flow direction that is front direction.</div></li>
+ <li class="const" id="::Vehicle::HVAC::AIRFLOWDIRECTION_DEFROSTER"><span
+ class="name">AIRFLOWDIRECTION_DEFROSTER</span>
+ <div class="brief">It defines an air flow direction that is defroster direction.</div></li>
+ </ul>
+ </div>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::HVAC::airflowDirection"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> airflowDirection</span></span>
+ <div class="brief">
+ An attribute to return airflow direction (See AIRFLOWDIRECTION Constants).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::HVAC::fanSpeed"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> fanSpeed</span></span>
+ <div class="brief">
+ An attribute to return speed of the fan (0-7).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::HVAC::targetTemperature"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> targetTemperature</span></span>
+ <div class="brief">
+ An attribute to return target desired temperature in celcius.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::HVAC::airConditioning"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> targetTemperature</span></span>
+ <div class="brief">
+ An attribute to return air conditioning, on (true) or off (false).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::HVAC::recirculation"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> airConditioning</span></span>
+ <div class="brief">
+ An attribute to return air recirculation, on (true) or off (false).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::HVAC::heater"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> heater</span></span>
+ <div class="brief">
+ An attribute to return heater status, on (true) or off (false).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::HVAC::steeringWheelHeater"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> steeringWheelHeater</span></span>
+ <div class="brief">
+ An attribute to return steering wheel heater, on (true) or off (false).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::HVAC::seatHeater"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> seatHeater</span></span>
+ <div class="brief">
+ An attribute to return seat heater status:, on (true) or off (false).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::HVAC::seatCooler"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> seatCooler</span></span>
+ <div class="brief">
+ An attribute to return seat cooler status:, on (true) or off (false).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::WindowStatus">
+ <h3>1.24. WindowStatus</h3>
+ <div class="brief">The interface defines window status of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface WindowStatus : VehiclePropertyType {
+
+ const unsigned short WINDOWLOCATION_DRIVER = 0;
+
+ const unsigned short WINDOWLOCATION_PASSENGER = 1;
+
+ const unsigned short WINDOWLOCATION_LEFTREAR = 2;
+
+ const unsigned short WINDOWLOCATION_RIGHTREAR = 3;
+
+ const unsigned short WINDOWLOCATION_REAR = 4;
+
+ attribute unsigned short openness;
+
+ attribute boolean defrost;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::WindowStatus::WINDOWLOCATION_DRIVER"><span
+ class="name">WINDOWLOCATION_DRIVER</span>
+ <div class="brief">It defines the window location that is driver zone.</div></li>
+ <li class="const" id="::Vehicle::WindowStatus::WINDOWLOCATION_PASSENGER"><span
+ class="name">WINDOWLOCATION_PASSENGER</span>
+ <div class="brief">It defines the window location that is passenger zone.</div></li>
+ <li class="const" id="::Vehicle::WindowStatus::WINDOWLOCATION_LEFTREAR"><span
+ class="name">WINDOWLOCATION_LEFTREAR</span>
+ <div class="brief">It defines the window location that is left rear zone.</div></li>
+ <li class="const" id="::Vehicle::WindowStatus::WINDOWLOCATION_RIGHTREAR"><span
+ class="name">WINDOWLOCATION_RIGHTREAR</span>
+ <div class="brief">It defines the window location that is right rear zone.</div></li>
+ <li class="const" id="::Vehicle::WindowStatus::WINDOWLOCATION_REAR"><span
+ class="name">WINDOWLOCATION_REAR</span>
+ <div class="brief">It defines the window location that is rear zone.</div></li>
+ </ul>
+ </div>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::WindowStatus::openness"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> openness</span></span>
+ <div class="brief">
+ An attribute to return window openness percentage (100% fully open, 0% fully closed) for the window location (see WINDOWLOCATION Constants).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::WindowStatus::defrost"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> defrost</span></span>
+ <div class="brief">
+ An attribute to return the defroster status of the window, on (true) or off (false).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::Sunroof">
+ <h3>1.25. Sunroof</h3>
+ <div class="brief">The interface defines sunroof of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface Sunroof : VehiclePropertyType {
+
+ attribute unsigned short openness;
+
+ attribute unsigned short tilt;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::Sunroof::openness"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> openness</span></span>
+ <div class="brief">
+ An attribute to return window status for sunroof openness percentage.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::Sunroof::tilt"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> tilt</span></span>
+ <div class="brief">
+ An attribute to return tilt status for sunroof percentage.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::ConvertibleRoof">
+ <h3>1.26. ConvertibleRoof</h3>
+ <div class="brief">The interface defines convertible roof of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface ConvertibleRoof : VehiclePropertyType {
+
+ attribute unsigned short openness;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::ConvertibleRoof::openness"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> openness</span></span>
+ <div class="brief">
+ An attribute to return window status for sunroof openness percentage.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::VehicleId">
+ <h3>1.27. VehicleId</h3>
+ <div class="brief">The interface defines vehicle id of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface VehicleId : VehiclePropertyType {
+
+ attribute DOMString WMI;
+
+ attribute DOMString VIN;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id=":Vehicle::VehicleIdWMI"><span class="attrName"><span
+ class="type">DOMString</span><span class="name"> WMI</span></span>
+ <div class="brief">
+ An attribute to return World Manufacturer Identifier (WMI) is defined by SAE ISO 3780:2009.
+ </div>
+ </li>
+ <li class="attribute" id=":Vehicle::VehicleIdVIN"><span class="attrName"><span
+ class="type">DOMString</span><span class="name"> VIN</span></span>
+ <div class="brief">
+ An attribute to return Vehicle Identification Number (VIN) is defined by ISO 3779.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::Size">
+ <h3>1.28. Size</h3>
+ <div class="brief">The interface defines size of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface Size : VehiclePropertyType {
+
+ attribute unsigned long width;
+
+ attribute unsigned long height;
+
+ attribute unsigned long length;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::Size::width"><span class="attrName"><span
+ class="type">unsigned long</span><span class="name"> width</span></span>
+ <div class="brief">
+ An attribute to return width of vehicle in mm.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::Size::height"><span class="attrName"><span
+ class="type">unsigned long</span><span class="name"> height</span></span>
+ <div class="brief">
+ An attribute to return height of vehicle in mm.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::Size::length"><span class="attrName"><span
+ class="type">unsigned long</span><span class="name"> length</span></span>
+ <div class="brief">
+ An attribute to return length of vehicle in mm.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::FuelInfo">
+ <h3>1.29. FuelInfo</h3>
+ <div class="brief">The interface defines fuel information of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface FuelInfo : VehiclePropertyType {
+
+ const unsigned short FUELTYPE_GASOLINE = 0;
+
+ const unsigned short FUELTYPE_HIGH_OCTANE = 1;
+
+ const unsigned short FUELTYPE_DIESEL = 2;
+
+ const unsigned short FUELTYPE_ELECTRIC = 3;
+
+ const unsigned short FUELTYPE_HYDROGEN = 4;
+
+ const unsigned short REFUELPOSITION_LEFT = 0;
+
+ const unsigned short REFUELPOSITION_RIGHT = 1;
+
+ const unsigned short REFUELPOSITION_FRONT = 2;
+
+ const unsigned short REFUELPOSITION_REAR = 3;
+
+ attribute unsigned short type;
+
+ attribute unsigned short refuelPosition;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::FuelInfo::FUELTYPE_GASOLINE"><span
+ class="name">FUELTYPE_GASOLINE</span>
+ <div class="brief">It defines the gasoline fuel type.</div></li>
+ <li class="const" id="::Vehicle::FuelInfo::FUELTYPE_HIGH_OCTANE"><span
+ class="name">FUELTYPE_HIGH_OCTANE</span>
+ <div class="brief">It defines the high octane fuel type.</div></li>
+ <li class="const" id="::Vehicle::FuelInfo::FUELTYPE_DIESEL"><span
+ class="name">FUELTYPE_DIESEL</span>
+ <div class="brief">It defines the diesel fuel type.</div></li>
+ <li class="const" id="::Vehicle::FuelInfo::FUELTYPE_ELECTRIC"><span
+ class="name">FUELTYPE_ELECTRIC</span>
+ <div class="brief">It defines the electric fuel type.</div></li>
+ <li class="const" id="::Vehicle::FuelInfo::FUELTYPE_HYDROGEN"><span
+ class="name">FUELTYPE_HYDROGEN</span>
+ <div class="brief">It defines the hydrogen fuel type.</div></li>
+ <li class="const" id="::Vehicle::FuelInfo::REFUELPOSITION_LEFT"><span
+ class="name">REFUELPOSITION_LEFT</span>
+ <div class="brief">It defines the left refuel position.</div></li>
+ <li class="const" id="::Vehicle::FuelInfo::REFUELPOSITION_RIGHT"><span
+ class="name">REFUELPOSITION_RIGHT</span>
+ <div class="brief">It defines the right refuel position.</div></li>
+ <li class="const" id="::Vehicle::FuelInfo::REFUELPOSITION_FRONT"><span
+ class="name">REFUELPOSITION_FRONT</span>
+ <div class="brief">It defines the front refuel position.</div></li>
+ <li class="const" id="::Vehicle::FuelInfo::REFUELPOSITION_REAR"><span
+ class="name">REFUELPOSITION_REAR</span>
+ <div class="brief">It defines the rear refuel position.</div></li>
+ </ul>
+ </div>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::FuelInfo::type"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> type</span></span>
+ <div class="brief">
+ An attribute to return type of fuel (see FUELTYPE Constants).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::FuelInfo::refuelPosition"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> refuelPosition</span></span>
+ <div class="brief">
+ An attribute to return position of refuling (see REFUELPOSITION Constants).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::VehicleType">
+ <h3>1.30. VehicleType</h3>
+ <div class="brief">The interface defines vehicle type of vehicle property type.</div>
+ <pre class="webidl prettyprint">
+[NoInterfaceObject] interface VehicleType : VehiclePropertyType {
+
+ const unsigned short VEHICLETYPE_SEDAN = 0;
+
+ const unsigned short VEHICLETYPE_COUPE = 1;
+
+ const unsigned short VEHICLETYPE_CABRIOLE = 2;
+
+ const unsigned short VEHICLETYPE_ROADSTER = 3;
+
+ const unsigned short VEHICLETYPE_SUV = 4;
+
+ const unsigned short VEHICLETYPE_TRUCK = 5;
+
+ attribute unsigned short type;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::VehicleType::VEHICLETYPE_SEDAN"><span
+ class="name">VEHICLETYPE_SEDAN</span>
+ <div class="brief">It defines the sedan vehicle type.</div></li>
+ <li class="const" id="::Vehicle::VehicleType::VEHICLETYPE_COUPE"><span
+ class="name">VEHICLETYPE_COUPE</span>
+ <div class="brief">It defines the coupe vehicle type.</div></li>
+ <li class="const" id="::Vehicle::VehicleType::VEHICLETYPE_CABRIOLE"><span
+ class="name">VEHICLETYPE_CABRIOLE</span>
+ <div class="brief">It defines the cabriole vehicle type.</div></li>
+ <li class="const" id="::Vehicle::VehicleType::VEHICLETYPE_ROADSTER"><span
+ class="name">VEHICLETYPE_ROADSTER</span>
+ <div class="brief">It defines the roadster vehicle type.</div></li>
+ <li class="const" id="::Vehicle::VehicleType::VEHICLETYPE_SUV"><span
+ class="name">VEHICLETYPE_SUV</span>
+ <div class="brief">It defines the suv vehicle type.</div></li>
+ <li class="const" id="::Vehicle::VehicleType::VEHICLETYPE_TRUCK"><span
+ class="name">VEHICLETYPE_TRUCK</span>
+ <div class="brief">It defines the truck vehicle type.</div></li>
+ </ul>
+ </div>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::VehicleType::type"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> type</span></span>
+ <div class="brief">
+ An attribute to return type of vehicle (see VEHICLETYPE Constants).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::Doors">
+ <h3>1.31. Doors</h3>
+ <div class="brief">The interface defines doors of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface Doors : VehiclePropertyType {
+
+ attribute unsigned short[] doorsPerRow;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::Doors::doorsPerRow"><span class="attrName"><span
+ class="type">unsigned short[]</span><span class="name"> doorsPerRow</span></span>
+ <div class="brief">
+ An attribute to return number of doors in each row.
+ </div>
+ <div class="brief">
+ The index represents the row. Position '0' represents the first row, '1' the second row etc.
+ Example a common mini-van may have Doors[0] = 2 doors, Doors[1] = 1 (side door), Doors[2] = 1 (trunk).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::TransmissionGearType">
+ <h3>1.32. TransmissionGearType</h3>
+ <div class="brief">The interface defines transmission gear type of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface TransmissionGearType : VehiclePropertyType {
+
+ const unsigned short TRANSMISSIONGEARTYPE_AUTO = 0;
+
+ const unsigned short TRANSMISSIONGEARTYPE_MANUAL = 1;
+
+ const unsigned short TRANSMISSIONGEARTYPE_CV = 2;
+
+ attribute unsigned short transmissionGearType;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::TransmissionGearType::TRANSMISSIONGEARTYPE_AUTO"><span
+ class="name">TRANSMISSIONGEARTYPE_AUTO</span>
+ <div class="brief">It defines the auto transmission gear type.</div></li>
+ <li class="const" id="::Vehicle::TransmissionGearType::TRANSMISSIONGEARTYPE_MANUAL"><span
+ class="name">TRANSMISSIONGEARTYPE_MANUAL</span>
+ <div class="brief">It defines the manual transmission gear type.</div></li>
+ <li class="const" id="::Vehicle::TransmissionGearType::TRANSMISSIONGEARTYPE_CV"><span
+ class="name">TRANSMISSIONGEARTYPE_CV</span>
+ <div class="brief">It defines the cv transmission gear type.</div></li>
+ </ul>
+ </div>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::TransmissionGearType::transmissionGearType"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> transmissionGearType</span></span>
+ <div class="brief">
+ An attribute to return transmission gear type (see TRANSMISSIONGEARTYPE Constants).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::WheelInformation">
+ <h3>1.33. WheelInformation</h3>
+ <div class="brief">The interface defines wheel information of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface WheelInformation : VehiclePropertyType {
+
+ attribute unsigned short frontWheelRadius;
+
+ attribute unsigned short rearWheelRadius;
+
+ attribute unsigned long wheelTrack;
+
+ attribute boolean ABS;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::WheelInformation::frontWheelRadius"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> frontWheelRadius</span></span>
+ <div class="brief">
+ An attribute to return radius of front wheel(s) in mm.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::WheelInformation::rearWheelRadius"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> rearWheelRadius</span></span>
+ <div class="brief">
+ An attribute to return Radius of Rear Wheel(s) in mm.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::WheelInformation::wheelTrack"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> wheelTrack</span></span>
+ <div class="brief">
+ An attribute to return Wheel Track in mm.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::WheelInformation::ABS"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> ABS</span></span>
+ <div class="brief">
+ An attribute to return Antilock Brake System status, on (true) or off (false).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::Odometer">
+ <h3>1.34. Odometer</h3>
+ <div class="brief">The interface defines odometer of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface Odometer : VehiclePropertyType {
+
+ attribute unsigned long odometer;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::Odometer::odometer"><span class="attrName"><span
+ class="type">unsigned long</span><span class="name"> odometer</span></span>
+ <div class="brief">
+ An attribute to return Distance traveled in km.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::Fluid">
+ <h3>1.35. Fluid</h3>
+ <div class="brief">The interface defines fluid of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface Fluid : VehiclePropertyType {
+
+ attribute unsigned short transmission;
+
+ attribute unsigned short brake;
+
+ attribute unsigned short washer;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::Fluid::transmission"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> transmission</span></span>
+ <div class="brief">
+ An attribute to return transmission fluid level percentage (0 - 100).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::Fluid::brake"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> brake</span></span>
+ <div class="brief">
+ An attribute to return brake fluid level percentage (0 - 100).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::Fluid::washer"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> washer</span></span>
+ <div class="brief">
+ An attribute to return washer fluid level percentage (0 - 100).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::Battery">
+ <h3>1.36. Battery</h3>
+ <div class="brief">The interface defines battery of vehicle property type.</div>
+ <pre class="webidl prettyprint">
+[NoInterfaceObject] interface Battery : VehiclePropertyType {
+
+ attribute double voltage;
+
+ attribute double current;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::Battery::voltage"><span class="attrName"><span
+ class="type">double</span><span class="name"> voltage</span></span>
+ <div class="brief">
+ An attribute to return battery voltage.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::Battery::current"><span class="attrName"><span
+ class="type">double</span><span class="name"> current</span></span>
+ <div class="brief">
+ An attribute to return battery current in amperes.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::TirePressure">
+ <h3>1.37. TirePressure</h3>
+ <div class="brief">The interface defines tire pressure of vehicle property type.</div>
+ <pre class="webidl prettyprint">
+[NoInterfaceObject] interface TirePressure : VehiclePropertyType {
+
+ attribute double leftFront;
+
+ attribute double rightFront;
+
+ attribute double leftRear;
+
+ attribute double rightRear;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::TirePressure::leftFront"><span class="attrName"><span
+ class="type">double</span><span class="name"> leftFront</span></span>
+ <div class="brief">
+ An attribute to return left front tire pressure in kpa.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::TirePressure::rightFront"><span class="attrName"><span
+ class="type">double</span><span class="name"> rightFront</span></span>
+ <div class="brief">
+ An attribute to return right front tire pressure in kpa.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::TirePressure::leftRear"><span class="attrName"><span
+ class="type">double</span><span class="name"> leftRear</span></span>
+ <div class="brief">
+ An attribute to return left rear tire pressure in kpa.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::TirePressure::rightRear"><span class="attrName"><span
+ class="type">double</span><span class="name"> rightRear</span></span>
+ <div class="brief">
+ An attribute to return right rear tire pressure in kpa.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::TireTemperature">
+ <h3>1.38. TireTemperature</h3>
+ <div class="brief">The interface defines tire temperature of vehicle property type.</div>
+ <pre class="webidl prettyprint">
+[NoInterfaceObject] interface TireTemperature : VehiclePropertyType {
+
+ attribute double leftFront;
+
+ attribute double rightFront;
+
+ attribute double leftRear;
+
+ attribute double rightRear;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::TireTemperature::leftFront"><span class="attrName"><span
+ class="type">double</span><span class="name"> leftFront</span></span>
+ <div class="brief">
+ An attribute to return left front tire temperature in celcius.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::TireTemperature::rightFront"><span class="attrName"><span
+ class="type">double</span><span class="name"> rightFront</span></span>
+ <div class="brief">
+ An attribute to return right front tire temperature in celcius.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::TireTemperature::leftRear"><span class="attrName"><span
+ class="type">double</span><span class="name"> leftRear</span></span>
+ <div class="brief">
+ An attribute to return left rear tire temperature in celcius.
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::TireTemperature::rightRear"><span class="attrName"><span
+ class="type">double</span><span class="name"> rightRear</span></span>
+ <div class="brief">
+ An attribute to return right rear tire temperature in celcius.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::SecurityAlert">
+ <h3>1.39. SecurityAlert</h3>
+ <div class="brief">The interface defines security alert of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface SecurityAlert : VehiclePropertyType {
+
+ attribute boolean securityAlert;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::SecurityAlert::securityAlert"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> securityAlert</span></span>
+ <div class="brief">
+ An attribute to return security alert status.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::ParkingBrake">
+ <h3>1.40. ParkingBrake</h3>
+ <div class="brief">The interface defines parking brake of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface ParkingBrake : VehiclePropertyType {
+
+ attribute boolean parkingBrake;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::ParkingBrake::parkingBrake"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> parkingBrake</span></span>
+ <div class="brief">
+ An attribute to return status of parking brake, engaged (true) or disengaged (false).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::ParkingLight">
+ <h3>1.41. ParkingLight</h3>
+ <div class="brief">The interface defines parking light of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface ParkingLight : VehiclePropertyType {
+
+ attribute boolean parkingLight;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::ParkingLight::parkingLight"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> parkingLight</span></span>
+ <div class="brief">
+ An attribute to return status of parking light, engaged (true) or disengaged (false).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::HazardLight">
+ <h3>1.42. HazardLight</h3>
+ <div class="brief">The interface defines hazard light of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface HazardLight : VehiclePropertyType {
+
+ attribute boolean hazardLight;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::HazardLight::hazardLight"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> hazardLight</span></span>
+ <div class="brief">
+ An attribute to return status of hazard light, engaged (true) or disengaged (false).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::AntilockBrakingSystem">
+ <h3>1.43. AntilockBrakingSystem</h3>
+ <div class="brief">The interface defines antilock braking system of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface AntilockBrakingSystem : VehiclePropertyType {
+
+ attribute boolean antilockBrakingSystem;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::AntilockBrakingSystem::antilockBrakingSystem"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> antilockBrakingSystem</span></span>
+ <div class="brief">
+ An attribute to return whether Antilock Braking System is idle (false) or engaged (true).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::TractionControlSystem">
+ <h3>1.44. TractionControlSystem</h3>
+ <div class="brief">The interface defines traction control system of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface TractionControlSystem : VehiclePropertyType {
+
+ attribute boolean tractionControlSystem;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::TractionControlSystem::tractionControlSystem"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> tractionControlSystem</span></span>
+ <div class="brief">
+ An attribute to return whether Traction Control System is off (false) or on (true).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::VehicleTopSpeedLimit">
+ <h3>1.45. VehicleTopSpeedLimit</h3>
+ <div class="brief">The interface defines vehicle top speed limit of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface VehicleTopSpeedLimit : VehiclePropertyType {
+
+ attribute unsigned short vehicleTopSpeedLimit;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::VehicleTopSpeedLimit::vehicleTopSpeedLimit"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> vehicleTopSpeedLimit</span></span>
+ <div class="brief">
+ An attribute to returns top rated speed in km/h (0 = no limit).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::AirbagStatus">
+ <h3>1.46. AirbagStatus</h3>
+ <div class="brief">The interface defines airbag status of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface AirbagStatus : VehiclePropertyType {
+
+ const unsigned short AIRBAGSTATUS_INACTIVE = 0;
+
+ const unsigned short AIRBAGSTATUS_ACTIVE = 1;
+
+ const unsigned short AIRBAGSTATUS_DEPLOYED = 2;
+
+ attribute unsigned short airbagStatus;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::AirbagStatus::AIRBAGSTATUS_INACTIVE"><span
+ class="name">AIRBAGSTATUS_INACTIVE</span>
+ <div class="brief">It defines the inactive airbag status.</div></li>
+ <li class="const" id="::Vehicle::AirbagStatus::AIRBAGSTATUS_ACTIVE"><span
+ class="name">AIRBAGSTATUS_ACTIVE</span>
+ <div class="brief">It defines the active airbag status.</div></li>
+ <li class="const" id="::Vehicle::AirbagStatus::AIRBAGSTATUS_DEPLOYED"><span
+ class="name">AIRBAGSTATUS_DEPLOYED</span>
+ <div class="brief">It defines the deployed airbag status.</div></li>
+ </ul>
+ </div>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::AirbagStatus::airbagStatus"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> airbagStatus</span></span>
+ <div class="brief">
+ An attribute to return Airbag deployment status (see AIRBAGSTATUS Constants).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::DoorStatus">
+ <h3>1.47. DoorStatus</h3>
+ <div class="brief">The interface defines door status of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface DoorStatus : VehiclePropertyType {
+
+ const unsigned short DOORSTATUS_CLOSED = 0;
+
+ const unsigned short DOORSTATUS_OPEN = 1;
+
+ const unsigned short DOORSTATUS_AJAR = 2;
+
+ attribute unsigned short doorStatus;
+
+ attribute boolean doorLockStatus;
+
+ attribute boolean childLockStatus;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::DoorStatus::DOORSTATUS_CLOSED"><span
+ class="name">DOORSTATUS_CLOSED</span>
+ <div class="brief">It defines the closed door status.</div></li>
+ <li class="const" id="::Vehicle::DoorStatus::DOORSTATUS_OPEN"><span
+ class="name">DOORSTATUS_OPEN</span>
+ <div class="brief">It defines the open door status.</div></li>
+ <li class="const" id="::Vehicle::DoorStatus::DOORSTATUS_AJAR"><span
+ class="name">DOORSTATUS_AJAR</span>
+ <div class="brief">It defines the ajar door status.</div></li>
+ </ul>
+ </div>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::DoorStatus::doorStatus"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> doorStatus</span></span>
+ <div class="brief">
+ An attribute to returns door status (see DOORSTATUS Constants).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::DoorStatus::doorLockStatus"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> doorLockStatus</span></span>
+ <div class="brief">
+ An attribute to returns door status, locked (true) or unlocked (false).
+ </div>
+ </li>
+ <li class="attribute" id="::Vehicle::DoorStatus::childLockStatus"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> childLockStatus</span></span>
+ <div class="brief">
+ An attribute to returns child lock status of rear doors, active (true) or inactive (false).
+ Setting this to 'true' will prevent the rear doors from being opened from the inside.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::SeatBeltStatus">
+ <h3>1.48. SeatBeltStatus</h3>
+ <div class="brief">The interface defines seat belt status of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface SeatBeltStatus : VehiclePropertyType {
+
+ attribute boolean seatBeltStatus;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::SeatBeltStatusseatBeltStatus"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> seatBeltStatus</span></span>
+ <div class="brief">
+ An attribute to return seat belt status, fasten (true) or unfastened (false).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::OccupantStatus">
+ <h3>1.49. OccupantStatus</h3>
+ <div class="brief">The interface defines occupant status of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface OccupantStatus : VehiclePropertyType {
+
+ const unsigned short OCCUPANTSTATUS_VACANT = 0;
+
+ const unsigned short OCCUPANTSTATUS_CHILD = 1;
+
+ const unsigned short OCCUPANTSTATUS_ADULT = 2;
+
+ attribute unsigned short occupantStatus;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::OccupantStatus::OCCUPANTSTATUS_VACANT"><span
+ class="name">OCCUPANTSTATUS_VACANT</span>
+ <div class="brief">It defines the vacant occupant status.</div></li>
+ <li class="const" id="::Vehicle::OccupantStatus::OCCUPANTSTATUS_CHILD"><span
+ class="name">OCCUPANTSTATUS_CHILD</span>
+ <div class="brief">It defines the child occupant status.</div></li>
+ <li class="const" id="::Vehicle::OccupantStatus::OCCUPANTSTATUS_ADULT"><span
+ class="name">OCCUPANTSTATUS_ADULT</span>
+ <div class="brief">It defines the adult occupant status.</div></li>
+ </ul>
+ </div>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::OccupantStatus::occupantStatus"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> occupantStatus</span></span>
+ <div class="brief">
+ An attribute to returns occupant status (see OCCUPANTSTATUS Constants).
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::ObstacleDistance">
+ <h3>1.50. ObstacleDistance</h3>
+ <div class="brief">The interface defines obstacle distance of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface ObstacleDistance : VehiclePropertyType {
+
+ const unsigned short DISTANCESENSORLOCATION_LEFTFRONT = 0;
+
+ const unsigned short DISTANCESENSORLOCATION_RIGHTFRONT = 1;
+
+ const unsigned short DISTANCESENSORLOCATION_LEFTREAR = 2;
+
+ const unsigned short DISTANCESENSORLOCATION_RIGHTREAR = 3;
+
+ const unsigned short DISTANCESENSORLOCATION_LEFTBLINDSPOT = 4;
+
+ const unsigned short DISTANCESENSORLOCATION_RIGHTBLINDSPOT = 5;
+
+ attribute double obstacleDistance;
+
+};
+</pre>
+ <div class="consts">
+ <h4>Constants</h4>
+ <ul>
+ <li class="const" id="::Vehicle::ObstacleDistance::DISTANCESENSORLOCATION_LEFTFRONT"><span
+ class="name">DISTANCESENSORLOCATION_LEFTFRONT</span>
+ <div class="brief">It defines the left front distance sensor location.</div></li>
+ <li class="const" id="::Vehicle::ObstacleDistance::DISTANCESENSORLOCATION_RIGHTFRONT"><span
+ class="name">DISTANCESENSORLOCATION_RIGHTFRONT</span>
+ <div class="brief">It defines the right front distance sensor location.</div></li>
+ <li class="const" id="::Vehicle::ObstacleDistance::DISTANCESENSORLOCATION_LEFTREAR"><span
+ class="name">DISTANCESENSORLOCATION_LEFTREAR</span>
+ <div class="brief">It defines the left rear distance sensor location.</div></li>
+ <li class="const" id="::Vehicle::ObstacleDistance::DISTANCESENSORLOCATION_RIGHTREAR"><span
+ class="name">DISTANCESENSORLOCATION_RIGHTREAR</span>
+ <div class="brief">It defines the right rear distance sensor location.</div></li>
+ <li class="const" id="::Vehicle::ObstacleDistance::DISTANCESENSORLOCATION_LEFTBLINDSPOT"><span
+ class="name">DISTANCESENSORLOCATION_LEFTBLINDSPOT</span>
+ <div class="brief">It defines the left blind spot distance sensor location.</div></li>
+ <li class="const" id="::Vehicle::ObstacleDistance::DISTANCESENSORLOCATION_RIGHTBLINDSPOT"><span
+ class="name">DISTANCESENSORLOCATION_RIGHTBLINDSPOT</span>
+ <div class="brief">It defines the right blind spot distance sensor location.</div></li>
+ </ul>
+ </div>
+
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::ObstacleDistance::obstacleDistance"><span class="attrName"><span
+ class="type">double</span><span class="name"> obstacleDistance</span></span>
+ <div class="brief">
+ An attribute to return distance sensor distance in m.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::NightMode">
+ <h3>1.51. NightMode</h3>
+ <div class="brief">The interface defines night mode of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface NightMode : VehiclePropertyType {
+
+ attribute boolean nightMode;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::NightMode::nightMode"><span class="attrName"><span
+ class="type">boolean</span><span class="name"> nightMode</span></span>
+ <div class="brief">
+ An attribute to return whether or not the system is in night mode (true). False is day mode.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::DrivingMode">
+ <h3>1.52. DrivingMode</h3>
+ <div class="brief">The interface defines driving mode of vehicle property type.</div>
+<pre class="webidl prettyprint">
+[NoInterfaceObject] interface DrivingMode : VehiclePropertyType {
+
+ attribute unsigned short drivingMode;
+
+};
+</pre>
+ <div class="attributes">
+ <h4>Attributes</h4>
+ <ul>
+ <li class="attribute" id="::Vehicle::DrivingMode::drivingMode"><span class="attrName"><span
+ class="type">unsigned short</span><span class="name"> drivingMode</span></span>
+ <div class="brief">
+ An attribute to return whether or not the system is in driving mode(1). 0 represents no driving mode.
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::VehiclePropertyCallback">
+ <h3>1.53. VehiclePropertyCallback</h3>
+ <div class="brief">This interface specified a success callback that is invoked when vehicle propery type is valid.</div>
+<pre class="webidl prettyprint">
+[Callback=FunctionOnly, NoInterfaceObject] interface VehiclePropertyCallback {
+
+ void onsuccess(VehiclePropertyType value);
+
+};
+</pre>
+ <div class="methods">
+ <h4>Methods</h4>
+ <dl>
+ <dt class="method" id="::Vehicle::VehiclePropertyCallback::onsuccess">
+ <span class="methodName">onsuccess</span>
+ </dt>
+ <dd>
+ <div class="brief">The callback function used to return a property value. Called when vehicle propery type is valid.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void onsuccess(VehiclePropertyType value);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">value</span>: A VehiclePropertyType object.</li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::VehiclePropertyErrorCallback">
+ <h3>1.54. VehiclePropertyErrorCallback</h3>
+ <div class="brief">This interface specified a failure callback that is invoked when any errors are happened.</div>
+<pre class="webidl prettyprint">
+[Callback=FunctionOnly, NoInterfaceObject] interface VehiclePropertyErrorCallback {
+
+ void onfailure(VehiclePropertyError error);
+
+};
+</pre>
+ <div class="methods">
+ <h4>Methods</h4>
+ <dl>
+ <dt class="method" id="::Vehicle::VehiclePropertyErrorCallback::onsuccess">
+ <span class="methodName">onsuccess</span>
+ </dt>
+ <dd>
+ <div class="brief">The callback function used to return reference error code and message. Called when any errors are happened.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void onfailure(VehiclePropertyError error);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">error</span>: A VehiclePropertyError object.</li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::VehiclePropertyListCallback">
+ <h3>1.55. VehiclePropertyListCallback</h3>
+ <div class="brief">This interface specified a success callback that is invoked when vehicle propery type is valid.</div>
+<pre class="webidl prettyprint">
+[Callback=FunctionOnly, NoInterfaceObject] interface VehiclePropertyListCallback {
+
+ void onsuccess(VehiclePropertyType[] values);
+
+};
+</pre>
+ <div class="methods">
+ <h4>Methods</h4>
+ <dl>
+ <dt class="method" id="::Vehicle::VehiclePropertyListCallback::onsuccess">
+ <span class="methodName">onsuccess</span>
+ </dt>
+ <dd>
+ <div class="brief">The callback function used to return VehiclePropertyType value list. Called when vehicle propery type is valid.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+ void onsuccess(VehiclePropertyType[] values);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">values</span>: A VehiclePropertyType value list.</li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::SupportedPropertiesCallback">
+ <h3>1.56. SupportedPropertiesCallback</h3>
+ <div class="brief">This interface specified a success callback that is invoked.</div>
+<pre class="webidl prettyprint">
+[Callback=FunctionOnly, NoInterfaceObject] interface SupportedPropertiesCallback {
+
+ void onsuccess(DOMString[] properties);
+
+};
+</pre>
+ <div class="methods">
+ <h4>Methods</h4>
+ <dl>
+ <dt class="method" id="::Vehicle::SupportedPropertiesCallback::onsuccess">
+ <span class="methodName">onsuccess</span>
+ </dt>
+ <dd>
+ <div class="brief">The callback function used to return supported properties.</div>
+ <div class="synopsis">
+<pre class="signature prettyprint">
+void onsuccess(DOMString[] properties);
+<span class="pln"></span>
+</pre>
+ </div>
+ <div class="parameters">
+ <p>
+ <span class="param">Parameters:</span>
+ </p>
+ <ul>
+ <li class="param"><span class="name">properties</span>: A string array.</li>
+ </ul>
+ </div>
+ </dd>
+ </dl>
+ </div>
+ </div>
+
+ <div class="interface" id="::Vehicle::DefrostDictionary">
+ <h3>1.57. DefrostDictionary</h3>
+ <div class="brief">A dictionary that is used for creating defrost items.</div>
+<pre class="webidl prettyprint">
+dictionary DefrostDictionary {
+
+ unsigned short window;
+
+ boolean defrost;
+
+};
+</pre>
+ </div>
+ </div>
+ <h2 id="full-webidl">2. Full WebIDL</h2>
+<pre class="webidl prettyprint">
+module Vehicle {
+
+ [NoInterfaceObject] interface VehicleManagerObject {
+ readonly attribute Vehicle vehicle;
+ };
+
+ Tizen implements VehicleManagerObject;
+
+ [NoInterfaceObject] interface Vehicle {
+
+ const unsigned short ZONE_None = 0;
+
+ const unsigned short ZONE_Front = 0x01;
+
+ const unsigned short ZONE_Middle = 0x02;
+
+ const unsigned short ZONE_Right = 0x04;
+
+ const unsigned short ZONE_Left = 0x08;
+
+ const unsigned short ZONE_Rear = 0x10;
+
+ const unsigned short ZONE_Center = 0x20;
+
+ DOMString[] supported();
+
+ any get(DOMString objectType, optional short zone);
+
+ void getAsync(DOMString objectType, VehiclePropertyCallback successCallback, optional VehiclePropertyErrorCallback errorCallback, optional short zone);
+
+ void subscribe(DOMString objectType, VehiclePropertyCallback successCallback, optional unsigned short zone, optional VehiclePropertyErrorCallback errorCallback);
+
+ void set(DOMString objectType, object value, optional VehiclePropertyErrorCallback errorCallback);
+
+ void getHistory(DOMString objectType, unsigned short zone, Date startTime, Date endTime, VehiclePropertyListCallback successCallback, optional VehiclePropertyErrorCallback errorCallback);
+
+ unsigned short[] listZones(DOMString objectType);
+ };
+
+ [NoInterfaceObject] interface VehiclePropertyType : Event {
+
+ attribute DOMTimeStamp time;
+
+ attribute short zone;
+
+ attribute DOMString source;
+
+ };
+
+ [NoInterfaceObject] interface VehiclePropertyError {
+
+ const unsigned short PERMISSION_DENIED = 1;
+
+ const unsigned short PROPERTY_UNAVAILABLE = 2;
+
+ const unsigned short TIMEOUT = 3;
+
+ const unsigned short UNKNOWN = 10;
+
+ attribute unsigned short code;
+
+ attribute DOMString message;
+
+ };
+
+ [NoInterfaceObject] interface VehicleSpeed : VehiclePropertyType {
+
+ attribute unsigned long vehicleSpeed;
+
+ };
+
+ [NoInterfaceObject] interface EngineSpeed : VehiclePropertyType {
+
+ attribute unsigned long engineSpeed;
+
+ };
+
+ [NoInterfaceObject] interface VehiclePowerMode : VehiclePropertyType {
+
+ const unsigned short VEHICLEPOWERMODE_OFF = 0;
+
+ const unsigned short VEHICLEPOWERMODE_ACCESSORY1 = 1;
+
+ const unsigned short VEHICLEPOWERMODE_ACCESSORY2 = 2;
+
+ const unsigned short VEHICLEPOWERMODE_RUN = 3;
+
+ attribute octet vehiclePowerMode;
+
+ };
+
+ [NoInterfaceObject] interface TripMeter : VehiclePropertyType {
+
+ attribute unsigned long[] tripMeters;
+
+ };
+
+ [NoInterfaceObject] interface Acceleration : VehiclePropertyType {
+
+ attribute unsigned long x;
+
+ attribute unsigned long y;
+
+ attribute unsigned long z;
+
+ };
+
+ [NoInterfaceObject] interface Transmission : VehiclePropertyType {
+
+ const unsigned short TRANSMISSIONPOSITION_NEUTRAL = 0;
+
+ const unsigned short TRANSMISSIONPOSITION_FIRST = 1;
+
+ const unsigned short TRANSMISSIONPOSITION_SECOND = 2;
+
+ const unsigned short TRANSMISSIONPOSITION_THIRD = 3;
+
+ const unsigned short TRANSMISSIONPOSITION_FORTH = 4;
+
+ const unsigned short TRANSMISSIONPOSITION_FIFTH = 5;
+
+ const unsigned short TRANSMISSIONPOSITION_SIXTH = 6;
+
+ const unsigned short TRANSMISSIONPOSITION_SEVENTH = 7;
+
+ const unsigned short TRANSMISSIONPOSITION_EIGHTH = 8;
+
+ const unsigned short TRANSMISSIONPOSITION_NINTH = 9;
+
+ const unsigned short TRANSMISSIONPOSITION_TENTH = 10;
+
+ const unsigned short TRANSMISSIONPOSITION_CVT = 64;
+
+ const unsigned short TRANSMISSIONPOSITION_REVERSE = 128;
+
+ const unsigned short TRANSMISSIONPOSITION_PARK = 255;
+
+ const unsigned short TRANSMISSIONMODE_NORMAL = 0;
+
+ const unsigned short TRANSMISSIONMODE_SPORT = 1;
+
+ const unsigned short TRANSMISSIONMODE_ECONOMY = 2;
+
+ const unsigned short TRANSMISSIONMODE_OEMCUSTOM1 = 3;
+
+ const unsigned short TRANSMISSIONMODE_OEMCUSTOM2 = 4;
+
+ attribute octet gearPosition;
+
+ attribute octet mode;
+
+ };
+
+ [NoInterfaceObject] interface WheelBrake : VehiclePropertyType {
+
+ attribute boolean engaged;
+
+ };
+
+ [NoInterfaceObject] interface LightStatus : VehiclePropertyType {
+
+ attribute boolean head;
+
+ attribute boolean rightTurn;
+
+ attribute boolean leftTurn;
+
+ attribute boolean brake;
+
+ attribute boolean fog;
+
+ attribute boolean hazard;
+
+ attribute boolean parking;
+
+ attribute boolean highBeam;
+
+ };
+
+ [NoInterfaceObject] interface InteriorLightStatus : VehiclePropertyType {
+
+ attribute boolean passenger;
+
+ attribute boolean driver;
+
+ attribute boolean center;
+
+ };
+
+ [NoInterfaceObject] interface Horn : VehiclePropertyType {
+
+ attribute boolean on;
+
+ };
+
+ [NoInterfaceObject] interface Fuel : VehiclePropertyType {
+
+ attribute unsigned short level;
+
+ attribute unsigned short range;
+
+ attribute unsigned short instantConsumption;
+
+ attribute unsigned short instantEconomy;
+
+ attribute unsigned short averageEconomy;
+
+ };
+
+ [NoInterfaceObject] interface EngineOil : VehiclePropertyType {
+
+ attribute unsigned short remaining;
+
+ attribute long temperature;
+
+ attribute unsigned short pressure;
+
+ };
+
+ [NoInterfaceObject] interface Location : VehiclePropertyType {
+
+ attribute double latitude;
+
+ attribute double longitude;
+
+ attribute double altitude;
+
+ attribute unsigned short direction;
+
+ };
+
+ [NoInterfaceObject] interface ExteriorBrightness : VehiclePropertyType {
+
+ attribute unsigned long exteriorBrightness;
+
+ };
+
+ [NoInterfaceObject] interface Temperature : VehiclePropertyType {
+
+ attribute short interior;
+
+ attribute short exterior;
+
+ };
+
+ [NoInterfaceObject] interface RainSensor : VehiclePropertyType {
+
+ attribute unsigned short rainSensor;
+
+ };
+
+ [NoInterfaceObject] interface WindshieldWiper : VehiclePropertyType {
+
+ const unsigned short WIPERSPEED_OFF = 0;
+
+ const unsigned short WIPERSPEED_SLOWEST = 1;
+
+ const unsigned short WIPERSPEED_FASTEST = 5;
+
+ const unsigned short WIPERSPEED_AUTO = 10;
+
+ attribute unsigned short windshieldWiper;
+
+ };
+
+ [NoInterfaceObject] interface HVAC : VehiclePropertyType {
+
+ const unsigned short AIRFLOWDIRECTION_FRONTPANEL = 0;
+
+ const unsigned short AIRFLOWDIRECTION_FLOORDUCT = 0x01;
+
+ const unsigned short AIRFLOWDIRECTION_FRONT = 0x02;
+
+ const unsigned short AIRFLOWDIRECTION_DEFROSTER = 0x04;
+
+ attribute unsigned short airflowDirection;
+
+ attribute unsigned short fanSpeed;
+
+ attribute unsigned short targetTemperature;
+
+ attribute boolean airConditioning;
+
+ attribute boolean airRecirculation;
+
+ attribute boolean heater;
+
+ attribute boolean steeringWheelHeater;
+
+ attribute boolean seatHeater;
+
+ attribute boolean seatCooler;
+
+ };
+
+ [NoInterfaceObject] interface WindowStatus : VehiclePropertyType {
+
+ const unsigned short WINDOWLOCATION_DRIVER = 0;
+
+ const unsigned short WINDOWLOCATION_PASSENGER = 1;
+
+ const unsigned short WINDOWLOCATION_LEFTREAR = 2;
+
+ const unsigned short WINDOWLOCATION_RIGHTREAR = 3;
+
+ const unsigned short WINDOWLOCATION_REAR = 4;
+
+ attribute unsigned short openness;
+
+ attribute boolean defrost;
+
+ };
+
+ [NoInterfaceObject] interface Sunroof : VehiclePropertyType {
+
+ attribute unsigned short openness;
+
+ attribute unsigned short tilt;
+
+ };
+
+ [NoInterfaceObject] interface ConvertibleRoof : VehiclePropertyType {
+
+ attribute unsigned short openness;
+
+ };
+
+ [NoInterfaceObject] interface VehicleId : VehiclePropertyType {
+
+ attribute DOMString WMI;
+
+ attribute DOMString VIN;
+
+ };
+
+ [NoInterfaceObject] interface Size : VehiclePropertyType {
+
+ attribute unsigned long width;
+
+ attribute unsigned long height;
+
+ attribute unsigned long length;
+
+ };
+
+ [NoInterfaceObject] interface FuelInfo : VehiclePropertyType {
+
+ const unsigned short FUELTYPE_GASOLINE = 0;
+
+ const unsigned short FUELTYPE_HIGH_OCTANE = 1;
+
+ const unsigned short FUELTYPE_DIESEL = 2;
+
+ const unsigned short FUELTYPE_ELECTRIC = 3;
+
+ const unsigned short FUELTYPE_HYDROGEN = 4;
+
+ const unsigned short REFUELPOSITION_LEFT = 0;
+
+ const unsigned short REFUELPOSITION_RIGHT = 1;
+
+ const unsigned short REFUELPOSITION_FRONT = 2;
+
+ const unsigned short REFUELPOSITION_REAR = 3;
+
+ attribute unsigned short type;
+
+ attribute unsigned short refuelPosition;
+
+ };
+
+ [NoInterfaceObject] interface VehicleType : VehiclePropertyType {
+
+ const unsigned short VEHICLETYPE_SEDAN = 0;
+
+ const unsigned short VEHICLETYPE_COUPE = 1;
+
+ const unsigned short VEHICLETYPE_CABRIOLE = 2;
+
+ const unsigned short VEHICLETYPE_ROADSTER = 3;
+
+ const unsigned short VEHICLETYPE_SUV = 4;
+
+ const unsigned short VEHICLETYPE_TRUCK = 5;
+
+ attribute unsigned short type;
+
+ };
+
+ [NoInterfaceObject] interface Doors : VehiclePropertyType {
+
+ attribute unsigned short[] doorsPerRow;
+
+ };
+
+ [NoInterfaceObject] interface TransmissionGearType : VehiclePropertyType {
+
+ const unsigned short TRANSMISSIONGEARTYPE_AUTO = 0;
+
+ const unsigned short TRANSMISSIONGEARTYPE_MANUAL = 1;
+
+ const unsigned short TRANSMISSIONGEARTYPE_CV = 2;
+
+ attribute unsigned short transmissionGearType;
+
+ };
+
+ [NoInterfaceObject] interface WheelInformation : VehiclePropertyType {
+
+ attribute unsigned short frontWheelRadius;
+
+ attribute unsigned short rearWheelRadius;
+
+ attribute unsigned long wheelTrack;
+
+ attribute boolean ABS;
+
+ };
+
+ [NoInterfaceObject] interface Odometer : VehiclePropertyType {
+
+ attribute unsigned long odometer;
+
+ };
+
+ [NoInterfaceObject] interface Fluid : VehiclePropertyType {
+
+ attribute unsigned short transmission;
+
+ attribute unsigned short brake;
+
+ attribute unsigned short washer;
+
+ };
+
+ [NoInterfaceObject] interface Battery : VehiclePropertyType {
+
+ attribute double voltage;
+
+ attribute double current;
+
+ };
+
+ [NoInterfaceObject] interface TirePressure : VehiclePropertyType {
+
+ attribute double leftFront;
+
+ attribute double rightFront;
+
+ attribute double leftRear;
+
+ attribute double rightRear;
+
+ };
+
+ [NoInterfaceObject] interface TireTemperature : VehiclePropertyType {
+
+ attribute double leftFront;
+
+ attribute double rightFront;
+
+ attribute double leftRear;
+
+ attribute double rightRear;
+
+ };
+
+ [NoInterfaceObject] interface SecurityAlert : VehiclePropertyType {
+
+ attribute boolean securityAlert;
+
+ };
+
+ [NoInterfaceObject] interface ParkingBrake : VehiclePropertyType {
+
+ attribute boolean parkingBrake;
+
+ };
+
+ [NoInterfaceObject] interface ParkingLight : VehiclePropertyType {
+
+ attribute boolean parkingLight;
+
+ };
+
+ [NoInterfaceObject] interface HazardLight : VehiclePropertyType {
+
+ attribute boolean hazardLight;
+
+ };
+
+ [NoInterfaceObject] interface AntilockBrakingSystem : VehiclePropertyType {
+
+ attribute boolean antilockBrakingSystem;
+
+ };
+
+ [NoInterfaceObject] interface TractionControlSystem : VehiclePropertyType {
+
+ attribute boolean tractionControlSystem;
+
+ };
+
+ [NoInterfaceObject] interface VehicleTopSpeedLimit : VehiclePropertyType {
+
+ attribute unsigned short vehicleTopSpeedLimit;
+
+ };
+
+ [NoInterfaceObject] interface AirbagStatus : VehiclePropertyType {
+
+ const unsigned short AIRBAGSTATUS_INACTIVE = 0;
+
+ const unsigned short AIRBAGSTATUS_ACTIVE = 1;
+
+ const unsigned short AIRBAGSTATUS_DEPLOYED = 2;
+
+ attribute unsigned short airbagStatus;
+
+ };
+
+ [NoInterfaceObject] interface DoorStatus : VehiclePropertyType {
+
+ const unsigned short DOORSTATUS_CLOSED = 0;
+
+ const unsigned short DOORSTATUS_OPEN = 1;
+
+ const unsigned short DOORSTATUS_AJAR = 2;
+
+ attribute unsigned short doorStatus;
+
+ attribute boolean doorLockStatus;
+
+ attribute boolean childLockStatus;
+
+ };
+
+ [NoInterfaceObject] interface SeatBeltStatus : VehiclePropertyType {
+
+ attribute boolean seatBeltStatus;
+
+ };
+
+ [NoInterfaceObject] interface OccupantStatus : VehiclePropertyType {
+
+ const unsigned short OCCUPANTSTATUS_VACANT = 0;
+
+ const unsigned short OCCUPANTSTATUS_CHILD = 1;
+
+ const unsigned short OCCUPANTSTATUS_ADULT = 2;
+
+ attribute unsigned short occupantStatus;
+
+ };
+
+ [NoInterfaceObject] interface ObstacleDistance : VehiclePropertyType {
+
+ const unsigned short DISTANCESENSORLOCATION_LEFTFRONT = 0;
+
+ const unsigned short DISTANCESENSORLOCATION_RIGHTFRONT = 1;
+
+ const unsigned short DISTANCESENSORLOCATION_LEFTREAR = 2;
+
+ const unsigned short DISTANCESENSORLOCATION_RIGHTREAR = 3;
+
+ const unsigned short DISTANCESENSORLOCATION_LEFTBLINDSPOT = 4;
+
+ const unsigned short DISTANCESENSORLOCATION_RIGHTBLINDSPOT = 5;
+
+ attribute double obstacleDistance;
+
+ };
+
+ [NoInterfaceObject] interface NightMode : VehiclePropertyType {
+
+ attribute boolean nightMode;
+
+ };
+
+ [NoInterfaceObject] interface DrivingMode : VehiclePropertyType {
+
+ attribute unsigned short drivingMode;
+
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface VehiclePropertyCallback {
+
+ void onsuccess(VehiclePropertyType value);
+
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface VehiclePropertyErrorCallback {
+
+ void onfailure(VehiclePropertyError error);
+
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface VehiclePropertyListCallback {
+
+ void onsuccess(VehiclePropertyType[] values);
+
+ };
+
+ [Callback=FunctionOnly, NoInterfaceObject] interface SupportedPropertiesCallback {
+
+ void onsuccess(DOMString[] properties);
+
+ };
+
+ dictionary DefrostDictionary {
+
+ unsigned short window;
+
+ boolean defrost;
+
+ };
+};
+</pre>
+ </div>
+ <div id="footer">
+ <div class="copyright" align="center">
+ Except as noted, this content - excluding the Code Examples - is
+ licensed under <a
+ href="http://creativecommons.org/licenses/by/3.0/legalcode"
+ target="_blank">Creative Commons Attribution 3.0</a> and all of the
+ Code Examples contained herein are licensed under <a
+ href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.
+ <br>For details, see the <a
+ href="https://www.tizen.org/content-license" target="_blank">Content
+ License</a>.
+ </div>
+ </div>
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push([ '_setAccount', 'UA-25976949-1' ]);
+ _gaq.push([ '_setDomainName', 'tizen.org' ]);
+ _gaq.push([ '_trackPageview' ]);
+
+ (function() {
+ var ga = document.createElement('script');
+ ga.type = 'text/javascript';
+ ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl'
+ : 'http://www')
+ + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+ </div>
+</body>
+</html>
diff --git a/html/apireference.html b/html/apireference.html
new file mode 100644
index 0000000..bc87f23
--- /dev/null
+++ b/html/apireference.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Tizen IVI API</title>
+<link media="screen" href="./tizen.css" type="text/css" rel="stylesheet">
+</head>
+
+<body id="content" marginwidth="10" marginheight="10">
+ <div id="title" class="api">
+ <h1>Tizen IVI API Reference</h1>
+ <div class="brief">
+ <p>The Tizen IVI API based on JavaScript provides you advanced access to the IVI specific modules.</p>
+ </div>
+ <h4 id="Tizen">Tizen IVI</h4>
+ <table width="90%">
+ <thead>
+ <tr>
+ <th style="width: 20%">API</th>
+ <th>Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="width: 20%"><a href="Locale.html"
+ data-origin="ivi" data-domain="system" data-category="core"
+ data-status="S" data-version=""> Locale </a></td>
+ <td>This reference provides the Locale API specifications.</td>
+ </tr>
+ <tr>
+ <td style="width: 20%"><a href="MediaServer.html"
+ data-origin="ivi" data-domain="system" data-category="core"
+ data-status="S" data-version=""> MediaServer </a></td>
+ <td>This reference provides the MediaServer API
+ specifications.</td>
+ </tr>
+ <tr>
+ <td style="width: 20%"><a href="Speech.html"
+ data-origin="ivi" data-domain="system" data-category="core"
+ data-status="S" data-version=""> Speech </a></td>
+ <td>This reference provides the Speech API specifications.</td>
+ </tr>
+ <tr>
+ <td style="width: 20%"><a href="Vehicle.html"
+ data-origin="ivi" data-domain="system" data-category="core"
+ data-status="S" data-version=""> Vehicle </a></td>
+ <td>This reference provides the Vehicle API specifications.</td>
+ </tr>
+ </tbody>
+ </table>
+ <!--start-->
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-25976949-1']);
+ _gaq.push(['_trackPageview']);
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+ <!--end-->
+
+ <div id="footer">
+ <div class="copyright" align="center">
+ Except as noted, this content - excluding the Code Examples - is
+ licensed under <a
+ href="http://creativecommons.org/licenses/by/3.0/legalcode"
+ target="_blank">Creative Commons Attribution 3.0</a> and all of
+ the Code Examples contained herein are licensed under <a
+ href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.
+ <br>For details, see the <a
+ href="https://www.tizen.org/content-license" target="_blank">Content
+ License</a>.
+ </div>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/html/ga.js b/html/ga.js
new file mode 100644
index 0000000..8f364a1
--- /dev/null
+++ b/html/ga.js
@@ -0,0 +1,65 @@
+(function(){var aa=encodeURIComponent,ba=Infinity,ca=setTimeout,da=isNaN,m=Math,ea=decodeURIComponent;function ha(a,b){return a.name=b}
+var n="push",ia="test",ja="slice",p="replace",ka="load",la="floor",ma="charAt",na="value",q="indexOf",oa="match",pa="port",qa="createElement",ra="path",r="name",g="getTime",u="host",v="toString",w="length",x="prototype",sa="clientWidth",y="split",ta="stopPropagation",ua="scope",z="location",va="search",A="protocol",wa="clientHeight",xa="href",B="substring",ya="apply",za="navigator",C="join",D="toLowerCase",E;function Aa(a,b){switch(b){case 0:return""+a;case 1:return 1*a;case 2:return!!a;case 3:return 1E3*a}return a}function Ba(a){return"function"==typeof a}function Ca(a){return void 0!=a&&-1<(a.constructor+"")[q]("String")}function F(a,b){return void 0==a||"-"==a&&!b||""==a}function Da(a){if(!a||""==a)return"";for(;a&&-1<" \n\r\t"[q](a[ma](0));)a=a[B](1);for(;a&&-1<" \n\r\t"[q](a[ma](a[w]-1));)a=a[B](0,a[w]-1);return a}function Ea(){return m.round(2147483647*m.random())}function Fa(){}
+function G(a,b){if(aa instanceof Function)return b?encodeURI(a):aa(a);H(68);return escape(a)}function I(a){a=a[y]("+")[C](" ");if(ea instanceof Function)try{return ea(a)}catch(b){H(17)}else H(68);return unescape(a)}var Ga=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)},Ha=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,!!d):a.detachEvent&&a.detachEvent("on"+b,c)};
+function Ia(a,b){if(a){var c=J[qa]("script");c.type="text/javascript";c.async=!0;c.src=a;c.id=b;var d=J.getElementsByTagName("script")[0];d.parentNode.insertBefore(c,d);return c}}function K(a){return a&&0<a[w]?a[0]:""}function L(a){var b=a?a[w]:0;return 0<b?a[b-1]:""}var Ja=function(){this.prefix="ga.";this.R={}};Ja[x].set=function(a,b){this.R[this.prefix+a]=b};Ja[x].get=function(a){return this.R[this.prefix+a]};Ja[x].contains=function(a){return void 0!==this.get(a)};function Ka(a){0==a[q]("www.")&&(a=a[B](4));return a[D]()}function La(a,b){var c,d={url:a,protocol:"http",host:"",path:"",d:new Ja,anchor:""};if(!a)return d;c=a[q]("://");0<=c&&(d.protocol=a[B](0,c),a=a[B](c+3));c=a[va]("/|\\?|#");if(0<=c)d.host=a[B](0,c)[D](),a=a[B](c);else return d.host=a[D](),d;c=a[q]("#");0<=c&&(d.anchor=a[B](c+1),a=a[B](0,c));c=a[q]("?");0<=c&&(Na(d.d,a[B](c+1)),a=a[B](0,c));d.anchor&&b&&Na(d.d,d.anchor);a&&"/"==a[ma](0)&&(a=a[B](1));d.path=a;return d}
+function Oa(a,b){function c(a){var b=(a.hostname||"")[y](":")[0][D](),c=(a[A]||"")[D](),c=1*a[pa]||("http:"==c?80:"https:"==c?443:"");a=a.pathname||"";0==a[q]("/")||(a="/"+a);return[b,""+c,a]}var d=b||J[qa]("a");d.href=J[z][xa];var e=(d[A]||"")[D](),f=c(d),Be=d[va]||"",k=e+"//"+f[0]+(f[1]?":"+f[1]:"");0==a[q]("//")?a=e+a:0==a[q]("/")?a=k+a:a&&0!=a[q]("?")?0>a[y]("/")[0][q](":")&&(a=k+f[2][B](0,f[2].lastIndexOf("/"))+"/"+a):a=k+f[2]+(a||Be);d.href=a;e=c(d);return{protocol:(d[A]||"")[D](),host:e[0],
+port:e[1],path:e[2],Oa:d[va]||"",url:a||""}}function Na(a,b){function c(b,c){a.contains(b)||a.set(b,[]);a.get(b)[n](c)}for(var d=Da(b)[y]("&"),e=0;e<d[w];e++)if(d[e]){var f=d[e][q]("=");0>f?c(d[e],"1"):c(d[e][B](0,f),d[e][B](f+1))}}function Pa(a,b){if(F(a)||"["==a[ma](0)&&"]"==a[ma](a[w]-1))return"-";var c=J.domain;return a[q](c+(b&&"/"!=b?b:""))==(0==a[q]("http://")?7:0==a[q]("https://")?8:0)?"0":a};var Qa=0;function Ra(a,b,c){1<=Qa||1<=100*m.random()||ld()||(a=["utmt=error","utmerr="+a,"utmwv=5.4.6","utmn="+Ea(),"utmsp=1"],b&&a[n]("api="+b),c&&a[n]("msg="+G(c[B](0,100))),M.w&&a[n]("aip=1"),Sa(a[C]("&")),Qa++)};var Ta=0,Ua={};function N(a){return Va("x"+Ta++,a)}function Va(a,b){Ua[a]=!!b;return a}
+var Wa=N(),Xa=Va("anonymizeIp"),Ya=N(),$a=N(),ab=N(),bb=N(),O=N(),P=N(),cb=N(),db=N(),eb=N(),fb=N(),gb=N(),hb=N(),ib=N(),jb=N(),kb=N(),lb=N(),nb=N(),ob=N(),pb=N(),qb=N(),rb=N(),sb=N(),tb=N(),ub=N(),vb=N(),wb=N(),xb=N(),yb=N(),zb=N(),Ab=N(),Bb=N(),Cb=N(),Db=N(),Eb=N(),Fb=N(!0),Gb=Va("currencyCode"),Hb=Va("page"),Ib=Va("title"),Jb=N(),Kb=N(),Lb=N(),Mb=N(),Nb=N(),Ob=N(),Pb=N(),Qb=N(),Rb=N(),Q=N(!0),Sb=N(!0),Tb=N(!0),Ub=N(!0),Vb=N(!0),Wb=N(!0),Zb=N(!0),$b=N(!0),ac=N(!0),bc=N(!0),cc=N(!0),R=N(!0),dc=N(!0),
+ec=N(!0),fc=N(!0),gc=N(!0),hc=N(!0),ic=N(!0),jc=N(!0),S=N(!0),kc=N(!0),lc=N(!0),mc=N(!0),nc=N(!0),oc=N(!0),pc=N(!0),qc=N(!0),rc=Va("campaignParams"),sc=N(),tc=Va("hitCallback"),uc=N();N();var vc=N(),wc=N(),xc=N(),yc=N(),zc=N(),Ac=N(),Bc=N(),Cc=N(),Dc=N(),Ec=N(),Fc=N(),Gc=N(),Hc=N(),Ic=N();N();var Mc=N(),Nc=N(),Oc=N(),Oe=Va("uaName"),Pe=Va("uaDomain"),Qe=Va("uaPath");var Re=function(){function a(a,c,d){T($[x],a,c,d)}a("_createTracker",$[x].r,55);a("_getTracker",$[x].oa,0);a("_getTrackerByName",$[x].u,51);a("_getTrackers",$[x].pa,130);a("_anonymizeIp",$[x].aa,16);a("_forceSSL",$[x].la,125);a("_getPlugin",Pc,120)},Se=function(){function a(a,c,d){T(U[x],a,c,d)}Qc("_getName",$a,58);Qc("_getAccount",Wa,64);Qc("_visitCode",Q,54);Qc("_getClientInfo",ib,53,1);Qc("_getDetectTitle",lb,56,1);Qc("_getDetectFlash",jb,65,1);Qc("_getLocalGifPath",wb,57);Qc("_getServiceMode",
+xb,59);V("_setClientInfo",ib,66,2);V("_setAccount",Wa,3);V("_setNamespace",Ya,48);V("_setAllowLinker",fb,11,2);V("_setDetectFlash",jb,61,2);V("_setDetectTitle",lb,62,2);V("_setLocalGifPath",wb,46,0);V("_setLocalServerMode",xb,92,void 0,0);V("_setRemoteServerMode",xb,63,void 0,1);V("_setLocalRemoteServerMode",xb,47,void 0,2);V("_setSampleRate",vb,45,1);V("_setCampaignTrack",kb,36,2);V("_setAllowAnchor",gb,7,2);V("_setCampNameKey",ob,41);V("_setCampContentKey",tb,38);V("_setCampIdKey",nb,39);V("_setCampMediumKey",
+rb,40);V("_setCampNOKey",ub,42);V("_setCampSourceKey",qb,43);V("_setCampTermKey",sb,44);V("_setCampCIdKey",pb,37);V("_setCookiePath",P,9,0);V("_setMaxCustomVariables",yb,0,1);V("_setVisitorCookieTimeout",cb,28,1);V("_setSessionCookieTimeout",db,26,1);V("_setCampaignCookieTimeout",eb,29,1);V("_setReferrerOverride",Jb,49);V("_setSiteSpeedSampleRate",Dc,132);a("_trackPageview",U[x].Fa,1);a("_trackEvent",U[x].F,4);a("_trackPageLoadTime",U[x].Ea,100);a("_trackSocial",U[x].Ga,104);a("_trackTrans",U[x].Ia,
+18);a("_sendXEvent",U[x].t,78);a("_createEventTracker",U[x].ia,74);a("_getVersion",U[x].qa,60);a("_setDomainName",U[x].B,6);a("_setAllowHash",U[x].va,8);a("_getLinkerUrl",U[x].na,52);a("_link",U[x].link,101);a("_linkByPost",U[x].ua,102);a("_setTrans",U[x].za,20);a("_addTrans",U[x].$,21);a("_addItem",U[x].Y,19);a("_clearTrans",U[x].ea,105);a("_setTransactionDelim",U[x].Aa,82);a("_setCustomVar",U[x].wa,10);a("_deleteCustomVar",U[x].ka,35);a("_getVisitorCustomVar",U[x].ra,50);a("_setXKey",U[x].Ca,83);
+a("_setXValue",U[x].Da,84);a("_getXKey",U[x].sa,76);a("_getXValue",U[x].ta,77);a("_clearXKey",U[x].fa,72);a("_clearXValue",U[x].ga,73);a("_createXObj",U[x].ja,75);a("_addIgnoredOrganic",U[x].W,15);a("_clearIgnoredOrganic",U[x].ba,97);a("_addIgnoredRef",U[x].X,31);a("_clearIgnoredRef",U[x].ca,32);a("_addOrganic",U[x].Z,14);a("_clearOrganic",U[x].da,70);a("_cookiePathCopy",U[x].ha,30);a("_get",U[x].ma,106);a("_set",U[x].xa,107);a("_addEventListener",U[x].addEventListener,108);a("_removeEventListener",
+U[x].removeEventListener,109);a("_addDevId",U[x].V);a("_getPlugin",Pc,122);a("_setPageGroup",U[x].ya,126);a("_trackTiming",U[x].Ha,124);a("_initData",U[x].v,2);a("_setVar",U[x].Ba,22);V("_setSessionTimeout",db,27,3);V("_setCookieTimeout",eb,25,3);V("_setCookiePersistence",cb,24,1);a("_setAutoTrackOutbound",Fa,79);a("_setTrackOutboundSubdomains",Fa,81);a("_setHrefExamineLimit",Fa,80)};function Pc(a){var b=this.plugins_;if(b)return b.get(a)}
+var T=function(a,b,c,d){a[b]=function(){try{return void 0!=d&&H(d),c[ya](this,arguments)}catch(a){throw Ra("exc",b,a&&a[r]),a;}}},Qc=function(a,b,c,d){U[x][a]=function(){try{return H(c),Aa(this.a.get(b),d)}catch(e){throw Ra("exc",a,e&&e[r]),e;}}},V=function(a,b,c,d,e){U[x][a]=function(f){try{H(c),void 0==e?this.a.set(b,Aa(f,d)):this.a.set(b,e)}catch(Be){throw Ra("exc",a,Be&&Be[r]),Be;}}},Te=function(a,b){return{type:b,target:a,stopPropagation:function(){throw"aborted";}}};var Rc=RegExp(/(^|\.)doubleclick\.net$/i),Sc=function(a,b){return Rc[ia](J[z].hostname)?!0:"/"!==b?!1:0!=a[q]("www.google.")&&0!=a[q](".google.")&&0!=a[q]("google.")||-1<a[q]("google.org")?!1:!0},Tc=function(a){var b=a.get(bb),c=a.c(P,"/");Sc(b,c)&&a[ta]()};var Zc=function(){var a={},b={},c=new Uc;this.g=function(a,b){c.add(a,b)};var d=new Uc;this.e=function(a,b){d.add(a,b)};var e=!1,f=!1,Be=!0;this.T=function(){e=!0};this.j=function(a){this[ka]();this.set(sc,a,!0);a=new Vc(this);e=!1;d.execute(this);e=!0;b={};this.n();a.Ja()};this.load=function(){e&&(e=!1,this.Ka(),Wc(this),f||(f=!0,c.execute(this),Xc(this),Wc(this)),e=!0)};this.n=function(){if(e)if(f)e=!1,Xc(this),e=!0;else this[ka]()};this.get=function(c){Ua[c]&&this[ka]();return void 0!==b[c]?b[c]:
+a[c]};this.set=function(c,d,e){Ua[c]&&this[ka]();e?b[c]=d:a[c]=d;Ua[c]&&this.n()};this.Za=function(b){a[b]=this.b(b,0)+1};this.b=function(a,b){var c=this.get(a);return void 0==c||""===c?b:1*c};this.c=function(a,b){var c=this.get(a);return void 0==c?b:c+""};this.Ka=function(){if(Be){var b=this.c(bb,""),c=this.c(P,"/");Sc(b,c)||(a[O]=a[hb]&&""!=b?Yc(b):1,Be=!1)}}};Zc[x].stopPropagation=function(){throw"aborted";};
+var Vc=function(a){var b=this;this.q=0;var c=a.get(tc);this.Ua=function(){0<b.q&&c&&(b.q--,b.q||c())};this.Ja=function(){!b.q&&c&&ca(c,10)};a.set(uc,b,!0)};function $c(a,b){b=b||[];for(var c=0;c<b[w];c++){var d=b[c];if(""+a==d||0==d[q](a+"."))return d}return"-"}
+var bd=function(a,b,c){c=c?"":a.c(O,"1");b=b[y](".");if(6!==b[w]||ad(b[0],c))return!1;c=1*b[1];var d=1*b[2],e=1*b[3],f=1*b[4];b=1*b[5];if(!(0<=c&&0<d&&0<e&&0<f&&0<=b))return!1;a.set(Q,c);a.set(Vb,d);a.set(Wb,e);a.set(Zb,f);a.set($b,b);return!0},cd=function(a){var b=a.get(Q),c=a.get(Vb),d=a.get(Wb),e=a.get(Zb),f=a.b($b,1);return[a.b(O,1),void 0!=b?b:"-",c||"-",d||"-",e||"-",f][C](".")},dd=function(a){return[a.b(O,1),a.b(cc,0),a.b(R,1),a.b(dc,0)][C](".")},ed=function(a,b,c){c=c?"":a.c(O,"1");var d=
+b[y](".");if(4!==d[w]||ad(d[0],c))d=null;a.set(cc,d?1*d[1]:0);a.set(R,d?1*d[2]:10);a.set(dc,d?1*d[3]:a.get(ab));return null!=d||!ad(b,c)},fd=function(a,b){var c=G(a.c(Tb,"")),d=[],e=a.get(Fb);if(!b&&e){for(var f=0;f<e[w];f++){var Be=e[f];Be&&1==Be[ua]&&d[n](f+"="+G(Be[r])+"="+G(Be[na])+"=1")}0<d[w]&&(c+="|"+d[C]("^"))}return c?a.b(O,1)+"."+c:null},gd=function(a,b,c){c=c?"":a.c(O,"1");b=b[y](".");if(2>b[w]||ad(b[0],c))return!1;b=b[ja](1)[C](".")[y]("|");0<b[w]&&a.set(Tb,I(b[0]));if(1>=b[w])return!0;
+b=b[1][y](-1==b[1][q](",")?"^":",");for(c=0;c<b[w];c++){var d=b[c][y]("=");if(4==d[w]){var e={};ha(e,I(d[1]));e.value=I(d[2]);e.scope=1;a.get(Fb)[d[0]]=e}}return!0},hd=function(a,b){var c=Ue(a,b);return c?[a.b(O,1),a.b(ec,0),a.b(fc,1),a.b(gc,1),c][C]("."):""},Ue=function(a){function b(b,e){if(!F(a.get(b))){var f=a.c(b,""),f=f[y](" ")[C]("%20"),f=f[y]("+")[C]("%20");c[n](e+"="+f)}}var c=[];b(ic,"utmcid");b(nc,"utmcsr");b(S,"utmgclid");b(kc,"utmgclsrc");b(lc,"utmdclid");b(mc,"utmdsid");b(jc,"utmccn");
+b(oc,"utmcmd");b(pc,"utmctr");b(qc,"utmcct");return c[C]("|")},id=function(a,b,c){c=c?"":a.c(O,"1");b=b[y](".");if(5>b[w]||ad(b[0],c))return a.set(ec,void 0),a.set(fc,void 0),a.set(gc,void 0),a.set(ic,void 0),a.set(jc,void 0),a.set(nc,void 0),a.set(oc,void 0),a.set(pc,void 0),a.set(qc,void 0),a.set(S,void 0),a.set(kc,void 0),a.set(lc,void 0),a.set(mc,void 0),!1;a.set(ec,1*b[1]);a.set(fc,1*b[2]);a.set(gc,1*b[3]);Ve(a,b[ja](4)[C]("."));return!0},Ve=function(a,b){function c(a){return(a=b[oa](a+"=(.*?)(?:\\|utm|$)"))&&
+2==a[w]?a[1]:void 0}function d(b,c){c?(c=e?I(c):c[y]("%20")[C](" "),a.set(b,c)):a.set(b,void 0)}-1==b[q]("=")&&(b=I(b));var e="2"==c("utmcvr");d(ic,c("utmcid"));d(jc,c("utmccn"));d(nc,c("utmcsr"));d(oc,c("utmcmd"));d(pc,c("utmctr"));d(qc,c("utmcct"));d(S,c("utmgclid"));d(kc,c("utmgclsrc"));d(lc,c("utmdclid"));d(mc,c("utmdsid"))},ad=function(a,b){return b?a!=b:!/^\d+$/[ia](a)};var Uc=function(){this.filters=[]};Uc[x].add=function(a,b){this.filters[n]({name:a,s:b})};Uc[x].execute=function(a){try{for(var b=0;b<this.filters[w];b++)this.filters[b].s.call(W,a)}catch(c){}};function jd(a){100!=a.get(vb)&&a.get(Q)%1E4>=100*a.get(vb)&&a[ta]()}function kd(a){ld(a.get(Wa))&&a[ta]()}function md(a){"file:"==J[z][A]&&a[ta]()}function Ge(a){He()&&a[ta]()}function nd(a){a.get(Ib)||a.set(Ib,J.title,!0);a.get(Hb)||a.set(Hb,J[z].pathname+J[z][va],!0)};var od=new function(){var a=[];this.set=function(b){a[b]=!0};this.Xa=function(){for(var b=[],c=0;c<a[w];c++)a[c]&&(b[m[la](c/6)]=b[m[la](c/6)]^1<<c%6);for(c=0;c<b[w];c++)b[c]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"[ma](b[c]||0);return b[C]("")+"~"}};function H(a){od.set(a)};var W=window,J=document,ld=function(a){var b=W._gaUserPrefs;if(b&&b.ioo&&b.ioo()||a&&!0===W["ga-disable-"+a])return!0;try{var c=W.external;if(c&&c._gaUserPrefs&&"oo"==c._gaUserPrefs)return!0}catch(d){}return!1},He=function(){return W[za]&&"preview"==W[za].loadPurpose},We=function(a,b){ca(a,b)},pd=function(a){var b=[],c=J.cookie[y](";");a=RegExp("^\\s*"+a+"=\\s*(.*?)\\s*$");for(var d=0;d<c[w];d++){var e=c[d][oa](a);e&&b[n](e[1])}return b},X=function(a,b,c,d,e,f){e=ld(e)?!1:Sc(d,c)?!1:He()?!1:!0;if(e){if(b&&
+0<=W[za].userAgent[q]("Firefox")){b=b[p](/\n|\r/g," ");e=0;for(var Be=b[w];e<Be;++e){var k=b.charCodeAt(e)&255;if(10==k||13==k)b=b[B](0,e)+"?"+b[B](e+1)}}b&&2E3<b[w]&&(b=b[B](0,2E3),H(69));a=a+"="+b+"; path="+c+"; ";f&&(a+="expires="+(new Date((new Date)[g]()+f)).toGMTString()+"; ");d&&(a+="domain="+d+";");J.cookie=a}};var qd,rd,sd=function(){if(!qd){var a={},b=W[za],c=W.screen;a.Q=c?c.width+"x"+c.height:"-";a.P=c?c.colorDepth+"-bit":"-";a.language=(b&&(b.language||b.browserLanguage)||"-")[D]();a.javaEnabled=b&&b.javaEnabled()?1:0;a.characterSet=J.characterSet||J.charset||"-";try{var d;var e=J.documentElement,f=J.body,Be=f&&f[sa]&&f[wa],b=[];e&&e[sa]&&e[wa]&&("CSS1Compat"===J.compatMode||!Be)?b=[e[sa],e[wa]]:Be&&(b=[f[sa],f[wa]]);d=0>=b[0]||0>=b[1]?"":b[C]("x");a.Wa=d}catch(k){H(135)}qd=a}},td=function(){sd();for(var a=
+qd,b=W[za],a=b.appName+b.version+a.language+b.platform+b.userAgent+a.javaEnabled+a.Q+a.P+(J.cookie?J.cookie:"")+(J.referrer?J.referrer:""),b=a[w],c=W.history[w];0<c;)a+=c--^b++;return Yc(a)},ud=function(a){sd();var b=qd;a.set(Lb,b.Q);a.set(Mb,b.P);a.set(Pb,b.language);a.set(Qb,b.characterSet);a.set(Nb,b.javaEnabled);a.set(Rb,b.Wa);if(a.get(ib)&&a.get(jb)){if(!(b=rd)){var c,d,e;d="ShockwaveFlash";if((b=(b=W[za])?b.plugins:void 0)&&0<b[w])for(c=0;c<b[w]&&!e;c++)d=b[c],-1<d[r][q]("Shockwave Flash")&&
+(e=d.description[y]("Shockwave Flash ")[1]);else{d=d+"."+d;try{c=new ActiveXObject(d+".7"),e=c.GetVariable("$version")}catch(f){}if(!e)try{c=new ActiveXObject(d+".6"),e="WIN 6,0,21,0",c.AllowScriptAccess="always",e=c.GetVariable("$version")}catch(Be){}if(!e)try{c=new ActiveXObject(d),e=c.GetVariable("$version")}catch(k){}e&&(e=e[y](" ")[1][y](","),e=e[0]+"."+e[1]+" r"+e[2])}b=e?e:"-"}rd=b;a.set(Ob,rd)}else a.set(Ob,"-")};var vd=function(a){if(Ba(a))this.s=a;else{var b=a[0],c=b.lastIndexOf(":"),d=b.lastIndexOf(".");this.h=this.i=this.l="";-1==c&&-1==d?this.h=b:-1==c&&-1!=d?(this.i=b[B](0,d),this.h=b[B](d+1)):-1!=c&&-1==d?(this.l=b[B](0,c),this.h=b[B](c+1)):c>d?(this.i=b[B](0,d),this.l=b[B](d+1,c),this.h=b[B](c+1)):(this.i=b[B](0,d),this.h=b[B](d+1));this.k=a[ja](1);this.Ma=!this.l&&"_require"==this.h;this.J=!this.i&&!this.l&&"_provide"==this.h}},Y=function(){T(Y[x],"push",Y[x][n],5);T(Y[x],"_getPlugin",Pc,121);T(Y[x],
+"_createAsyncTracker",Y[x].Sa,33);T(Y[x],"_getAsyncTracker",Y[x].Ta,34);this.I=new Ja;this.p=[]};E=Y[x];E.Na=function(a,b,c){var d=this.I.get(a);if(!Ba(d))return!1;b.plugins_=b.plugins_||new Ja;b.plugins_.set(a,new d(b,c||{}));return!0};E.push=function(a){var b=Z.Va[ya](this,arguments),b=Z.p.concat(b);for(Z.p=[];0<b[w]&&!Z.O(b[0])&&!(b.shift(),0<Z.p[w]););Z.p=Z.p.concat(b);return 0};E.Va=function(a){for(var b=[],c=0;c<arguments[w];c++)try{var d=new vd(arguments[c]);d.J?this.O(d):b[n](d)}catch(e){}return b};
+E.O=function(a){try{if(a.s)a.s[ya](W);else if(a.J)this.I.set(a.k[0],a.k[1]);else{var b="_gat"==a.i?M:"_gaq"==a.i?Z:M.u(a.i);if(a.Ma){if(!this.Na(a.k[0],b,a.k[2])){if(!a.Pa){var c=Oa(""+a.k[1]);var d=c[A],e=J[z][A];var f;if(f="https:"==d||d==e?!0:"http:"!=d?!1:"http:"==e){var Be;t:{var k=Oa(J[z][xa]);if(!(c.Oa||0<=c.url[q]("?")||0<=c[ra][q]("://")||c[u]==k[u]&&c[pa]==k[pa]))for(var s="http:"==c[A]?80:443,t=M.S,b=0;b<t[w];b++)if(c[u]==t[b][0]&&(c[pa]||s)==(t[b][1]||s)&&0==c[ra][q](t[b][2])){Be=!0;break t}Be=
+!1}f=Be&&!ld()}f&&(a.Pa=Ia(c.url))}return!0}}else a.l&&(b=b.plugins_.get(a.l)),b[a.h][ya](b,a.k)}}catch(Za){}};E.Sa=function(a,b){return M.r(a,b||"")};E.Ta=function(a){return M.u(a)};var yd=function(){function a(a,b,c,d){void 0==f[a]&&(f[a]={});void 0==f[a][b]&&(f[a][b]=[]);f[a][b][c]=d}function b(a,b,c){if(void 0!=f[a]&&void 0!=f[a][b])return f[a][b][c]}function c(a,b){if(void 0!=f[a]&&void 0!=f[a][b]){f[a][b]=void 0;var c=!0,d;for(d=0;d<Be[w];d++)if(void 0!=f[a][Be[d]]){c=!1;break}c&&(f[a]=void 0)}}function d(a){var b="",c=!1,d,e;for(d=0;d<Be[w];d++)if(e=a[Be[d]],void 0!=e){c&&(b+=Be[d]);for(var c=[],f=void 0,ga=void 0,ga=0;ga<e[w];ga++)if(void 0!=e[ga]){f="";ga!=mb&&void 0==
+e[ga-1]&&(f+=ga[v]()+Za);for(var Cd=e[ga],Jc="",Yb=void 0,Kc=void 0,Lc=void 0,Yb=0;Yb<Cd[w];Yb++)Kc=Cd[ma](Yb),Lc=Ma[Kc],Jc+=void 0!=Lc?Lc:Kc;f+=Jc;c[n](f)}b+=k+c[C](t)+s;c=!1}else c=!0;return b}var e=this,f=[],Be=["k","v"],k="(",s=")",t="*",Za="!",Ma={"'":"'0"};Ma[s]="'1";Ma[t]="'2";Ma[Za]="'3";var mb=1;e.Ra=function(a){return void 0!=f[a]};e.A=function(){for(var a="",b=0;b<f[w];b++)void 0!=f[b]&&(a+=b[v]()+d(f[b]));return a};e.Qa=function(a){if(void 0==a)return e.A();for(var b=a.A(),c=0;c<f[w];c++)void 0==
+f[c]||a.Ra(c)||(b+=c[v]()+d(f[c]));return b};e.f=function(b,c,d){if(!wd(d))return!1;a(b,"k",c,d);return!0};e.o=function(b,c,d){if(!xd(d))return!1;a(b,"v",c,d[v]());return!0};e.getKey=function(a,c){return b(a,"k",c)};e.N=function(a,c){return b(a,"v",c)};e.L=function(a){c(a,"k")};e.M=function(a){c(a,"v")};T(e,"_setKey",e.f,89);T(e,"_setValue",e.o,90);T(e,"_getKey",e.getKey,87);T(e,"_getValue",e.N,88);T(e,"_clearKey",e.L,85);T(e,"_clearValue",e.M,86)};function wd(a){return"string"==typeof a}
+function xd(a){return!("number"==typeof a||void 0!=Number&&a instanceof Number)||m.round(a)!=a||da(a)||a==ba?!1:!0};var zd=function(a){var b=W.gaGlobal;a&&!b&&(W.gaGlobal=b={});return b},Ad=function(){var a=zd(!0).hid;null==a&&(a=Ea(),zd(!0).hid=a);return a},Dd=function(a){a.set(Kb,Ad());var b=zd();if(b&&b.dh==a.get(O)){var c=b.sid;c&&(a.get(ac)?H(112):H(132),a.set(Zb,c),a.get(Sb)&&a.set(Wb,c));b=b.vid;a.get(Sb)&&b&&(b=b[y]("."),a.set(Q,1*b[0]),a.set(Vb,1*b[1]))}};var Ed,Fd=function(a,b,c,d){var e=a.c(bb,""),f=a.c(P,"/");d=void 0!=d?d:a.b(cb,0);a=a.c(Wa,"");X(b,c,f,e,a,d)},Xc=function(a){var b=a.c(bb,"");a.b(O,1);var c=a.c(P,"/"),d=a.c(Wa,"");X("__utma",cd(a),c,b,d,a.get(cb));X("__utmb",dd(a),c,b,d,a.get(db));X("__utmc",""+a.b(O,1),c,b,d);var e=hd(a,!0);e?X("__utmz",e,c,b,d,a.get(eb)):X("__utmz","",c,b,"",-1);(e=fd(a,!1))?X("__utmv",e,c,b,d,a.get(cb)):X("__utmv","",c,b,"",-1)},Wc=function(a){var b=a.b(O,1);if(!bd(a,$c(b,pd("__utma"))))return a.set(Ub,!0),!1;
+var c=!ed(a,$c(b,pd("__utmb")));a.set(bc,c);id(a,$c(b,pd("__utmz")));gd(a,$c(b,pd("__utmv")));Ed=!c;return!0},Gd=function(a){Ed||0<pd("__utmb")[w]||(X("__utmd","1",a.c(P,"/"),a.c(bb,""),a.c(Wa,""),1E4),0==pd("__utmd")[w]&&a[ta]())};var h=0,Jd=function(a){void 0==a.get(Q)?Hd(a):a.get(Ub)&&!a.get(Mc)?Hd(a):a.get(bc)&&(Id(a),h++,1<h&&H(137))},Kd=function(a){a.get(hc)&&!a.get(ac)&&(Id(a),a.set(fc,a.get($b)))},Hd=function(a){var b=a.get(ab);a.set(Sb,!0);a.set(Q,Ea()^td(a)&2147483647);a.set(Tb,"");a.set(Vb,b);a.set(Wb,b);a.set(Zb,b);a.set($b,1);a.set(ac,!0);a.set(cc,0);a.set(R,10);a.set(dc,b);a.set(Fb,[]);a.set(Ub,!1);a.set(bc,!1)},Id=function(a){a.set(Wb,a.get(Zb));a.set(Zb,a.get(ab));a.Za($b);a.set(ac,!0);a.set(cc,0);a.set(R,10);
+a.set(dc,a.get(ab));a.set(bc,!1)};var Ld="daum:q eniro:search_word naver:query pchome:q images.google:q google:q yahoo:p yahoo:q msn:q bing:q aol:query aol:q lycos:q lycos:query ask:q netscape:query cnn:query about:terms mamma:q voila:rdata virgilio:qs live:q baidu:wd alice:qs yandex:text najdi:q seznam:q rakuten:qt biglobe:q goo.ne:MT wp:szukaj onet:qt yam:k kvasir:q ozu:q terra:query rambler:query conduit:q babylon:q search-results:q avg:q comcast:q incredimail:q startsiden:q go.mail.ru:q search.centrum.cz:q 360.cn:q".split(" "),
+Sd=function(a){if(a.get(kb)&&!a.get(Mc)){for(var b=!F(a.get(ic))||!F(a.get(nc))||!F(a.get(S))||!F(a.get(lc)),c={},d=0;d<Md[w];d++){var e=Md[d];c[e]=a.get(e)}(d=a.get(rc))?(H(149),e=new Ja,Na(e,d),d=e):d=La(J[z][xa],a.get(gb)).d;if("1"!=L(d.get(a.get(ub)))||!b)if(d=Xe(a,d)||Qd(a),d||b||!a.get(ac)||(Pd(a,void 0,"(direct)",void 0,void 0,void 0,"(direct)","(none)",void 0,void 0),d=!0),d&&(a.set(hc,Rd(a,c)),b="(direct)"==a.get(nc)&&"(direct)"==a.get(jc)&&"(none)"==a.get(oc),a.get(hc)||a.get(ac)&&!b))a.set(ec,
+a.get(ab)),a.set(fc,a.get($b)),a.Za(gc)}},Xe=function(a,b){function c(c,d){d=d||"-";var e=L(b.get(a.get(c)));return e&&"-"!=e?I(e):d}var d=L(b.get(a.get(nb)))||"-",e=L(b.get(a.get(qb)))||"-",f=L(b.get(a.get(pb)))||"-",Be=L(b.get("gclsrc"))||"-",k=L(b.get("dclid"))||"-",s=c(ob,"(not set)"),t=c(rb,"(not set)"),Za=c(sb),Ma=c(tb);if(F(d)&&F(f)&&F(k)&&F(e))return!1;var mb=!F(f)&&!F(Be),mb=F(e)&&(!F(k)||mb),Xb=F(Za);if(mb||Xb){var Bd=Nd(a),Bd=La(Bd,!0);(Bd=Od(a,Bd))&&!F(Bd[1]&&!Bd[2])&&(mb&&(e=Bd[0]),Xb&&
+(Za=Bd[1]))}Pd(a,d,e,f,Be,k,s,t,Za,Ma);return!0},Qd=function(a){var b=Nd(a),c=La(b,!0);if(!(void 0!=b&&null!=b&&""!=b&&"0"!=b&&"-"!=b&&0<=b[q]("://"))||c&&-1<c[u][q]("google")&&c.d.contains("q")&&"cse"==c[ra])return!1;if((b=Od(a,c))&&!b[2])return Pd(a,void 0,b[0],void 0,void 0,void 0,"(organic)","organic",b[1],void 0),!0;if(b||!a.get(ac))return!1;t:{for(var b=a.get(Bb),d=Ka(c[u]),e=0;e<b[w];++e)if(-1<d[q](b[e])){a=!1;break t}Pd(a,void 0,d,void 0,void 0,void 0,"(referral)","referral",void 0,"/"+c[ra]);
+a=!0}return a},Od=function(a,b){for(var c=a.get(zb),d=0;d<c[w];++d){var e=c[d][y](":");if(-1<b[u][q](e[0][D]())){var f=b.d.get(e[1]);if(f&&(f=K(f),!f&&-1<b[u][q]("google.")&&(f="(not provided)"),!e[3]||-1<b.url[q](e[3]))){t:{for(var c=f,d=a.get(Ab),c=I(c)[D](),Be=0;Be<d[w];++Be)if(c==d[Be]){c=!0;break t}c=!1}return[e[2]||e[0],f,c]}}}return null},Pd=function(a,b,c,d,e,f,Be,k,s,t){a.set(ic,b);a.set(nc,c);a.set(S,d);a.set(kc,e);a.set(lc,f);a.set(jc,Be);a.set(oc,k);a.set(pc,s);a.set(qc,t)},Md=[jc,ic,
+S,lc,nc,oc,pc,qc],Rd=function(a,b){function c(a){a=(""+a)[y]("+")[C]("%20");return a=a[y](" ")[C]("%20")}function d(c){var d=""+(a.get(c)||"");c=""+(b[c]||"");return 0<d[w]&&d==c}if(d(S)||d(lc))return H(131),!1;for(var e=0;e<Md[w];e++){var f=Md[e],Be=b[f]||"-",f=a.get(f)||"-";if(c(Be)!=c(f))return!0}return!1},Td=RegExp(/^https?:\/\/(www\.)?google(\.com?)?(\.[a-z]{2}t?)?\/?$/i),Nd=function(a){a=Pa(a.get(Jb),a.get(P));try{if(Td[ia](a))return H(136),a+"?q="}catch(b){H(145)}return a};var Ud,Vd,Wd=function(a){Ud=a.c(S,"");Vd=a.c(kc,"")},Xd=function(a){var b=a.c(S,""),c=a.c(kc,"");b!=Ud&&(-1<c[q]("ds")?a.set(mc,void 0):!F(Ud)&&-1<Vd[q]("ds")&&a.set(mc,Ud))};var Zd=function(a){Yd(a,J[z][xa])?(a.set(Mc,!0),H(12)):a.set(Mc,!1)},Yd=function(a,b){if(!a.get(fb))return!1;var c=La(b,a.get(gb)),d=K(c.d.get("__utma")),e=K(c.d.get("__utmb")),f=K(c.d.get("__utmc")),Be=K(c.d.get("__utmx")),k=K(c.d.get("__utmz")),s=K(c.d.get("__utmv")),c=K(c.d.get("__utmk"));if(Yc(""+d+e+f+Be+k+s)!=c){d=I(d);e=I(e);f=I(f);Be=I(Be);f=$d(d+e+f+Be,k,s,c);if(!f)return!1;k=f[0];s=f[1]}if(!bd(a,d,!0))return!1;ed(a,e,!0);id(a,k,!0);gd(a,s,!0);ae(a,Be,!0);return!0},ce=function(a,b,c){var d;
+d=cd(a)||"-";var e=dd(a)||"-",f=""+a.b(O,1)||"-",Be=be(a)||"-",k=hd(a,!1)||"-";a=fd(a,!1)||"-";var s=Yc(""+d+e+f+Be+k+a),t=[];t[n]("__utma="+d);t[n]("__utmb="+e);t[n]("__utmc="+f);t[n]("__utmx="+Be);t[n]("__utmz="+k);t[n]("__utmv="+a);t[n]("__utmk="+s);d=t[C]("&");if(!d)return b;e=b[q]("#");if(c)return 0>e?b+"#"+d:b+"&"+d;c="";f=b[q]("?");0<e&&(c=b[B](e),b=b[B](0,e));return 0>f?b+"?"+d+c:b+"&"+d+c},$d=function(a,b,c,d){for(var e=0;3>e;e++){for(var f=0;3>f;f++){if(d==Yc(a+b+c))return H(127),[b,c];
+var Be=b[p](/ /g,"%20"),k=c[p](/ /g,"%20");if(d==Yc(a+Be+k))return H(128),[Be,k];Be=Be[p](/\+/g,"%20");k=k[p](/\+/g,"%20");if(d==Yc(a+Be+k))return H(129),[Be,k];try{var s=b[oa]("utmctr=(.*?)(?:\\|utm|$)");if(s&&2==s[w]&&(Be=b[p](s[1],G(I(s[1]))),d==Yc(a+Be+c)))return H(139),[Be,c]}catch(t){}b=I(b)}c=I(c)}};var de="|",fe=function(a,b,c,d,e,f,Be,k,s){var t=ee(a,b);t||(t={},a.get(Cb)[n](t));t.id_=b;t.affiliation_=c;t.total_=d;t.tax_=e;t.shipping_=f;t.city_=Be;t.state_=k;t.country_=s;t.items_=t.items_||[];return t},ge=function(a,b,c,d,e,f,Be){a=ee(a,b)||fe(a,b,"",0,0,0,"","","");var k;t:{if(a&&a.items_){k=a.items_;for(var s=0;s<k[w];s++)if(k[s].sku_==c){k=k[s];break t}}k=null}s=k||{};s.transId_=b;s.sku_=c;s.name_=d;s.category_=e;s.price_=f;s.quantity_=Be;k||a.items_[n](s);return s},ee=function(a,b){for(var c=
+a.get(Cb),d=0;d<c[w];d++)if(c[d].id_==b)return c[d];return null};var he,ie=function(a){if(!he){var b;b=J[z].hash;var c=W[r],d=/^#?gaso=([^&]*)/;if(c=(b=(b=b&&b[oa](d)||c&&c[oa](d))?b[1]:K(pd("GASO")))&&b[oa](/^(?:!([-0-9a-z.]{1,40})!)?([-.\w]{10,1200})$/i))Fd(a,"GASO",""+b,0),M._gasoDomain=a.get(bb),M._gasoCPath=a.get(P),a=c[1],Ia("https://www.google.com/analytics/web/inpage/pub/inpage.js?"+(a?"prefix="+a+"&":"")+Ea(),"_gasojs");he=!0}};var ae=function(a,b,c){c&&(b=I(b));c=a.b(O,1);b=b[y](".");2>b[w]||!/^\d+$/[ia](b[0])||(b[0]=""+c,Fd(a,"__utmx",b[C]("."),void 0))},be=function(a,b){var c=$c(a.get(O),pd("__utmx"));"-"==c&&(c="");return b?G(c):c},Ye=function(a){try{var b=La(J[z][xa],!1),c=ea(L(b.d.get("utm_referrer")))||"";c&&a.set(Jb,c);var d=ea(K(b.d.get("utm_expid")))||"";d&&(d=d[y](".")[0],a.set(Oc,""+d))}catch(e){H(146)}},l=function(a){var b=W.gaData&&W.gaData.expId;b&&a.set(Oc,""+b)};var ke=function(a,b){var c=m.min(a.b(Dc,0),100);if(a.b(Q,0)%100>=c)return!1;c=Ze()||$e();if(void 0==c)return!1;var d=c[0];if(void 0==d||d==ba||da(d))return!1;0<d?af(c)?b(je(c)):b(je(c[ja](0,1))):Ga(W,"load",function(){ke(a,b)},!1);return!0},me=function(a,b,c,d){var e=new yd;e.f(14,90,b[B](0,500));e.f(14,91,a[B](0,150));e.f(14,92,""+le(c));void 0!=d&&e.f(14,93,d[B](0,500));e.o(14,90,c);return e},af=function(a){for(var b=1;b<a[w];b++)if(da(a[b])||a[b]==ba||0>a[b])return!1;return!0},le=function(a){return da(a)||
+0>a?0:5E3>a?10*m[la](a/10):5E4>a?100*m[la](a/100):41E5>a?1E3*m[la](a/1E3):41E5},je=function(a){for(var b=new yd,c=0;c<a[w];c++)b.f(14,c+1,""+le(a[c])),b.o(14,c+1,a[c]);return b},Ze=function(){var a=W.performance||W.webkitPerformance;if(a=a&&a.timing){var b=a.navigationStart;if(0==b)H(133);else return[a.loadEventStart-b,a.domainLookupEnd-a.domainLookupStart,a.connectEnd-a.connectStart,a.responseStart-a.requestStart,a.responseEnd-a.responseStart,a.fetchStart-b,a.domInteractive-b,a.domContentLoadedEventStart-
+b]}},$e=function(){if(W.top==W){var a=W.external,b=a&&a.onloadT;a&&!a.isValidLoadTime&&(b=void 0);2147483648<b&&(b=void 0);0<b&&a.setPageReadyTime();return void 0==b?void 0:[b]}};var cf=function(a){if(a.get(Sb))try{var b;t:{var c=pd(a.get(Oe)||"_ga");if(c&&!(1>c[w])){for(var d=[],e=0;e<c[w];e++){var f;var Be=c[e][y]("."),k=Be.shift();if(("GA1"==k||"1"==k)&&1<Be[w]){var s=Be.shift()[y]("-");1==s[w]&&(s[1]="1");s[0]*=1;s[1]*=1;f={Ya:s,$a:Be[C](".")}}else f=void 0;f&&d[n](f)}if(1==d[w]){b=d[0].$a;break t}if(0!=d[w]){var t=a.get(Pe)||a.get(bb),d=bf(d,(0==t[q](".")?t.substr(1):t)[y](".")[w],0);if(1==d[w]){b=d[0].$a;break t}var Za=a.get(Qe)||a.get(P);(c=Za)?(1<c[w]&&"/"==c[ma](c[w]-
+1)&&(c=c.substr(0,c[w]-1)),0!=c[q]("/")&&(c="/"+c),Za=c):Za="/";d=bf(d,"/"==Za?1:Za[y]("/")[w],1);b=d[0].$a;break t}}b=void 0}if(b){var Ma=(""+b)[y](".");2==Ma[w]&&/[0-9.]/[ia](Ma)&&(H(114),a.set(Q,Ma[0]),a.set(Vb,Ma[1]),a.set(Sb,!1))}}catch(mb){H(115)}},bf=function(a,b,c){for(var d=[],e=[],f=128,Be=0;Be<a[w];Be++){var k=a[Be];if(k.Ya[c]==b)d[n](k);else if(k.Ya[c]==f)e[n](k);else k.Ya[c]<f&&(e=[k],f=k.Ya[c])}return 0<d[w]?d:e};var U=function(a,b,c){function d(a){return function(b){if((b=b.get(Nc)[a])&&b[w])for(var c=Te(e,a),d=0;d<b[w];d++)b[d].call(e,c)}}var e=this;this.a=new Zc;this.get=function(a){return this.a.get(a)};this.set=function(a,b,c){this.a.set(a,b,c)};this.set(Wa,b||"UA-XXXXX-X");this.set($a,a||"");this.set(Ya,c||"");this.set(ab,m.round((new Date)[g]()/1E3));this.set(P,"/");this.set(cb,63072E6);this.set(eb,15768E6);this.set(db,18E5);this.set(fb,!1);this.set(yb,50);this.set(gb,!1);this.set(hb,!0);this.set(ib,
+!0);this.set(jb,!0);this.set(kb,!0);this.set(lb,!0);this.set(ob,"utm_campaign");this.set(nb,"utm_id");this.set(pb,"gclid");this.set(qb,"utm_source");this.set(rb,"utm_medium");this.set(sb,"utm_term");this.set(tb,"utm_content");this.set(ub,"utm_nooverride");this.set(vb,100);this.set(Dc,1);this.set(Ec,!1);this.set(wb,"/__utm.gif");this.set(xb,1);this.set(Cb,[]);this.set(Fb,[]);this.set(zb,Ld[ja](0));this.set(Ab,[]);this.set(Bb,[]);this.B("auto");this.set(Jb,J.referrer);Ye(this.a);this.set(Nc,{hit:[],
+load:[]});this.a.g("0",Zd);this.a.g("1",Wd);this.a.g("2",Jd);this.a.g("3",cf);this.a.g("4",Sd);this.a.g("5",Xd);this.a.g("6",Kd);this.a.g("7",d("load"));this.a.g("8",ie);this.a.e("A",kd);this.a.e("B",md);this.a.e("C",Ge);this.a.e("D",Jd);this.a.e("E",jd);this.a.e("F",Tc);this.a.e("G",ne);this.a.e("H",Gd);this.a.e("I",nd);this.a.e("J",ud);this.a.e("K",Dd);this.a.e("L",l);this.a.e("M",d("hit"));this.a.e("N",oe);this.a.e("O",pe);0===this.get(ab)&&H(111);this.a.T();this.H=void 0};E=U[x];
+E.m=function(){var a=this.get(Db);a||(a=new yd,this.set(Db,a));return a};E.La=function(a){for(var b in a){var c=a[b];a.hasOwnProperty(b)&&this.set(b,c,!0)}};E.K=function(a){if(this.get(Ec))return!1;var b=this,c=ke(this.a,function(c){b.set(Hb,a,!0);b.t(c)});this.set(Ec,c);return c};E.Fa=function(a){a&&Ca(a)?(H(13),this.set(Hb,a,!0)):"object"===typeof a&&null!==a&&this.La(a);this.H=a=this.get(Hb);this.a.j("page");this.K(a)};
+E.F=function(a,b,c,d,e){if(""==a||!wd(a)||""==b||!wd(b)||void 0!=c&&!wd(c)||void 0!=d&&!xd(d))return!1;this.set(wc,a,!0);this.set(xc,b,!0);this.set(yc,c,!0);this.set(zc,d,!0);this.set(vc,!!e,!0);this.a.j("event");return!0};E.Ha=function(a,b,c,d,e){var f=this.a.b(Dc,0);1*e===e&&(f=e);if(this.a.b(Q,0)%100>=f)return!1;c=1*(""+c);if(""==a||!wd(a)||""==b||!wd(b)||!xd(c)||da(c)||0>c||0>f||100<f||void 0!=d&&(""==d||!wd(d)))return!1;this.t(me(a,b,c,d));return!0};
+E.Ga=function(a,b,c,d){if(!a||!b)return!1;this.set(Ac,a,!0);this.set(Bc,b,!0);this.set(Cc,c||J[z][xa],!0);d&&this.set(Hb,d,!0);this.a.j("social");return!0};E.Ea=function(){this.set(Dc,10);this.K(this.H)};E.Ia=function(){this.a.j("trans")};E.t=function(a){this.set(Eb,a,!0);this.a.j("event")};E.ia=function(a){this.v();var b=this;return{_trackEvent:function(c,d,e){H(91);b.F(a,c,d,e)}}};E.ma=function(a){return this.get(a)};
+E.xa=function(a,b){if(a)if(Ca(a))this.set(a,b);else if("object"==typeof a)for(var c in a)a.hasOwnProperty(c)&&this.set(c,a[c])};E.addEventListener=function(a,b){var c=this.get(Nc)[a];c&&c[n](b)};E.removeEventListener=function(a,b){for(var c=this.get(Nc)[a],d=0;c&&d<c[w];d++)if(c[d]==b){c.splice(d,1);break}};E.qa=function(){return"5.4.6"};E.B=function(a){this.get(hb);a="auto"==a?Ka(J.domain):a&&"-"!=a&&"none"!=a?a[D]():"";this.set(bb,a)};E.va=function(a){this.set(hb,!!a)};
+E.na=function(a,b){return ce(this.a,a,b)};E.link=function(a,b){if(this.a.get(fb)&&a){var c=ce(this.a,a,b);J[z].href=c}};E.ua=function(a,b){this.a.get(fb)&&a&&a.action&&(a.action=ce(this.a,a.action,b))};
+E.za=function(){this.v();var a=this.a,b=J.getElementById?J.getElementById("utmtrans"):J.utmform&&J.utmform.utmtrans?J.utmform.utmtrans:null;if(b&&b[na]){a.set(Cb,[]);for(var b=b[na][y]("UTM:"),c=0;c<b[w];c++){b[c]=Da(b[c]);for(var d=b[c][y](de),e=0;e<d[w];e++)d[e]=Da(d[e]);"T"==d[0]?fe(a,d[1],d[2],d[3],d[4],d[5],d[6],d[7],d[8]):"I"==d[0]&&ge(a,d[1],d[2],d[3],d[4],d[5],d[6])}}};E.$=function(a,b,c,d,e,f,Be,k){return fe(this.a,a,b,c,d,e,f,Be,k)};E.Y=function(a,b,c,d,e,f){return ge(this.a,a,b,c,d,e,f)};
+E.Aa=function(a){de=a||"|"};E.ea=function(){this.set(Cb,[])};E.wa=function(a,b,c,d){var e=this.a;if(0>=a||a>e.get(yb))a=!1;else if(!b||!c||128<b[w]+c[w])a=!1;else{1!=d&&2!=d&&(d=3);var f={};ha(f,b);f.value=c;f.scope=d;e.get(Fb)[a]=f;a=!0}a&&this.a.n();return a};E.ka=function(a){this.a.get(Fb)[a]=void 0;this.a.n()};E.ra=function(a){return(a=this.a.get(Fb)[a])&&1==a[ua]?a[na]:void 0};E.Ca=function(a,b,c){this.m().f(a,b,c)};E.Da=function(a,b,c){this.m().o(a,b,c)};
+E.sa=function(a,b){return this.m().getKey(a,b)};E.ta=function(a,b){return this.m().N(a,b)};E.fa=function(a){this.m().L(a)};E.ga=function(a){this.m().M(a)};E.ja=function(){return new yd};E.W=function(a){a&&this.get(Ab)[n](a[D]())};E.ba=function(){this.set(Ab,[])};E.X=function(a){a&&this.get(Bb)[n](a[D]())};E.ca=function(){this.set(Bb,[])};E.Z=function(a,b,c,d,e){if(a&&b){a=[a,b[D]()][C](":");if(d||e)a=[a,d,e][C](":");d=this.get(zb);d.splice(c?0:d[w],0,a)}};E.da=function(){this.set(zb,[])};
+E.ha=function(a){this.a[ka]();var b=this.get(P),c=be(this.a);this.set(P,a);this.a.n();ae(this.a,c);this.set(P,b)};E.ya=function(a,b){if(0<a&&5>=a&&Ca(b)&&""!=b){var c=this.get(Fc)||[];c[a]=b;this.set(Fc,c)}};E.V=function(a){a=""+a;if(a[oa](/^[A-Za-z0-9]{1,5}$/)){var b=this.get(Ic)||[];b[n](a);this.set(Ic,b)}};E.v=function(){this.a[ka]()};E.Ba=function(a){a&&""!=a&&(this.set(Tb,a),this.a.j("var"))};var ne=function(a){"trans"!==a.get(sc)&&500<=a.b(cc,0)&&a[ta]();if("event"===a.get(sc)){var b=(new Date)[g](),c=a.b(dc,0),d=a.b(Zb,0),c=m[la]((b-(c!=d?c:1E3*c))/1E3*1);0<c&&(a.set(dc,b),a.set(R,m.min(10,a.b(R,0)+c)));0>=a.b(R,0)&&a[ta]()}},pe=function(a){"event"===a.get(sc)&&a.set(R,m.max(0,a.b(R,10)-1))};var qe=function(){var a=[];this.add=function(b,c,d){d&&(c=G(""+c));a[n](b+"="+c)};this.toString=function(){return a[C]("&")}},re=function(a,b){(b||2!=a.get(xb))&&a.Za(cc)},se=function(a,b){b.add("utmwv","5.4.6");b.add("utms",a.get(cc));b.add("utmn",Ea());var c=J[z].hostname;F(c)||b.add("utmhn",c,!0);c=a.get(vb);100!=c&&b.add("utmsp",c,!0)},te=function(a,b){b.add("utmht",(new Date)[g]());b.add("utmac",Da(a.get(Wa)));a.get(Oc)&&b.add("utmxkey",a.get(Oc),!0);a.get(vc)&&b.add("utmni",1);var c=a.get(Ic);
+c&&0<c[w]&&b.add("utmdid",c[C]("."));ff(a,b);!1!==a.get(Xa)&&(a.get(Xa)||M.w)&&b.add("aip",1);M.bb||(M.bb=a.get(Wa));(1<M.ab()||M.bb!=a.get(Wa))&&b.add("utmmt",1);b.add("utmu",od.Xa())},ue=function(a,b){for(var c=a.get(Fc)||[],d=[],e=1;e<c[w];e++)c[e]&&d[n](e+":"+G(c[e][p](/%/g,"%25")[p](/:/g,"%3A")[p](/,/g,"%2C")));d[w]&&b.add("utmpg",d[C](","))},ff=function(a,b){function c(a,b){b&&d[n](a+"="+b+";")}var d=[];c("__utma",cd(a));c("__utmz",hd(a,!1));c("__utmv",fd(a,!0));c("__utmx",be(a));b.add("utmcc",
+d[C]("+"),!0)},ve=function(a,b){a.get(ib)&&(b.add("utmcs",a.get(Qb),!0),b.add("utmsr",a.get(Lb)),a.get(Rb)&&b.add("utmvp",a.get(Rb)),b.add("utmsc",a.get(Mb)),b.add("utmul",a.get(Pb)),b.add("utmje",a.get(Nb)),b.add("utmfl",a.get(Ob),!0))},we=function(a,b){a.get(lb)&&a.get(Ib)&&b.add("utmdt",a.get(Ib),!0);b.add("utmhid",a.get(Kb));b.add("utmr",Pa(a.get(Jb),a.get(P)),!0);b.add("utmp",G(a.get(Hb),!0),!0)},xe=function(a,b){for(var c=a.get(Db),d=a.get(Eb),e=a.get(Fb)||[],f=0;f<e[w];f++){var Be=e[f];Be&&
+(c||(c=new yd),c.f(8,f,Be[r]),c.f(9,f,Be[na]),3!=Be[ua]&&c.f(11,f,""+Be[ua]))}F(a.get(wc))||F(a.get(xc),!0)||(c||(c=new yd),c.f(5,1,a.get(wc)),c.f(5,2,a.get(xc)),e=a.get(yc),void 0!=e&&c.f(5,3,e),e=a.get(zc),void 0!=e&&c.o(5,1,e));c?b.add("utme",c.Qa(d),!0):d&&b.add("utme",d.A(),!0)},ye=function(a,b,c){var d=new qe;re(a,c);se(a,d);d.add("utmt","tran");d.add("utmtid",b.id_,!0);d.add("utmtst",b.affiliation_,!0);d.add("utmtto",b.total_,!0);d.add("utmttx",b.tax_,!0);d.add("utmtsp",b.shipping_,!0);d.add("utmtci",
+b.city_,!0);d.add("utmtrg",b.state_,!0);d.add("utmtco",b.country_,!0);xe(a,d);ve(a,d);we(a,d);(b=a.get(Gb))&&d.add("utmcu",b,!0);c||(ue(a,d),te(a,d));return d[v]()},ze=function(a,b,c){var d=new qe;re(a,c);se(a,d);d.add("utmt","item");d.add("utmtid",b.transId_,!0);d.add("utmipc",b.sku_,!0);d.add("utmipn",b.name_,!0);d.add("utmiva",b.category_,!0);d.add("utmipr",b.price_,!0);d.add("utmiqt",b.quantity_,!0);xe(a,d);ve(a,d);we(a,d);(b=a.get(Gb))&&d.add("utmcu",b,!0);c||(ue(a,d),te(a,d));return d[v]()},
+Ae=function(a,b){var c=a.get(sc);if("page"==c)c=new qe,re(a,b),se(a,c),xe(a,c),ve(a,c),we(a,c),b||(ue(a,c),te(a,c)),c=[c[v]()];else if("event"==c)c=new qe,re(a,b),se(a,c),c.add("utmt","event"),xe(a,c),ve(a,c),we(a,c),b||(ue(a,c),te(a,c)),c=[c[v]()];else if("var"==c)c=new qe,re(a,b),se(a,c),c.add("utmt","var"),!b&&te(a,c),c=[c[v]()];else if("trans"==c)for(var c=[],d=a.get(Cb),e=0;e<d[w];++e){c[n](ye(a,d[e],b));for(var f=d[e].items_,Be=0;Be<f[w];++Be)c[n](ze(a,f[Be],b))}else"social"==c?b?c=[]:(c=new qe,
+re(a,b),se(a,c),c.add("utmt","social"),c.add("utmsn",a.get(Ac),!0),c.add("utmsa",a.get(Bc),!0),c.add("utmsid",a.get(Cc),!0),xe(a,c),ve(a,c),we(a,c),ue(a,c),te(a,c),c=[c[v]()]):"feedback"==c?b?c=[]:(c=new qe,re(a,b),se(a,c),c.add("utmt","feedback"),c.add("utmfbid",a.get(Gc),!0),c.add("utmfbpr",a.get(Hc),!0),xe(a,c),ve(a,c),we(a,c),ue(a,c),te(a,c),c=[c[v]()]):c=[];return c},oe=function(a){var b,c=a.get(xb),d=a.get(uc),e=d&&d.Ua,f=0;if(0==c||2==c){var Be=a.get(wb)+"?";b=Ae(a,!0);for(var k=0,s=b[w];k<
+s;k++)Sa(b[k],e,Be,!0),f++}if(1==c||2==c)for(b=Ae(a),k=0,s=b[w];k<s;k++)try{Sa(b[k],e),f++}catch(t){t&&Ra(t[r],void 0,t.message)}d&&(d.q=f)};var Ce=function(a){ha(this,"len");this.message=a+"-8192"},De=function(a){ha(this,"ff2post");this.message=a+"-2036"},Sa=function(a,b,c,d){b=b||Fa;if(d||2036>=a[w])gf(a,b,c);else if(8192>=a[w]){if(0<=W[za].userAgent[q]("Firefox")&&![].reduce)throw new De(a[w]);hf(a,b)||Ee(a,b)}else throw new Ce(a[w]);},gf=function(a,b,c){c=c||("https:"==J[z][A]||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com")+"/__utm.gif?";var d=new Image(1,1);d.src=c+a;d.onload=function(){d.onload=null;d.onerror=
+null;b()};d.onerror=function(){d.onload=null;d.onerror=null;b()}},hf=function(a,b){var c,d=("https:"==J[z][A]||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com")+"/p/__utm.gif",e=W.XDomainRequest;if(e)c=new e,c.open("POST",d);else if(e=W.XMLHttpRequest)e=new e,"withCredentials"in e&&(c=e,c.open("POST",d,!0),c.setRequestHeader("Content-Type","text/plain"));if(c)return c.onreadystatechange=function(){4==c.readyState&&(b(),c=null)},c.send(a),!0},Ee=function(a,b){if(J.body){a=aa(a);
+try{var c=J[qa]('<iframe name="'+a+'"></iframe>')}catch(d){c=J[qa]("iframe"),ha(c,a)}c.height="0";c.width="0";c.style.display="none";c.style.visibility="hidden";var e=J[z],e=("https:"==J[z][A]||M.G?"https://ssl.google-analytics.com":"http://www.google-analytics.com")+"/u/post_iframe.html#"+aa(e[A]+"//"+e[u]+"/favicon.ico"),f=function(){c.src="";c.parentNode&&c.parentNode.removeChild(c)};Ga(W,"beforeunload",f);var Be=!1,k=0,s=function(){if(!Be){try{if(9<k||c.contentWindow[z][u]==J[z][u]){Be=!0;f();
+Ha(W,"beforeunload",f);b();return}}catch(a){}k++;ca(s,200)}};Ga(c,"load",s);J.body.appendChild(c);c.src=e}else We(function(){Ee(a,b)},100)};var $=function(){this.G=this.w=!1;this.C={};this.D=[];this.U=0;this.S=[["www.google-analytics.com","","/plugins/"]];this._gasoCPath=this._gasoDomain=this.bb=void 0;Re();Se()};E=$[x];E.oa=function(a,b){return this.r(a,void 0,b)};E.r=function(a,b,c){b&&H(23);c&&H(67);void 0==b&&(b="~"+M.U++);a=new U(b,a,c);M.C[b]=a;M.D[n](a);return a};E.u=function(a){a=a||"";return M.C[a]||M.r(void 0,a)};E.pa=function(){return M.D[ja](0)};E.ab=function(){return M.D[w]};E.aa=function(){this.w=!0};
+E.la=function(){this.G=!0};var Fe=function(a){if("prerender"==J.webkitVisibilityState)return!1;a();return!0};var M=new $;var Ie=W._gat;Ie&&Ba(Ie._getTracker)?M=Ie:W._gat=M;var Z=new Y;(function(a){if(!Fe(a)){H(123);var b=!1,c=function(){!b&&Fe(a)&&(b=!0,Ha(J,"webkitvisibilitychange",c))};Ga(J,"webkitvisibilitychange",c)}})(function(){var a=W._gaq,b=!1;if(a&&Ba(a[n])&&(b="[object Array]"==Object[x][v].call(Object(a)),!b)){Z=a;return}W._gaq=Z;b&&Z[n][ya](Z,a)});function Yc(a){var b=1,c=0,d;if(a)for(b=0,d=a[w]-1;0<=d;d--)c=a.charCodeAt(d),b=(b<<6&268435455)+c+(c<<14),c=b&266338304,b=0!=c?b^c>>21:b;return b};})();
diff --git a/html/snippet.css b/html/snippet.css
new file mode 100644
index 0000000..f101370
--- /dev/null
+++ b/html/snippet.css
@@ -0,0 +1,52 @@
+/* Pretty printing styles. Used with prettify.js. */
+
+/* SPAN elements with the classes below are added by prettyprint. */
+.pln { color: #000 } /* plain text */
+
+@media screen {
+ .str { color: #793AFF } /* string content */
+ .kwd { color: #7F0055 } /* a keyword */
+ .com { color: green} /* a comment */
+ .typ { color: #1C1C1C } /* a type name */
+ .lit { color: black } /* a literal value */
+ /* punctuation, lisp open bracket, lisp close bracket */
+ .pun, .opn, .clo { color: #1C1C1C}
+ .tag { color: #008 } /* a markup tag name */
+ .atn { color: #606 } /* a markup attribute name */
+ .atv { color: #793AFF} /* #080a markup attribute value */
+ .dec, .var { color: #606 } /* a declaration; a variable name */
+ .fun { color: red } /* a function name */
+}
+
+/* Use higher contrast and text-weight for printable form. */
+@media print, projection {
+ .str { color: #060 }
+ .kwd { color: #006; font-weight: bold }
+ .com { color: #600; font-style: italic }
+ .typ { color: #404; font-weight: bold }
+ .lit { color: #044 }
+ .pun, .opn, .clo { color: #440 }
+ .tag { color: #006; font-weight: bold }
+ .atn { color: #404 }
+ .atv { color: #060 }
+}
+
+/* Put a border around prettyprinted code snippets. */
+pre.prettyprint { overflow: auto; padding: 2px; border: 1px solid #888 }
+
+/* Specify class=linenums on a pre to get line numbering */
+ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */
+li.L0,
+li.L1,
+li.L2,
+li.L3,
+li.L5,
+li.L6,
+li.L7,
+li.L8 { list-style-type: none }
+/* Alternate shading for lines */
+li.L1,
+li.L3,
+li.L5,
+li.L7,
+li.L9 { background: #eee }
diff --git a/html/snippet.js b/html/snippet.js
new file mode 100644
index 0000000..6d55a6c
--- /dev/null
+++ b/html/snippet.js
@@ -0,0 +1,1473 @@
+// Copyright (C) 2006 Google Inc.
+//
+// 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.
+
+
+/**
+ * @fileoverview
+ * some functions for browser-side pretty printing of code contained in html.
+ *
+ * <p>
+ * For a fairly comprehensive set of languages see the
+ * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a>
+ * file that came with this source. At a minimum, the lexer should work on a
+ * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
+ * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk
+ * and a subset of Perl, but, because of commenting conventions, doesn't work on
+ * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
+ * <p>
+ * Usage: <ol>
+ * <li> include this source file in an html page via
+ * {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
+ * <li> define style rules. See the example page for examples.
+ * <li> mark the {@code <pre>} and {@code <code>} tags in your source with
+ * {@code class=prettyprint.}
+ * You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
+ * printer needs to do more substantial DOM manipulations to support that, so
+ * some css styles may not be preserved.
+ * </ol>
+ * That's it. I wanted to keep the API as simple as possible, so there's no
+ * need to specify which language the code is in, but if you wish, you can add
+ * another class to the {@code <pre>} or {@code <code>} element to specify the
+ * language, as in {@code <pre class="prettyprint lang-java">}. Any class that
+ * starts with "lang-" followed by a file extension, specifies the file type.
+ * See the "lang-*.js" files in this directory for code that implements
+ * per-language file handlers.
+ * <p>
+ * Change log:<br>
+ * cbeust, 2006/08/22
+ * <blockquote>
+ * Java annotations (start with "@") are now captured as literals ("lit")
+ * </blockquote>
+ * @requires console
+ */
+
+// JSLint declarations
+/*global console, document, navigator, setTimeout, window */
+
+/**
+ * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
+ * UI events.
+ * If set to {@code false}, {@code prettyPrint()} is synchronous.
+ */
+window['PR_SHOULD_USE_CONTINUATION'] = true;
+
+(function () {
+ // Keyword lists for various languages.
+ // We use things that coerce to strings to make them compact when minified
+ // and to defeat aggressive optimizers that fold large string constants.
+ var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
+ var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +
+ "double,enum,extern,float,goto,int,long,register,short,signed,sizeof," +
+ "static,struct,switch,typedef,union,unsigned,void,volatile"];
+ var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
+ "new,operator,private,protected,public,this,throw,true,try,typeof"];
+ var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
+ "concept,concept_map,const_cast,constexpr,decltype," +
+ "dynamic_cast,explicit,export,friend,inline,late_check," +
+ "mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast," +
+ "template,typeid,typename,using,virtual,where"];
+ var JAVA_KEYWORDS = [COMMON_KEYWORDS,
+ "abstract,boolean,extends,final,finally,implements,import," +
+ "instanceof,null,native,package,strictfp,super,synchronized,throws," +
+ "transient"];
+ var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
+ "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
+ "fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock," +
+ "object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed," +
+ "stackalloc,string,uint,ulong,unchecked,unsafe,ushort,var,byte,"];
+ var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
+ "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
+ "true,try,unless,until,when,while,yes";
+ var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
+ "debugger,eval,export,function,null,undefined,var," +
+ "Infinity,NaN"];
+ var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,foreach,for," +
+ "goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
+ "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
+ var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
+ "elif,except,exec,finally,from,global,import,in,is,lambda," +
+ "nonlocal,not,or,pass,print,raise,try,with,yield," +
+ "False,True,None"];
+ var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
+ "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
+ "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
+ "BEGIN,END"];
+ var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
+ "function,in,local,set,then,until"];
+ var ALL_KEYWORDS = [
+ CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS +
+ PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
+ var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
+
+ // token style names. correspond to css classes
+ /**
+ * token style for a string literal
+ * @const
+ */
+ var PR_STRING = 'str';
+ /**
+ * token style for a keyword
+ * @const
+ */
+ var PR_KEYWORD = 'kwd';
+ /**
+ * token style for a comment
+ * @const
+ */
+ var PR_COMMENT = 'com';
+ /**
+ * token style for a type
+ * @const
+ */
+ var PR_TYPE = 'typ';
+ /**
+ * token style for a literal value. e.g. 1, null, true.
+ * @const
+ */
+ var PR_LITERAL = 'lit';
+ /**
+ * token style for a punctuation string.
+ * @const
+ */
+ var PR_PUNCTUATION = 'pun';
+ /**
+ * token style for a punctuation string.
+ * @const
+ */
+ var PR_PLAIN = 'pln';
+
+ /**
+ * token style for an sgml tag.
+ * @const
+ */
+ var PR_TAG = 'tag';
+ /**
+ * token style for a markup declaration such as a DOCTYPE.
+ * @const
+ */
+ var PR_DECLARATION = 'dec';
+ /**
+ * token style for embedded source.
+ * @const
+ */
+ var PR_SOURCE = 'src';
+ /**
+ * token style for an sgml attribute name.
+ * @const
+ */
+ var PR_ATTRIB_NAME = 'atn';
+ /**
+ * token style for an sgml attribute value.
+ * @const
+ */
+ var PR_ATTRIB_VALUE = 'atv';
+
+ /**
+ * A class that indicates a section of markup that is not code, e.g. to allow
+ * embedding of line numbers within code listings.
+ * @const
+ */
+ var PR_NOCODE = 'nocode';
+
+/**
+ * A set of tokens that can precede a regular expression literal in
+ * javascript
+ * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
+ * has the full list, but I've removed ones that might be problematic when
+ * seen in languages that don't support regular expression literals.
+ *
+ * <p>Specifically, I've removed any keywords that can't precede a regexp
+ * literal in a syntactically legal javascript program, and I've removed the
+ * "in" keyword since it's not a keyword in many languages, and might be used
+ * as a count of inches.
+ *
+ * <p>The link a above does not accurately describe EcmaScript rules since
+ * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
+ * very well in practice.
+ *
+ * @private
+ * @const
+ */
+var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
+
+// CAVEAT: this does not properly handle the case where a regular
+// expression immediately follows another since a regular expression may
+// have flags for case-sensitivity and the like. Having regexp tokens
+// adjacent is not valid in any language I'm aware of, so I'm punting.
+// TODO: maybe style special characters inside a regexp as punctuation.
+
+
+ /**
+ * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
+ * matches the union of the sets of strings matched by the input RegExp.
+ * Since it matches globally, if the input strings have a start-of-input
+ * anchor (/^.../), it is ignored for the purposes of unioning.
+ * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
+ * @return {RegExp} a global regex.
+ */
+ function combinePrefixPatterns(regexs) {
+ var capturedGroupIndex = 0;
+
+ var needToFoldCase = false;
+ var ignoreCase = false;
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.ignoreCase) {
+ ignoreCase = true;
+ } else if (/[a-z]/i.test(regex.source.replace(
+ /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
+ needToFoldCase = true;
+ ignoreCase = false;
+ break;
+ }
+ }
+
+ var escapeCharToCodeUnit = {
+ 'b': 8,
+ 't': 9,
+ 'n': 0xa,
+ 'v': 0xb,
+ 'f': 0xc,
+ 'r': 0xd
+ };
+
+ function decodeEscape(charsetPart) {
+ var cc0 = charsetPart.charCodeAt(0);
+ if (cc0 !== 92 /* \\ */) {
+ return cc0;
+ }
+ var c1 = charsetPart.charAt(1);
+ cc0 = escapeCharToCodeUnit[c1];
+ if (cc0) {
+ return cc0;
+ } else if ('0' <= c1 && c1 <= '7') {
+ return parseInt(charsetPart.substring(1), 8);
+ } else if (c1 === 'u' || c1 === 'x') {
+ return parseInt(charsetPart.substring(2), 16);
+ } else {
+ return charsetPart.charCodeAt(1);
+ }
+ }
+
+ function encodeEscape(charCode) {
+ if (charCode < 0x20) {
+ return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
+ }
+ var ch = String.fromCharCode(charCode);
+ if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
+ ch = '\\' + ch;
+ }
+ return ch;
+ }
+
+ function caseFoldCharset(charSet) {
+ var charsetParts = charSet.substring(1, charSet.length - 1).match(
+ new RegExp(
+ '\\\\u[0-9A-Fa-f]{4}'
+ + '|\\\\x[0-9A-Fa-f]{2}'
+ + '|\\\\[0-3][0-7]{0,2}'
+ + '|\\\\[0-7]{1,2}'
+ + '|\\\\[\\s\\S]'
+ + '|-'
+ + '|[^-\\\\]',
+ 'g'));
+ var groups = [];
+ var ranges = [];
+ var inverse = charsetParts[0] === '^';
+ for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
+ var p = charsetParts[i];
+ if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups.
+ groups.push(p);
+ } else {
+ var start = decodeEscape(p);
+ var end;
+ if (i + 2 < n && '-' === charsetParts[i + 1]) {
+ end = decodeEscape(charsetParts[i + 2]);
+ i += 2;
+ } else {
+ end = start;
+ }
+ ranges.push([start, end]);
+ // If the range might intersect letters, then expand it.
+ // This case handling is too simplistic.
+ // It does not deal with non-latin case folding.
+ // It works for latin source code identifiers though.
+ if (!(end < 65 || start > 122)) {
+ if (!(end < 65 || start > 90)) {
+ ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
+ }
+ if (!(end < 97 || start > 122)) {
+ ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
+ }
+ }
+ }
+ }
+
+ // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
+ // -> [[1, 12], [14, 14], [16, 17]]
+ ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
+ var consolidatedRanges = [];
+ var lastRange = [NaN, NaN];
+ for (var i = 0; i < ranges.length; ++i) {
+ var range = ranges[i];
+ if (range[0] <= lastRange[1] + 1) {
+ lastRange[1] = Math.max(lastRange[1], range[1]);
+ } else {
+ consolidatedRanges.push(lastRange = range);
+ }
+ }
+
+ var out = ['['];
+ if (inverse) { out.push('^'); }
+ out.push.apply(out, groups);
+ for (var i = 0; i < consolidatedRanges.length; ++i) {
+ var range = consolidatedRanges[i];
+ out.push(encodeEscape(range[0]));
+ if (range[1] > range[0]) {
+ if (range[1] + 1 > range[0]) { out.push('-'); }
+ out.push(encodeEscape(range[1]));
+ }
+ }
+ out.push(']');
+ return out.join('');
+ }
+
+ function allowAnywhereFoldCaseAndRenumberGroups(regex) {
+ // Split into character sets, escape sequences, punctuation strings
+ // like ('(', '(?:', ')', '^'), and runs of characters that do not
+ // include any of the above.
+ var parts = regex.source.match(
+ new RegExp(
+ '(?:'
+ + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set
+ + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape
+ + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape
+ + '|\\\\[0-9]+' // a back-reference or octal escape
+ + '|\\\\[^ux0-9]' // other escape sequence
+ + '|\\(\\?[:!=]' // start of a non-capturing group
+ + '|[\\(\\)\\^]' // start/emd of a group, or line start
+ + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
+ + ')',
+ 'g'));
+ var n = parts.length;
+
+ // Maps captured group numbers to the number they will occupy in
+ // the output or to -1 if that has not been determined, or to
+ // undefined if they need not be capturing in the output.
+ var capturedGroups = [];
+
+ // Walk over and identify back references to build the capturedGroups
+ // mapping.
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ // groups are 1-indexed, so max group index is count of '('
+ ++groupIndex;
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue && decimalValue <= groupIndex) {
+ capturedGroups[decimalValue] = -1;
+ }
+ }
+ }
+
+ // Renumber groups and reduce capturing groups to non-capturing groups
+ // where possible.
+ for (var i = 1; i < capturedGroups.length; ++i) {
+ if (-1 === capturedGroups[i]) {
+ capturedGroups[i] = ++capturedGroupIndex;
+ }
+ }
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ ++groupIndex;
+ if (capturedGroups[groupIndex] === undefined) {
+ parts[i] = '(?:';
+ }
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue && decimalValue <= groupIndex) {
+ parts[i] = '\\' + capturedGroups[groupIndex];
+ }
+ }
+ }
+
+ // Remove any prefix anchors so that the output will match anywhere.
+ // ^^ really does mean an anchored match though.
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
+ }
+
+ // Expand letters to groups to handle mixing of case-sensitive and
+ // case-insensitive patterns if necessary.
+ if (regex.ignoreCase && needToFoldCase) {
+ for (var i = 0; i < n; ++i) {
+ var p = parts[i];
+ var ch0 = p.charAt(0);
+ if (p.length >= 2 && ch0 === '[') {
+ parts[i] = caseFoldCharset(p);
+ } else if (ch0 !== '\\') {
+ // TODO: handle letters in numeric escapes.
+ parts[i] = p.replace(
+ /[a-zA-Z]/g,
+ function (ch) {
+ var cc = ch.charCodeAt(0);
+ return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
+ });
+ }
+ }
+ }
+
+ return parts.join('');
+ }
+
+ var rewritten = [];
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.global || regex.multiline) { throw new Error('' + regex); }
+ rewritten.push(
+ '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
+ }
+
+ return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
+ }
+
+ /**
+ * Split markup into a string of source code and an array mapping ranges in
+ * that string to the text nodes in which they appear.
+ *
+ * <p>
+ * The HTML DOM structure:</p>
+ * <pre>
+ * (Element "p"
+ * (Element "b"
+ * (Text "print ")) ; #1
+ * (Text "'Hello '") ; #2
+ * (Element "br") ; #3
+ * (Text " + 'World';")) ; #4
+ * </pre>
+ * <p>
+ * corresponds to the HTML
+ * {@code <p><b>print </b>'Hello '<br> + 'World';</p>}.</p>
+ *
+ * <p>
+ * It will produce the output:</p>
+ * <pre>
+ * {
+ * sourceCode: "print 'Hello '\n + 'World';",
+ * // 1 2
+ * // 012345678901234 5678901234567
+ * spans: [0, #1, 6, #2, 14, #3, 15, #4]
+ * }
+ * </pre>
+ * <p>
+ * where #1 is a reference to the {@code "print "} text node above, and so
+ * on for the other text nodes.
+ * </p>
+ *
+ * <p>
+ * The {@code} spans array is an array of pairs. Even elements are the start
+ * indices of substrings, and odd elements are the text nodes (or BR elements)
+ * that contain the text for those substrings.
+ * Substrings continue until the next index or the end of the source.
+ * </p>
+ *
+ * @param {Node} node an HTML DOM subtree containing source-code.
+ * @return {Object} source code and the text nodes in which they occur.
+ */
+ function extractSourceSpans(node) {
+ var nocode = /(?:^|\s)nocode(?:\s|$)/;
+
+ var chunks = [];
+ var length = 0;
+ var spans = [];
+ var k = 0;
+
+ var whitespace;
+ if (node.currentStyle) {
+ whitespace = node.currentStyle.whiteSpace;
+ } else if (window.getComputedStyle) {
+ whitespace = document.defaultView.getComputedStyle(node, null)
+ .getPropertyValue('white-space');
+ }
+ var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
+
+ function walk(node) {
+ switch (node.nodeType) {
+ case 1: // Element
+ if (nocode.test(node.className)) { return; }
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ walk(child);
+ }
+ var nodeName = node.nodeName;
+ if ('BR' === nodeName || 'LI' === nodeName) {
+ chunks[k] = '\n';
+ spans[k << 1] = length++;
+ spans[(k++ << 1) | 1] = node;
+ }
+ break;
+ case 3: case 4: // Text
+ var text = node.nodeValue;
+ if (text.length) {
+ if (!isPreformatted) {
+ text = text.replace(/[ \t\r\n]+/g, ' ');
+ } else {
+ text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
+ }
+ // TODO: handle tabs here?
+ chunks[k] = text;
+ spans[k << 1] = length;
+ length += text.length;
+ spans[(k++ << 1) | 1] = node;
+ }
+ break;
+ }
+ }
+
+ walk(node);
+
+ return {
+ sourceCode: chunks.join('').replace(/\n$/, ''),
+ spans: spans
+ };
+ }
+
+ /**
+ * Apply the given language handler to sourceCode and add the resulting
+ * decorations to out.
+ * @param {number} basePos the index of sourceCode within the chunk of source
+ * whose decorations are already present on out.
+ */
+ function appendDecorations(basePos, sourceCode, langHandler, out) {
+ if (!sourceCode) { return; }
+ var job = {
+ sourceCode: sourceCode,
+ basePos: basePos
+ };
+ langHandler(job);
+ out.push.apply(out, job.decorations);
+ }
+
+ var notWs = /\S/;
+
+ /**
+ * Given an element, if it contains only one child element and any text nodes
+ * it contains contain only space characters, return the sole child element.
+ * Otherwise returns undefined.
+ * <p>
+ * This is meant to return the CODE element in {@code <pre><code ...>} when
+ * there is a single child element that contains all the non-space textual
+ * content, but not to return anything where there are multiple child elements
+ * as in {@code <pre><code>...</code><code>...</code></pre>} or when there
+ * is textual content.
+ */
+ function childContentWrapper(element) {
+ var wrapper = undefined;
+ for (var c = element.firstChild; c; c = c.nextSibling) {
+ var type = c.nodeType;
+ wrapper = (type === 1) // Element Node
+ ? (wrapper ? element : c)
+ : (type === 3) // Text Node
+ ? (notWs.test(c.nodeValue) ? element : wrapper)
+ : wrapper;
+ }
+ return wrapper === element ? undefined : wrapper;
+ }
+
+ /** Given triples of [style, pattern, context] returns a lexing function,
+ * The lexing function interprets the patterns to find token boundaries and
+ * returns a decoration list of the form
+ * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
+ * where index_n is an index into the sourceCode, and style_n is a style
+ * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to
+ * all characters in sourceCode[index_n-1:index_n].
+ *
+ * The stylePatterns is a list whose elements have the form
+ * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
+ *
+ * Style is a style constant like PR_PLAIN, or can be a string of the
+ * form 'lang-FOO', where FOO is a language extension describing the
+ * language of the portion of the token in $1 after pattern executes.
+ * E.g., if style is 'lang-lisp', and group 1 contains the text
+ * '(hello (world))', then that portion of the token will be passed to the
+ * registered lisp handler for formatting.
+ * The text before and after group 1 will be restyled using this decorator
+ * so decorators should take care that this doesn't result in infinite
+ * recursion. For example, the HTML lexer rule for SCRIPT elements looks
+ * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match
+ * '<script>foo()<\/script>', which would cause the current decorator to
+ * be called with '<script>' which would not match the same rule since
+ * group 1 must not be empty, so it would be instead styled as PR_TAG by
+ * the generic tag rule. The handler registered for the 'js' extension would
+ * then be called with 'foo()', and finally, the current decorator would
+ * be called with '<\/script>' which would not match the original rule and
+ * so the generic tag rule would identify it as a tag.
+ *
+ * Pattern must only match prefixes, and if it matches a prefix, then that
+ * match is considered a token with the same style.
+ *
+ * Context is applied to the last non-whitespace, non-comment token
+ * recognized.
+ *
+ * Shortcut is an optional string of characters, any of which, if the first
+ * character, gurantee that this pattern and only this pattern matches.
+ *
+ * @param {Array} shortcutStylePatterns patterns that always start with
+ * a known character. Must have a shortcut string.
+ * @param {Array} fallthroughStylePatterns patterns that will be tried in
+ * order if the shortcut ones fail. May have shortcuts.
+ *
+ * @return {function (Object)} a
+ * function that takes source code and returns a list of decorations.
+ */
+ function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
+ var shortcuts = {};
+ var tokenizer;
+ (function () {
+ var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
+ var allRegexs = [];
+ var regexKeys = {};
+ for (var i = 0, n = allPatterns.length; i < n; ++i) {
+ var patternParts = allPatterns[i];
+ var shortcutChars = patternParts[3];
+ if (shortcutChars) {
+ for (var c = shortcutChars.length; --c >= 0;) {
+ shortcuts[shortcutChars.charAt(c)] = patternParts;
+ }
+ }
+ var regex = patternParts[1];
+ var k = '' + regex;
+ if (!regexKeys.hasOwnProperty(k)) {
+ allRegexs.push(regex);
+ regexKeys[k] = null;
+ }
+ }
+ allRegexs.push(/[\0-\uffff]/);
+ tokenizer = combinePrefixPatterns(allRegexs);
+ })();
+
+ var nPatterns = fallthroughStylePatterns.length;
+
+ /**
+ * Lexes job.sourceCode and produces an output array job.decorations of
+ * style classes preceded by the position at which they start in
+ * job.sourceCode in order.
+ *
+ * @param {Object} job an object like <pre>{
+ * sourceCode: {string} sourceText plain text,
+ * basePos: {int} position of job.sourceCode in the larger chunk of
+ * sourceCode.
+ * }</pre>
+ */
+ var decorate = function (job) {
+ var sourceCode = job.sourceCode, basePos = job.basePos;
+ /** Even entries are positions in source in ascending order. Odd enties
+ * are style markers (e.g., PR_COMMENT) that run from that position until
+ * the end.
+ * @type {Array.<number|string>}
+ */
+ var decorations = [basePos, PR_PLAIN];
+ var pos = 0; // index into sourceCode
+ var tokens = sourceCode.match(tokenizer) || [];
+ var styleCache = {};
+
+ for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
+ var token = tokens[ti];
+ var style = styleCache[token];
+ var match = void 0;
+
+ var isEmbedded;
+ if (typeof style === 'string') {
+ isEmbedded = false;
+ } else {
+ var patternParts = shortcuts[token.charAt(0)];
+ if (patternParts) {
+ match = token.match(patternParts[1]);
+ style = patternParts[0];
+ } else {
+ for (var i = 0; i < nPatterns; ++i) {
+ patternParts = fallthroughStylePatterns[i];
+ match = token.match(patternParts[1]);
+ if (match) {
+ style = patternParts[0];
+ break;
+ }
+ }
+
+ if (!match) { // make sure that we make progress
+ style = PR_PLAIN;
+ }
+ }
+
+ isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
+ if (isEmbedded && !(match && typeof match[1] === 'string')) {
+ isEmbedded = false;
+ style = PR_SOURCE;
+ }
+
+ if (!isEmbedded) { styleCache[token] = style; }
+ }
+
+ var tokenStart = pos;
+ pos += token.length;
+
+ if (!isEmbedded) {
+ decorations.push(basePos + tokenStart, style);
+ } else { // Treat group 1 as an embedded block of source code.
+ var embeddedSource = match[1];
+ var embeddedSourceStart = token.indexOf(embeddedSource);
+ var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
+ if (match[2]) {
+ // If embeddedSource can be blank, then it would match at the
+ // beginning which would cause us to infinitely recurse on the
+ // entire token, so we catch the right context in match[2].
+ embeddedSourceEnd = token.length - match[2].length;
+ embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
+ }
+ var lang = style.substring(5);
+ // Decorate the left of the embedded source
+ appendDecorations(
+ basePos + tokenStart,
+ token.substring(0, embeddedSourceStart),
+ decorate, decorations);
+ // Decorate the embedded source
+ appendDecorations(
+ basePos + tokenStart + embeddedSourceStart,
+ embeddedSource,
+ langHandlerForExtension(lang, embeddedSource),
+ decorations);
+ // Decorate the right of the embedded section
+ appendDecorations(
+ basePos + tokenStart + embeddedSourceEnd,
+ token.substring(embeddedSourceEnd),
+ decorate, decorations);
+ }
+ }
+ job.decorations = decorations;
+ };
+ return decorate;
+ }
+
+ /** returns a function that produces a list of decorations from source text.
+ *
+ * This code treats ", ', and ` as string delimiters, and \ as a string
+ * escape. It does not recognize perl's qq() style strings.
+ * It has no special handling for double delimiter escapes as in basic, or
+ * the tripled delimiters used in python, but should work on those regardless
+ * although in those cases a single string literal may be broken up into
+ * multiple adjacent string literals.
+ *
+ * It recognizes C, C++, and shell style comments.
+ *
+ * @param {Object} options a set of optional parameters.
+ * @return {function (Object)} a function that examines the source code
+ * in the input job and builds the decoration list.
+ */
+ function sourceDecorator(options) {
+ var shortcutStylePatterns = [], fallthroughStylePatterns = [];
+ if (options['tripleQuotedStrings']) {
+ // '''multi-line-string''', 'single-line-string', and double-quoted
+ shortcutStylePatterns.push(
+ [PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
+ null, '\'"']);
+ } else if (options['multiLineStrings']) {
+ // 'multi-line-string', "multi-line-string"
+ shortcutStylePatterns.push(
+ [PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
+ null, '\'"`']);
+ } else {
+ // 'single-line-string', "single-line-string"
+ shortcutStylePatterns.push(
+ [PR_STRING,
+ /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
+ null, '"\'']);
+ }
+ if (options['verbatimStrings']) {
+ // verbatim-string-literal production from the C# grammar. See issue 93.
+ fallthroughStylePatterns.push(
+ [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
+ }
+ var hc = options['hashComments'];
+ if (hc) {
+ if (options['cStyleComments']) {
+ if (hc > 1) { // multiline hash comments
+ shortcutStylePatterns.push(
+ [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
+
+ } else {
+ // Stop C preprocessor declarations at an unclosed open comment
+// shortcutStylePatterns.push(
+// [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
+// null, '#']);
+ }
+ fallthroughStylePatterns.push(
+ [PR_STRING,
+ /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
+ null]);
+ } else {
+ shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
+ }
+ }
+ if (options['cStyleComments']) {
+ fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
+ fallthroughStylePatterns.push(
+ [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
+ }
+ if (options['regexLiterals']) {
+ /**
+ * @const
+ */
+ var REGEX_LITERAL = (
+ // A regular expression literal starts with a slash that is
+ // not followed by * or / so that it is not confused with
+ // comments.
+ '/(?=[^/*])'
+ // and then contains any number of raw characters,
+ + '(?:[^/\\x5B\\x5C]'
+ // escape sequences (\x5C),
+ + '|\\x5C[\\s\\S]'
+ // or non-nesting character sets (\x5B\x5D);
+ + '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
+ // finally closed by a /.
+ + '/');
+ fallthroughStylePatterns.push(
+ ['lang-regex',
+ new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
+ ]);
+ }
+
+ var types = options['types'];
+ if (types) {
+ fallthroughStylePatterns.push([PR_TYPE, types]);
+ }
+
+ var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
+ if (keywords.length) {
+ fallthroughStylePatterns.push(
+ [PR_KEYWORD,
+ new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
+ null]);
+ }
+
+ shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']);
+ fallthroughStylePatterns.push(
+ // TODO(mikesamuel): recognize non-latin letters and numerals in idents
+ [PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null],
+ [PR_TYPE, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
+ [PR_PLAIN, /^[a-z_$][a-z_$@0-9]*/i, null],
+ [PR_LITERAL,
+ new RegExp(
+ '^(?:'
+ // A hex number
+ + '0x[a-f0-9]+'
+ // or an octal or decimal number,
+ + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
+ // possibly in scientific notation
+ + '(?:e[+\\-]?\\d+)?'
+ + ')'
+ // with an optional modifier like UL for unsigned long
+ + '[a-z]*', 'i'),
+ null, '0123456789'],
+ // Don't treat escaped quotes in bash as starting strings. See issue 144.
+ [PR_PLAIN, /^\\[\s\S]?/, null],
+ [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]);
+
+ return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
+ }
+
+ var decorateSource = sourceDecorator({
+ 'keywords': ALL_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ });
+
+ /**
+ * Given a DOM subtree, wraps it in a list, and puts each line into its own
+ * list item.
+ *
+ * @param {Node} node modified in place. Its content is pulled into an
+ * HTMLOListElement, and each line is moved into a separate list item.
+ * This requires cloning elements, so the input might not have unique
+ * IDs after numbering.
+ */
+ function numberLines(node, opt_startLineNum) {
+ var nocode = /(?:^|\s)nocode(?:\s|$)/;
+ var lineBreak = /\r\n?|\n/;
+
+ var document = node.ownerDocument;
+
+ var whitespace;
+ if (node.currentStyle) {
+ whitespace = node.currentStyle.whiteSpace;
+ } else if (window.getComputedStyle) {
+ whitespace = document.defaultView.getComputedStyle(node, null)
+ .getPropertyValue('white-space');
+ }
+ // If it's preformatted, then we need to split lines on line breaks
+ // in addition to <BR>s.
+ var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
+
+ var li = document.createElement('LI');
+ while (node.firstChild) {
+ li.appendChild(node.firstChild);
+ }
+ // An array of lines. We split below, so this is initialized to one
+ // un-split line.
+ var listItems = [li];
+
+ function walk(node) {
+ switch (node.nodeType) {
+ case 1: // Element
+ if (nocode.test(node.className)) { break; }
+ if ('BR' === node.nodeName) {
+ breakAfter(node);
+ // Discard the <BR> since it is now flush against a </LI>.
+ if (node.parentNode) {
+ node.parentNode.removeChild(node);
+ }
+ } else {
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ walk(child);
+ }
+ }
+ break;
+ case 3: case 4: // Text
+ if (isPreformatted) {
+ var text = node.nodeValue;
+ var match = text.match(lineBreak);
+ if (match) {
+ var firstLine = text.substring(0, match.index);
+ node.nodeValue = firstLine;
+ var tail = text.substring(match.index + match[0].length);
+ if (tail) {
+ var parent = node.parentNode;
+ parent.insertBefore(
+ document.createTextNode(tail), node.nextSibling);
+ }
+ breakAfter(node);
+ if (!firstLine) {
+ // Don't leave blank text nodes in the DOM.
+ node.parentNode.removeChild(node);
+ }
+ }
+ }
+ break;
+ }
+ }
+
+ // Split a line after the given node.
+ function breakAfter(lineEndNode) {
+ // If there's nothing to the right, then we can skip ending the line
+ // here, and move root-wards since splitting just before an end-tag
+ // would require us to create a bunch of empty copies.
+ while (!lineEndNode.nextSibling) {
+ lineEndNode = lineEndNode.parentNode;
+ if (!lineEndNode) { return; }
+ }
+
+ function breakLeftOf(limit, copy) {
+ // Clone shallowly if this node needs to be on both sides of the break.
+ var rightSide = copy ? limit.cloneNode(false) : limit;
+ var parent = limit.parentNode;
+ if (parent) {
+ // We clone the parent chain.
+ // This helps us resurrect important styling elements that cross lines.
+ // E.g. in <i>Foo<br>Bar</i>
+ // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
+ var parentClone = breakLeftOf(parent, 1);
+ // Move the clone and everything to the right of the original
+ // onto the cloned parent.
+ var next = limit.nextSibling;
+ parentClone.appendChild(rightSide);
+ for (var sibling = next; sibling; sibling = next) {
+ next = sibling.nextSibling;
+ parentClone.appendChild(sibling);
+ }
+ }
+ return rightSide;
+ }
+
+ var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
+
+ // Walk the parent chain until we reach an unattached LI.
+ for (var parent;
+ // Check nodeType since IE invents document fragments.
+ (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
+ copiedListItem = parent;
+ }
+ // Put it on the list of lines for later processing.
+ listItems.push(copiedListItem);
+ }
+
+ // Split lines while there are lines left to split.
+ for (var i = 0; // Number of lines that have been split so far.
+ i < listItems.length; // length updated by breakAfter calls.
+ ++i) {
+ walk(listItems[i]);
+ }
+
+ // Make sure numeric indices show correctly.
+ if (opt_startLineNum === (opt_startLineNum|0)) {
+ listItems[0].setAttribute('value', opt_startLineNum);
+ }
+
+ var ol = document.createElement('OL');
+ ol.className = 'linenums';
+ var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
+ for (var i = 0, n = listItems.length; i < n; ++i) {
+ li = listItems[i];
+ // Stick a class on the LIs so that stylesheets can
+ // color odd/even rows, or any other row pattern that
+ // is co-prime with 10.
+ li.className = 'L' + ((i + offset) % 10);
+ if (!li.firstChild) {
+ li.appendChild(document.createTextNode('\xA0'));
+ }
+ ol.appendChild(li);
+ }
+
+ node.appendChild(ol);
+ }
+
+ /**
+ * Breaks {@code job.sourceCode} around style boundaries in
+ * {@code job.decorations} and modifies {@code job.sourceNode} in place.
+ * @param {Object} job like <pre>{
+ * sourceCode: {string} source as plain text,
+ * spans: {Array.<number|Node>} alternating span start indices into source
+ * and the text node or element (e.g. {@code <BR>}) corresponding to that
+ * span.
+ * decorations: {Array.<number|string} an array of style classes preceded
+ * by the position at which they start in job.sourceCode in order
+ * }</pre>
+ * @private
+ */
+ function recombineTagsAndDecorations(job) {
+ var isIE = /\bMSIE\b/.test(navigator.userAgent);
+ var newlineRe = /\n/g;
+
+ var source = job.sourceCode;
+ var sourceLength = source.length;
+ // Index into source after the last code-unit recombined.
+ var sourceIndex = 0;
+
+ var spans = job.spans;
+ var nSpans = spans.length;
+ // Index into spans after the last span which ends at or before sourceIndex.
+ var spanIndex = 0;
+
+ var decorations = job.decorations;
+ var nDecorations = decorations.length;
+ // Index into decorations after the last decoration which ends at or before
+ // sourceIndex.
+ var decorationIndex = 0;
+
+ // Remove all zero-length decorations.
+ decorations[nDecorations] = sourceLength;
+ var decPos, i;
+ for (i = decPos = 0; i < nDecorations;) {
+ if (decorations[i] !== decorations[i + 2]) {
+ decorations[decPos++] = decorations[i++];
+ decorations[decPos++] = decorations[i++];
+ } else {
+ i += 2;
+ }
+ }
+ nDecorations = decPos;
+
+ // Simplify decorations.
+ for (i = decPos = 0; i < nDecorations;) {
+ var startPos = decorations[i];
+ // Conflate all adjacent decorations that use the same style.
+ var startDec = decorations[i + 1];
+ var end = i + 2;
+ while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
+ end += 2;
+ }
+ decorations[decPos++] = startPos;
+ decorations[decPos++] = startDec;
+ i = end;
+ }
+
+ nDecorations = decorations.length = decPos;
+
+ var decoration = null;
+ while (spanIndex < nSpans) {
+ var spanStart = spans[spanIndex];
+ var spanEnd = spans[spanIndex + 2] || sourceLength;
+
+ var decStart = decorations[decorationIndex];
+ var decEnd = decorations[decorationIndex + 2] || sourceLength;
+
+ var end = Math.min(spanEnd, decEnd);
+
+ var textNode = spans[spanIndex + 1];
+ var styledText;
+ if (textNode.nodeType !== 1 // Don't muck with <BR>s or <LI>s
+ // Don't introduce spans around empty text nodes.
+ && (styledText = source.substring(sourceIndex, end))) {
+ // This may seem bizarre, and it is. Emitting LF on IE causes the
+ // code to display with spaces instead of line breaks.
+ // Emitting Windows standard issue linebreaks (CRLF) causes a blank
+ // space to appear at the beginning of every line but the first.
+ // Emitting an old Mac OS 9 line separator makes everything spiffy.
+ if (isIE) { styledText = styledText.replace(newlineRe, '\r'); }
+ textNode.nodeValue = styledText;
+ var document = textNode.ownerDocument;
+ var span = document.createElement('SPAN');
+ span.className = decorations[decorationIndex + 1];
+ var parentNode = textNode.parentNode;
+ parentNode.replaceChild(span, textNode);
+ span.appendChild(textNode);
+ if (sourceIndex < spanEnd) { // Split off a text node.
+ spans[spanIndex + 1] = textNode
+ // TODO: Possibly optimize by using '' if there's no flicker.
+ = document.createTextNode(source.substring(end, spanEnd));
+ parentNode.insertBefore(textNode, span.nextSibling);
+ }
+ }
+
+ sourceIndex = end;
+
+ if (sourceIndex >= spanEnd) {
+ spanIndex += 2;
+ }
+ if (sourceIndex >= decEnd) {
+ decorationIndex += 2;
+ }
+ }
+ }
+
+ /** Maps language-specific file extensions to handlers. */
+ var langHandlerRegistry = {};
+ /** Register a language handler for the given file extensions.
+ * @param {function (Object)} handler a function from source code to a list
+ * of decorations. Takes a single argument job which describes the
+ * state of the computation. The single parameter has the form
+ * {@code {
+ * sourceCode: {string} as plain text.
+ * decorations: {Array.<number|string>} an array of style classes
+ * preceded by the position at which they start in
+ * job.sourceCode in order.
+ * The language handler should assigned this field.
+ * basePos: {int} the position of source in the larger source chunk.
+ * All positions in the output decorations array are relative
+ * to the larger source chunk.
+ * } }
+ * @param {Array.<string>} fileExtensions
+ */
+ function registerLangHandler(handler, fileExtensions) {
+ for (var i = fileExtensions.length; --i >= 0;) {
+ var ext = fileExtensions[i];
+ if (!langHandlerRegistry.hasOwnProperty(ext)) {
+ langHandlerRegistry[ext] = handler;
+ } else if (window['console']) {
+ console['warn']('cannot override language handler %s', ext);
+ }
+ }
+ }
+ function langHandlerForExtension(extension, source) {
+ if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
+ // Treat it as markup if the first non whitespace character is a < and
+ // the last non-whitespace character is a >.
+ extension = /^\s*</.test(source)
+ ? 'default-markup'
+ : 'default-code';
+ }
+ return langHandlerRegistry[extension];
+ }
+ registerLangHandler(decorateSource, ['default-code']);
+ registerLangHandler(
+ createSimpleLexer(
+ [],
+ [
+ [PR_PLAIN, /^[^<?]+/],
+ [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
+ [PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
+ // Unescaped content in an unknown language
+ ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/],
+ ['lang-', /^<%([\s\S]+?)(?:%>|$)/],
+ [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
+ ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
+ // Unescaped content in javascript. (Or possibly vbscript).
+ ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
+ // Contains unescaped stylesheet content
+ ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
+ ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i]
+ ]),
+ ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
+ registerLangHandler(
+ createSimpleLexer(
+ [
+ [PR_PLAIN, /^[\s]+/, null, ' \t\r\n'],
+ [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
+ ],
+ [
+ [PR_TAG, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
+ [PR_ATTRIB_NAME, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
+ ['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
+ [PR_PUNCTUATION, /^[=<>\/]+/],
+ ['lang-js', /^on\w+\s*=\s*\"([^\"]+)\"/i],
+ ['lang-js', /^on\w+\s*=\s*\'([^\']+)\'/i],
+ ['lang-js', /^on\w+\s*=\s*([^\"\'>\s]+)/i],
+ ['lang-css', /^style\s*=\s*\"([^\"]+)\"/i],
+ ['lang-css', /^style\s*=\s*\'([^\']+)\'/i],
+ ['lang-css', /^style\s*=\s*([^\"\'>\s]+)/i]
+ ]),
+ ['in.tag']);
+ registerLangHandler(
+ createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': CPP_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'types': C_TYPES
+ }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': 'null,true,false'
+ }), ['json']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': CSHARP_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'verbatimStrings': true,
+ 'types': C_TYPES
+ }), ['cs']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': JAVA_KEYWORDS,
+ 'cStyleComments': true
+ }), ['java']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': SH_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true
+ }), ['bsh', 'csh', 'sh']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': PYTHON_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'tripleQuotedStrings': true
+ }), ['cv', 'py']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': PERL_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ }), ['perl', 'pl', 'pm']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': RUBY_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ }), ['rb']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': JSCRIPT_KEYWORDS,
+ 'cStyleComments': true,
+ 'regexLiterals': true
+ }), ['js']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': COFFEE_KEYWORDS,
+ 'hashComments': 3, // ### style block comments
+ 'cStyleComments': true,
+ 'multilineStrings': true,
+ 'tripleQuotedStrings': true,
+ 'regexLiterals': true
+ }), ['coffee']);
+ registerLangHandler(createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
+
+ function applyDecorator(job) {
+ var opt_langExtension = job.langExtension;
+
+ try {
+ // Extract tags, and convert the source code to plain text.
+ var sourceAndSpans = extractSourceSpans(job.sourceNode);
+ /** Plain text. @type {string} */
+ var source = sourceAndSpans.sourceCode;
+ job.sourceCode = source;
+ job.spans = sourceAndSpans.spans;
+ job.basePos = 0;
+
+ // Apply the appropriate language handler
+ langHandlerForExtension(opt_langExtension, source)(job);
+
+ // Integrate the decorations and tags back into the source code,
+ // modifying the sourceNode in place.
+ recombineTagsAndDecorations(job);
+ } catch (e) {
+ if ('console' in window) {
+ console['log'](e && e['stack'] ? e['stack'] : e);
+ }
+ }
+ }
+
+ /**
+ * @param sourceCodeHtml {string} The HTML to pretty print.
+ * @param opt_langExtension {string} The language name to use.
+ * Typically, a filename extension like 'cpp' or 'java'.
+ * @param opt_numberLines {number|boolean} True to number lines,
+ * or the 1-indexed number of the first line in sourceCodeHtml.
+ */
+ function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
+ var container = document.createElement('PRE');
+ // This could cause images to load and onload listeners to fire.
+ // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
+ // We assume that the inner HTML is from a trusted source.
+ container.innerHTML = sourceCodeHtml;
+ if (opt_numberLines) {
+ numberLines(container, opt_numberLines);
+ }
+
+ var job = {
+ langExtension: opt_langExtension,
+ numberLines: opt_numberLines,
+ sourceNode: container
+ };
+ applyDecorator(job);
+ return container.innerHTML;
+ }
+
+ function prettyPrint(opt_whenDone) {
+ function byTagName(tn) { return document.getElementsByTagName(tn); }
+ // fetch a list of nodes to rewrite
+ var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
+ var elements = [];
+ for (var i = 0; i < codeSegments.length; ++i) {
+ for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
+ elements.push(codeSegments[i][j]);
+ }
+ }
+ codeSegments = null;
+
+ var clock = Date;
+ if (!clock['now']) {
+ clock = { 'now': function () { return +(new Date); } };
+ }
+
+ // The loop is broken into a series of continuations to make sure that we
+ // don't make the browser unresponsive when rewriting a large page.
+ var k = 0;
+ var prettyPrintingJob;
+
+ var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
+ var prettyPrintRe = /\bprettyprint\b/;
+
+ function doWork() {
+ var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
+ clock['now']() + 250 /* ms */ :
+ Infinity);
+ for (; k < elements.length && clock['now']() < endTime; k++) {
+ var cs = elements[k];
+ var className = cs.className;
+ if (className.indexOf('prettyprint') >= 0) {
+ // If the classes includes a language extensions, use it.
+ // Language extensions can be specified like
+ // <pre class="prettyprint lang-cpp">
+ // the language extension "cpp" is used to find a language handler as
+ // passed to PR.registerLangHandler.
+ // HTML5 recommends that a language be specified using "language-"
+ // as the prefix instead. Google Code Prettify supports both.
+ // http://dev.w3.org/html5/spec-author-view/the-code-element.html
+ var langExtension = className.match(langExtensionRe);
+ // Support <pre class="prettyprint"><code class="language-c">
+ var wrapper;
+ if (!langExtension && (wrapper = childContentWrapper(cs))
+ && "CODE" === wrapper.tagName) {
+ langExtension = wrapper.className.match(langExtensionRe);
+ }
+
+ if (langExtension) {
+ langExtension = langExtension[1];
+ }
+
+ // make sure this is not nested in an already prettified element
+ var nested = false;
+ for (var p = cs.parentNode; p; p = p.parentNode) {
+ if ((p.tagName === 'pre' || p.tagName === 'code' ||
+ p.tagName === 'xmp') &&
+ p.className && p.className.indexOf('prettyprint') >= 0) {
+ nested = true;
+ break;
+ }
+ }
+ if (!nested) {
+ // Look for a class like linenums or linenums:<n> where <n> is the
+ // 1-indexed number of the first line.
+ var lineNums = cs.className.match(/\blinenums\b(?::(\d+))?/);
+ lineNums = lineNums
+ ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true
+ : false;
+ if (lineNums) { numberLines(cs, lineNums); }
+
+ // do the pretty printing
+ prettyPrintingJob = {
+ langExtension: langExtension,
+ sourceNode: cs,
+ numberLines: lineNums
+ };
+ applyDecorator(prettyPrintingJob);
+ }
+ }
+ }
+ if (k < elements.length) {
+ // finish up in a continuation
+ setTimeout(doWork, 250);
+ } else if (opt_whenDone) {
+ opt_whenDone();
+ }
+ }
+
+ doWork();
+ }
+
+ /**
+ * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
+ * {@code class=prettyprint} and prettify them.
+ *
+ * @param {Function?} opt_whenDone if specified, called when the last entry
+ * has been finished.
+ */
+ window['prettyPrintOne'] = prettyPrintOne;
+ /**
+ * Pretty print a chunk of code.
+ *
+ * @param {string} sourceCodeHtml code as html
+ * @return {string} code as html, but prettier
+ */
+ window['prettyPrint'] = prettyPrint;
+ /**
+ * Contains functions for creating and registering new language handlers.
+ * @type {Object}
+ */
+ window['PR'] = {
+ 'createSimpleLexer': createSimpleLexer,
+ 'registerLangHandler': registerLangHandler,
+ 'sourceDecorator': sourceDecorator,
+ 'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
+ 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
+ 'PR_COMMENT': PR_COMMENT,
+ 'PR_DECLARATION': PR_DECLARATION,
+ 'PR_KEYWORD': PR_KEYWORD,
+ 'PR_LITERAL': PR_LITERAL,
+ 'PR_NOCODE': PR_NOCODE,
+ 'PR_PLAIN': PR_PLAIN,
+ 'PR_PUNCTUATION': PR_PUNCTUATION,
+ 'PR_SOURCE': PR_SOURCE,
+ 'PR_STRING': PR_STRING,
+ 'PR_TAG': PR_TAG,
+ 'PR_TYPE': PR_TYPE
+ };
+})();
diff --git a/html/styles.css b/html/styles.css
new file mode 100644
index 0000000..35aee0b
--- /dev/null
+++ b/html/styles.css
@@ -0,0 +1,629 @@
+body {
+ background: white;
+ color: #1C1C1C;
+ margin-right: 20px;
+ margin-left: 20px;
+ font-size: 9pt;
+ font-weight: normal;
+ font-family: Arial, Helvetica, sans-serif;
+}
+
+h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ol, dl, dd, dt, footer {
+ font-family: Arial, Verdana, Helvetica, sans-serif
+}
+
+/* Set default font to 9 pt */
+table, div, p, dl, td, caption, th, ul, ol, li, dd, dt, pre, code {
+ font-size: 9pt;
+}
+
+pre, code {
+ font-family: "Courier New", Courier, monospace;
+ border: 1px solid #888;
+ margin: 6px 1.5px;
+ padding: 1px 1px 1px 1px;
+ font-weight: normal;
+ font-style: normal;
+}
+
+h1 {font-size: 24pt; color: #0E437D;}
+h2 {font-size: 18pt; color: #0E437D;}
+h3 {font-size: 14pt; color: #1C1C1C;}
+h4 {font-size: 12pt; color: #1C1C1C;}
+h5 {font-size: 10pt; color: #1C1C1C;}
+
+h1, h2, h3, h4, h5 {
+ font-weight: bold;
+ font-style: normal;
+ line-height: normal;
+ margin-top: 16pt;
+}
+
+caption, p.caption {
+ font-size: 9pt;
+ color: #1C1C1C;
+ font-weight: bold;
+ text-align: left;
+ margin-top: 20px;
+ margin-bottom: 0px;
+}
+
+ol {
+ margin-bottom: 20px;
+}
+
+ul ul , ol ul, ul ol, ol ol{
+ margin-top: 10px;
+}
+
+ul li, ol li {
+ margin-bottom: 10px;
+}
+
+ol.tutorstep li {
+ border-top: 2px solid #719cc7;
+ list-style-position: inside;
+ font-weight: bold;
+ margin-top: 30px;
+ margin-left: -20px;
+ padding-top: 3px;
+ font-size: 12pt;
+}
+
+ol.tutorstep li p{
+ font-size: 9pt;
+ font-weight: normal;
+ margin-top: 10px;
+}
+
+ol.tutorstep ol li, ol.tutorstep li ol li, ol.tutorstep li ul li {
+ font-size: 9pt;
+ list-style-position: outside;
+ margin-left: 0px;
+ font-weight: normal;
+}
+
+ol.tutorstep ol li p, ol.tutorstep ul li p {
+ font-size: 9pt;
+ font-weight: normal;
+ margin-top: 5px;
+}
+
+ol li p, ul li p {
+ font-size: 9pt;
+ font-weight: normal;
+ margin-bottom: 2px;
+ margin-top: 2px;
+}
+
+ol ol , ol.tutorstep ol{
+ font-size: 9pt;
+ font-weight: normal;
+ list-style-type: lower-alpha;
+ color: #1C1C1C;
+ border-style: none;
+ margin-top: 10px;
+}
+
+ol.tutorstep ul {
+ margin-top: 10px;
+ font-size: 9pt;
+}
+
+ol ol li, ol ul li, ol.tutorstep ol li, ol.tutorstep ul li {
+ border-style: none;
+ margin-top: 5px;
+ font-size: 9pt;
+}
+
+ul {
+ font-size: 9pt;
+ font-weight: normal;
+ color: #1C1C1C;
+}
+
+
+/* End of font face declarations */
+
+/* Set table borders and heading row background */
+table {
+ border: 0px;
+ border-collapse: collapse;
+ width: 100%;
+ margin-top: 20px;
+ margin-bottom: 20px;
+
+}
+
+th {
+ border-top: 2px solid #719cc7;
+ border-right: 1px solid #c6d9f1;
+ border-left: 1px solid #c6d9f1;
+ background-color: #f3f7fb;
+ padding: 4px;
+ color: #719cc7;
+ font-size: 9pt;
+ font-weight: bold;
+}
+
+td {
+ border: 1px solid #c6d9f1;
+ vertical-align:top;
+ padding: 3px 20px 5px 20px;
+}
+
+/* Notes stand out using a light top & bottom borders with yellow background */
+table.note {
+ border-top: 2px solid #719cc7;
+ border-left: 0px;
+ border-right: 0px;
+ width: 100%;
+}
+
+tr.note {
+ text-align: left;
+}
+
+th.note {
+ text-align: left;
+ background-color: #ddd9c3;
+ background-image: note.gif;
+ border-top: 2px solid #719cc7;
+ border-bottom:1px solid #719cc7;
+ border-right: none;
+
+}
+
+td.note, p.note {
+ background-color: #eeece1;
+ color: #1C1C1C;
+ padding: 5px;
+ margin-top:12px;
+ margin-bottom:12px;
+ border: none;
+}
+
+/* Figure titles are centered and bolded */
+p.figure , ol.tutorstep li p.figure, ol.tutorstep ol li p.figure, ol.tutorstep ul li p.figure {
+ text-align: center;
+ font-weight: bold;
+}
+
+/* Red background and white text for things that need fixing before release */
+.fix {
+ background-color: red;
+ font-weight: bold;
+ color: white;
+}
+
+/* Footer includes space and a gray line above */
+#footer {
+ font-size: 9pt;
+ padding-top:10px;
+ margin-top:20px;
+ text-align: center;
+ /* border-top:1px solid #EEEEEE; */
+}
+
+#banner {
+ padding: 8px 4px 8px 4px;
+ /* top right bottom left */
+ border: 1px solid #7f7f7f;
+ width: 100%;
+ background-image: url("banner.png");
+ text-align: left;
+ font-weight: bold;
+ font-size: 9pt;
+ color: #ffffff;
+}
+
+caption {
+ font-size: 9pt;
+ color: #1C1C1C;
+ font-weight: bold;
+ text-align: center;
+ margin-top: 20px;
+ margin-bottom: 0px;
+}
+
+div.qindex, div.navpath, div.navtab{
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a:link {
+ color: #719cc7;
+ text-decoration: underline;
+ font-weight: bold;
+}
+
+a:hover {
+ color: #0e437d;
+}
+
+a:visited {
+ text-decoration: underline;
+ color: #719cc7;
+ font-weight: bold;
+}
+
+a.qindex {
+ font-weight: bold;
+ padding: 2px;
+}
+
+a.qindex:hover {
+ text-decoration: underline;
+ color: #0e437d;
+ padding: 2px;
+}
+
+a.qindex:visited {
+ text-decoration: underline;
+ font-weight: bold;
+ color: #719cc7;
+ padding: 2px;
+}
+
+a.qindexHL {
+ text-decoration: underline;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ padding: 2px 6px;
+ border: 1px double #9295C2;
+}
+
+a.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+ padding: 2px 6px;
+}
+
+div.banner {
+ padding: 8px 4px 0px 4px;
+ /* top right bottom left */
+ border: 1px solid #7f7f7f;
+ width: 100%;
+ background-image: url("banner.png");
+ text-align: left;
+ font-weight: bold;
+ font-size: 9pt;
+ color: #ffffff;
+}
+
+div.footer {
+ font-size: 9pt;
+ padding-top:10px;
+ margin-top:20px;
+ text-align: center;
+}
+
+dl.el {
+ margin-left: -1cm
+}
+
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+pre.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+}
+
+div.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ padding: 6px;
+}
+
+div.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+td.md {
+ background-color: #f5f5f5;
+ font-weight: bold;
+}
+
+td.mdname1 {
+ background-color: #f5f5f5;
+ font-weight: bold;
+ color: #602020;
+}
+
+td.mdname {
+ background-color: #f5f5f5;
+ font-weight: bold;
+ color: #602020;
+ width: 600px;
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+td.indexkey {
+ background-color: #eeeeff;
+ font-weight: bold;
+ border: 1px solid #CCCCCC;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+}
+
+td.indexvalue {
+ background-color: #eeeeff;
+ border: 1px solid #CCCCCC;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #f0f0f0;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword { color: #008000 }
+span.keywordtype { color: #604020 }
+span.keywordflow { color: #e08000 }
+span.comment { color: #800000 }
+span.preprocessor { color: #806020 }
+span.stringliteral { color: #002080 }
+span.charliteral { color: #008080 }
+span.vhdldigit { color: #ff00ff }
+span.vhdlchar { color: #000000 }
+span.vhdlkeyword { color: #700070 }
+span.vhdllogic { color: #ff0000 }
+
+.mdTable {
+ border: 1px solid #868686;
+ background-color: #F4F4FB;
+}
+
+.mdRow {
+ padding: 8px 10px;
+}
+
+/* @group Member Descriptions */
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F4F4F4A;
+ border: none;
+ margin: 4px;
+ padding: 3px 8px 4px 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+ border-top: 1px solid #DBDBDB;
+}
+
+.memTemplParams {
+ color: #606060;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+ margin-left: 3px;
+}
+
+.memnav {
+ background-color: #eeeeff;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.memitem {
+ padding: 0;
+}
+
+.memname {
+ white-space: nowrap;
+ font-weight: bold;
+}
+
+.memproto, .memdoc {
+ border: 1px solid #9BBCDD;
+}
+
+.memproto {
+ padding: 0;
+ background-color: #D5E2EF;
+ font-weight: bold;
+ -webkit-border-top-left-radius: 8px;
+ -webkit-border-top-right-radius: 8px;
+ -moz-border-radius-topleft: 8px;
+ -moz-border-radius-topright: 8px;
+}
+
+.memdoc {
+ padding: 2px 5px;
+ background-color: #eef3f5;
+ border-top-width: 0;
+ -webkit-border-bottom-left-radius: 8px;
+ -webkit-border-bottom-right-radius: 8px;
+ -moz-border-radius-bottomleft: 8px;
+ -moz-border-radius-bottomright: 8px;
+}
+
+.memdoc p, .memdoc dl, .memdoc ul {
+ margin: 6px 0;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #853E0E;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+
+/* @end */
+
+.search { color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search { font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #eeeeff;
+}
+
+td.tiny {
+ font-size: 75%;
+}
+
+.highlight {
+ background-color:#E2E2FF;
+}
+
+/*---------- ide-eclipse Styles ---------*/
+.sh_ide-eclipse{font-family: "Courier New", Courier, monospace;
+ margin: 0px 0px;
+ padding: -30px -30px -30px -30px;
+ font-weight: normal;
+ font-style: normal;}
+.sh_ide-eclipse .sh_sourceCode{background-color:#fff;color:#000;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_keyword{color:#7f0055;font-weight:bold;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_type{color:#7f0055;font-weight:bold;font-style:normal;}
+/*.sh_ide-eclipse .sh_sourceCode .sh_string{color:#00f;font-weight:normal;font-style:normal;}*/
+.sh_ide-eclipse .sh_sourceCode .sh_string{color:#2A00FF;font-weight:normal;font-style:normal;}
+
+.sh_ide-eclipse .sh_sourceCode .sh_regexp{color:#00f;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_specialchar{color:#00f;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_comment{color:#238E23;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_number{color:#000;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_preproc{color:#3f5fbf;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_function{color:#000;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_url{color:#00f;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_date{color:#7f0055;font-weight:bold;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_time{color:#7f0055;font-weight:bold;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_file{color:#7f0055;font-weight:bold;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_ip{color:#00f;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_name{color:#00f;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_variable{color:#7f0055;font-weight:bold;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_oldfile{color:#00f;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_newfile{color:#00f;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_difflines{color:#7f0055;font-weight:bold;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_selector{color:#7f0055;font-weight:bold;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_property{color:#7f0055;font-weight:bold;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_value{color:#00f;font-weight:normal;font-style:normal;}
+.sh_ide-eclipse .sh_sourceCode .sh_unknown{font-family: "Courier New", Courier, monospace;}
+
+/*------------- STYLE FOR NAMES FROM XML FILE -------------*/
+.sh_styleFromXML{color:#800000;font-weight:bold;}
+/*-------------------------------------------------------*/
+
+/*-------- Snippet Base Styles ----------*/
+.snippet-wrap {position:relative;}
+*:first-child+html .snippet-wrap {display:inline-block;}
+* html .snippet-wrap {display:inline-block;}
+.snippet-reveal{text-decoration:underline;}
+.snippet-wrap .snippet-menu, .snippet-wrap .snippet-hide {position:absolute; top:-99999px; right:15px; font-size:.9em;z-index:1;background-color:transparent;}
+.snippet-wrap .snippet-hide {top:auto; bottom:1px;}
+*:first-child+html .snippet-wrap .snippet-hide {bottom:1px;}
+* html .snippet-wrap .snippet-hide {bottom:1px;}
+.snippet-wrap .snippet-menu pre, .snippet-wrap .snippet-hide pre {background-color:transparent; margin:1; padding:0;}
+.snippet-wrap .snippet-menu a, .snippet-wrap .snippet-hide a {padding:1px; text-decoration:underline;}
+.snippet-wrap pre.sh_sourceCode{padding:1px;line-height:120%;overflow:auto;position:relative;
+ -moz-border-radius:0px;
+ -webkit-border-radius:0px;
+ border-radius:0px;
+ box-shadow: 1px 1px px #000;
+ -moz-box-shadow: 2px 2px 1px #000;
+ -webkit-box-shadow: 1px 1px 1px #000;}
+.snippet-wrap pre.snippet-textonly {padding:1em;}
+*:first-child+html .snippet-wrap pre.snippet-formatted {padding:0.5em 0.5em;}
+* html .snippet-wrap pre.snippet-formatted {padding:0em 0.3em;}
+.snippet-reveal pre.sh_sourceCode {padding:0em 0em; text-align:right;}
+.snippet-wrap .snippet-num li{padding-left:2px;}
+.snippet-wrap .snippet-no-num{list-style:none; padding:0em 0em; margin:0;}
+.snippet-wrap .snippet-no-num li {list-style:none; padding-left:0;}
+.snippet-wrap .snippet-num {margin:1em 0 1em 1em; padding-left:2px;}
+.snippet-wrap .snippet-num li {list-style:decimal-leading-zero outside none;}
+.snippet-wrap .snippet-no-num li.box {padding:0 6px; margin-left:-6px;}
+.snippet-wrap .snippet-num li.box {border:1px solid; list-style-position:inside; margin-left:0px; padding-left:2px;}
+*:first-child+html .snippet-wrap .snippet-num li.box {margin-left:-2px;}
+* html .snippet-wrap .snippet-num li.box {margin-left:-2px;}
+.snippet-wrap li.box-top {border-width:0px 0px 0 !important;}
+.snippet-wrap li.box-bot {border-width:0 0px 0px !important;}
+.snippet-wrap li.box-mid {border-width:0 0px !important;}
+.snippet-wrap .snippet-num li .box-sp {width:10px; display:inline-block;}
+*:first-child+html .snippet-wrap .snippet-num li .box-sp {width:20px;}
+* html .snippet-wrap .snippet-num li .box-sp {width:2px;}
+.snippet-wrap .snippet-no-num li.box {border:1px solid;}
+.snippet-wrap .snippet-no-num li .box-sp {display:none;}
diff --git a/html/tizen.css b/html/tizen.css
new file mode 100644
index 0000000..3b05984
--- /dev/null
+++ b/html/tizen.css
@@ -0,0 +1,932 @@
+.attribute
+{
+ padding-bottom:15px;
+}
+#content pre
+{
+ /*text-align: left;
+ -webkit-border-radius: 8px;
+ -khtml-border-radius: 8px;
+ -moz-border-radius: 8px;
+ border-radius: 8px;
+ border: 1px solid rgba(255, 255, 255, 0.2);
+ display:block;
+ color:#2c3123;
+ margin:15px 0px 15px -8px;
+ padding:12px 20px 12px 35px;
+ font-size: 14px;
+ /*overflow:hidden;*/
+ /*word-wrap:break-word;*/
+ /*white-space: normal;*/
+ background: white;
+ color: #1C1C1C;
+ margin-right: 20px;
+ margin-left: 20px;
+ font-size: 10pt;
+ font-weight: normal;
+ font-family: Arial, Helvetica, sans-serif;
+}
+#content pre code
+{
+ font-size: 1em;
+ margin: 0px;
+ padding: 2px;
+ border: 1px solid #888;
+}
+
+#content pre webidl
+{
+ font-size: 1em;
+ margin: 0px;
+ padding: 2px;
+ border: 1px solid #888;
+}
+
+#content .prettyprint
+{
+}
+
+#content .signature
+{
+ background-color: #FCE6B9;
+ word-wrap:break-word;
+}
+
+#content .examplecode
+{
+ background-color: #D5F1FD;
+ word-wrap:break-word;
+}
+
+#content .webidl
+{
+ background-color: #D9F0C4;
+ word-wrap:break-word;
+}
+
+#content .prettyprint b
+{
+ font-weight: normal;
+ color: #c61800; /*letter-spacing: -1px;*/
+}
+
+
+#content pre select
+{
+ border: 1px solid #c61800;
+}
+
+#content input
+{
+ font-size: 16px;
+ margin-right: 10px;
+ font-family: Helvetica;
+ padding: 3px;
+}
+#content input[type="range"]
+{
+ width: 100%;
+}
+
+#content button
+{
+ margin: 20px 10px 0 0;
+ font-family: Verdana;
+}
+
+#content button.large
+{
+ font-size: 32px;
+}
+
+#content pre b
+{
+ font-weight: normal;
+ color: #c61800; /*letter-spacing: -1px;*/
+}
+#content pre em
+{
+ font-weight: normal;
+ font-style: normal;
+ color: #18a600;
+}
+#content pre input[type="range"]
+{
+ height: 6px;
+ cursor: pointer;
+ width: auto;
+}
+
+
+
+
+#content .product, #content .product-ua, #content .product-cc
+{
+}
+
+#content dfn.external
+{
+ font-weight: normal;
+ font-style: italic;
+}
+
+#content pre.idl
+{
+ border: solid thin;
+ background: #eee;
+ color: #000;
+ padding: 0.5em;
+}
+
+#content pre.idl :link, #content pre.idl :visited
+{
+ color: inherit;
+ background: transparent;
+}
+
+#content dfn
+{
+ font-style: normal;
+ font-weight: bolder;
+}
+#content em.ct, #content em.ct-samp
+{
+ text-transform: uppercase;
+ font-style: normal;
+ font-weight: normal;
+}
+
+#content .issue
+{
+ padding: 1em;
+ border: 1px solid #f00;
+ background: #ffc;
+}
+
+#content .issue::before
+{
+ content: "Issue";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #f00;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+#content .comment
+{
+ padding: 1em;
+ border: 1px solid #f00;
+ background: #fff;
+}
+
+#content .comment::before
+{
+ content: "Comment";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #f00;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+#content .ws3
+{
+ padding: 1em;
+ border: 1px solid #f00;
+ background: lightblue;
+}
+
+#content .ws3::before
+{
+ content: "For WS3 Review";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #f00;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+#content .ws4
+{
+ padding: 1em;
+ border: 1px solid #f00;
+ background: lightblue;
+}
+
+#content .ws4::before
+{
+ content: "Under discussion";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #f00;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+#content .note
+{
+ margin-left: 2em;
+ border: 2px solid #CFF6D9;
+ padding: .5em;
+ padding-top: 0px;
+ padding-bottom: 1em;
+ color: #444;
+ background-color: #E2FFF0;
+ font-size: 0.8em;
+}
+
+#content dd > dl
+{
+ margin: 0px;
+ padding: 0px;
+ margin-bottom: 15px;
+}
+
+#content code
+{
+ font-size: 1.1em;
+ text-decoration: none;
+ color: #002108;
+}
+
+
+#content .dir_listing li
+{
+ list-style-type: none;
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+}
+
+#content span span
+{
+ /*background-color: yellow;*/
+}
+
+#content li.folder
+{
+ list-style-image: url(images/expanded_folder.png);
+}
+
+#content .authorguide
+{
+ border: 1px solid #67BBB5;
+ background: #E8EBFC;
+ padding: 1em;
+ font-size: .9em;
+ color: #003;
+}
+
+#content .authorguide strong
+{
+ padding: .2em;
+ color: #003;
+ border: none;
+ position: relative;
+ display: block;
+ width: 200px;
+ left: -1.5em;
+ top: -1.5em;
+ background: #C6D8E6;
+ text-align: center;
+}
+
+#content span.notetitle
+{
+ padding: .2em;
+ color: #066;
+ border: none;
+ position: relative;
+ display: block;
+ width: 40px;
+ left: -1.5em;
+ top: -.7em;
+ background: #F2FFF1;
+ padding-left: .2em;
+ text-align: center;
+}
+
+#content var
+{
+ font-family: "Lucida Console" , Monaco, monospace;
+}
+
+#content li.folder li
+{
+ list-style-image: none;
+}
+
+#content .dir_listing .comment
+{
+ border: none;
+ font-family: "Courier New" , Courier, monospace;
+ color: #669933;
+}
+
+#content .dir_listing img
+{
+ vertical-align: middle;
+}
+
+#content .redNote
+{
+ color: red;
+}
+
+#content dl.procedure dt
+{
+ font-weight: normal;
+}
+
+#content .editorialNote
+{
+ padding: 5px;
+ background-color: #F3B9B7;
+ border: 3px dashed #FFEEB8;
+ color: #444;
+ font-size: 0.8em;
+}
+
+#content li > ol
+{
+ list-style-type: upper-alpha;
+}
+
+#content p[id]:after
+{
+ font-size: .8em;
+}
+
+#content table.wac
+{
+ border-width: 1px;
+ border-spacing: 2px;
+ border-style: outset;
+ border-color: #808080;
+ border-collapse: collapse;
+ background-color: #ffffff;
+}
+
+#content table.wac th
+{
+ border-width: 1px;
+ padding: 1px;
+ border-style: inset;
+ border-color: #808080;
+ background-color: #ffffff;
+}
+
+#content table.wac td
+{
+ vertical-align: top;
+ border-width: 1px;
+ padding: 1px;
+ border-style: inset;
+ border-color: #808080;
+ background-color: #ffffff;
+}
+
+#content .wacreqid
+{
+ font-weight: bold;
+}
+
+#content .wacreqid_ext
+{
+ font-weight: bold;
+}
+
+#content wacreqtext
+{
+ font-style: normal;
+}
+
+/* Table styles */
+#content table
+{
+ border: 0px;
+ border-collapse: collapse;
+ margin-top: 20px;
+ margin-bottom: 20px;
+}
+
+#content th
+{
+ border-top: 2px solid #719cc7;
+ border-right: 1px solid #c6d9f1;
+ border-left: 1px solid #c6d9f1;
+ background-color: #f3f7fb;
+ padding: 4px;
+ color: #719cc7;
+ font-size: 9pt;
+ font-weight: bold;
+}
+
+#content th[scope="row"]
+{
+ background: inherit;
+ color: inherit;
+ border-top: 1px solid #ddd;
+}
+
+#content td
+{
+ border: 1px solid #c6d9f1;
+ vertical-align:top;
+ padding: 3px 20px 5px 20px;
+}
+/*
+#content th:last-of-type, td:last-of-type
+{
+ border-right: none;
+}
+
+#content tr:nth-child(even)
+{
+ background: #f0f6ff;
+}
+*/
+#content .attrName
+{
+ font-size: 10pt;
+ font-weight: bold;
+}
+
+#content .methodName
+{
+ font-size: 13pt;
+ font-weight: bold;
+}
+
+#content
+{
+ background: white;
+ color: #1C1C1C;
+ margin-right: 20px;
+ font-size: 10pt;
+ font-weight: normal;
+ font-family: Arial, Helvetica, sans-serif;
+}
+
+
+a:link {
+ color: #719cc7;
+ text-decoration: underline;
+ font-weight: bold;
+}
+
+a:hover {
+ color: #0e437d;
+}
+
+a:visited {
+ text-decoration: underline;
+ color: #719cc7;
+ font-weight: bold;
+}
+
+
+
+#content a:link img, #content a:visited img
+{
+ border-style: none;
+}
+/* no border on img links */
+
+#content a img
+{
+ color: white;
+}
+/* trick to hide the border in Netscape 4 */
+@media all
+{
+ /* hide the next rule from Netscape 4 */
+ #content a img
+ {
+ color: inherit;
+ }
+ /* undo the color change above */
+}
+
+#content th, #content td
+{
+ /* ns 4 */ /*font-family: sans-serif;*/
+ font-size: 10pt;
+}
+
+#content h1, #content h2, #content h3, #content h4, #content h5, #content h6
+{
+ text-align: left;
+ font-family: Arial, Verdana, Helvetica, sans-serif;
+}
+/* background should be transparent, but WebTV has a bug */
+#content h1, #content h2, #content h3, #content h4
+{
+ color: #005A9C;
+ background: white;
+ padding-top: 0.2em;
+}
+#content h1
+{
+ font-size: 24pt;
+ color: #0E437D;
+}
+#content h2
+{
+ font-size: 18pt;
+ color: #0E437D;
+}
+#content h3
+{
+ font-size: 14pt;
+ color: #1C1C1C;
+}
+#content h4
+{
+ font-size: 12pt;
+ color: #1C1C1C;
+ font-weight: bold;
+}
+#content h5
+{
+ font-size: 10pt;
+ color: #1C1C1C;
+ font-style: italic;
+ font-weight: bold;
+}
+#content h6
+{
+ font-size: 10pt;
+ color: #1C1C1C;
+ font-weight: bold;
+ font-variant: small-caps;
+}
+
+
+#content .hide
+{
+ display: none;
+}
+
+#content div.head
+{
+ margin-bottom: 1em;
+}
+#content div.head h1
+{
+ margin-top: 2em;
+ clear: both;
+}
+#content div.head table
+{
+ margin-left: 2em;
+ margin-top: 2em;
+}
+
+#content p.copyright
+{
+ font-size: small;
+}
+#content p.copyright small
+{
+ font-size: small;
+}
+
+
+#content a[href] img:hover
+{
+ background: white;
+}
+
+@media screen
+{
+ /* hide from IE3 */
+ #content a[href]:hover
+ {
+ color: #0e437d;
+ }
+}
+
+#content pre
+{
+ margin-left: 2em;
+}
+/*
+ #content p {
+ margin-top: 0.6em;
+ margin-bottom: 0.6em;
+ }
+ */
+
+/* opera 3.50 */
+#content dt, #content dd
+{
+ margin-top: 0;
+ margin-bottom: 15px;
+}
+#content pre, #content code
+{
+ font-family: monospace;
+}
+/* navigator 4 requires this */
+
+#content ul.toc, #content ol.toc
+{
+ list-style: disc; /* Mac NS has problem with 'none' */
+ list-style: none;
+}
+
+
+@media aural
+{
+ #content h1, #content h2, #content h3
+ {
+ stress: 20;
+ richness: 90;
+ }
+ #content .hide
+ {
+ speak: none;
+ }
+ #content p.copyright
+ {
+ volume: x-soft;
+ speech-rate: x-fast;
+ }
+ #content dt
+ {
+ pause-before: 20%;
+ }
+ #content pre
+ {
+ speak-punctuation: code;
+ }
+}
+
+#content .toc
+{
+ list-style-type: none;
+}
+
+#content div.exampleInner pre
+{
+ margin-left: 1em;
+ margin-top: 0em;
+ margin-bottom: 0em;
+}
+#content div.exampleOuter
+{
+ border: 4px double gray;
+ margin: 0em;
+ padding: 0em;
+}
+#content div.exampleInner
+{
+ background-color: #d5dee3;
+ border-top-width: 4px;
+ border-top-style: double;
+ border-top-color: #d3d3d3;
+ border-bottom-width: 4px;
+ border-bottom-style: double;
+ border-bottom-color: #d3d3d3;
+ padding: 4px;
+ margin: 0em;
+}
+#content div.exampleWrapper
+{
+ margin: 4px;
+}
+#content div.exampleHeader
+{
+ font-weight: bold;
+ margin: 4px;
+}
+
+
+
+#content .def-api-feature dt, #content dt .def-device-cap, #content dt.const code
+{
+ font: bold 100% sans-serif;
+}
+#content dt.attribute code, #content dt.method code
+{
+ font: italic 100% sans-serif;
+}
+
+#content .def-device-caps dd
+{
+ margin-bottom: 2em;
+}
+
+#content dt.method
+{
+ margin-top: 2em;
+}
+
+#content .summary td
+{
+ text-align: left;
+ background-color: white;
+ color: inherit;
+ font-family: monospace;
+ white-space: pre;
+ padding: .3em 1em .3em 1em;
+}
+/* Pretty printing styles. Used with prettify.js. */
+
+#content .str
+{
+ color: #080;
+}
+#content .kwd
+{
+ color: #008;
+}
+#content .com
+{
+ color: #800;
+}
+#content .typ
+{
+ color: #606;
+}
+#content .lit
+{
+ color: #066;
+}
+#content .pun
+{
+ color: #660;
+}
+#content .pln
+{
+ color: #000;
+}
+#content .tag
+{
+ color: #008;
+}
+#content .atn
+{
+ color: #606;
+}
+#content .atv
+{
+ color: #080;
+}
+#content .dec
+{
+ color: #606;
+}
+#content .readonly
+{
+ color: red;
+}
+#content .type
+{
+ color: #993800;
+}
+#content .optional
+{
+ color: #000;
+ /*#font-weight: bold;*/
+ /* font-style: italic;*/
+}
+
+
+/* Specify class=linenums on a pre to get line numbering */
+#content ol.linenums
+{
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+/* IE indents via margin-left */
+#content li.L0, #content li.L1, #content li.L2, #content li.L3, #content li.L4, #content li.L5, #content li.L6, #content li.L7, #content li.L8
+{
+ list-style-type: none;
+}
+/* Alternate shading for lines */
+#content li.L1, #content li.L3, #content li.L5, #content li.L7, #content li.L9
+{
+ background: #eee;
+}
+/*@media print {*/
+#content .str
+{
+ color: #060;
+}
+#content .kwd
+{
+ color: #006;
+ font-weight: bold;
+}
+#content .com
+{
+ color: #600;
+ font-style: italic;
+}
+#content .typ
+{
+ color: #404;
+ font-weight: bold;
+}
+#content .lit
+{
+ color: #044;
+}
+#content .pun
+{
+ color: #440;
+}
+#content .pln
+{
+ color: #000;
+}
+#content .tag
+{
+ color: #006;
+ font-weight: bold;
+}
+#content .atn
+{
+ color: #404;
+}
+#content .atv
+{
+ color: #060;
+}
+/*}*/
+
+/* div.status Styles */
+#content a[href].status:link{
+ color: #ffffff;
+ text-decoration: none;
+}
+
+#content a[href].status:visited{
+ color: #ffffff;
+}
+
+#content a[href].status:hover{
+ color: #3D9EC9;
+}
+
+/* Footer Styles */
+#footer
+{
+ background-color: #DDDDDD;
+ margin-top: 20px;
+ font-size: .8em;
+ padding: 20px;
+ color: #666;
+}
+
+#footer .sponsor
+{
+ padding: 0 10px 10px 10px;
+ margin-top: 10px;
+ text-align: right;
+ float: right;
+}
+
+#footer .trademark
+{
+ padding: 0 10px 10px 10px;
+ margin-top: 10px;
+ text-align: right;
+ clear: both;
+}
+
+
+#footer ul
+{
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+#footer li
+{
+ margin-bottom: 2px;
+}
+.version, span.param, .except, .example, .return, .privilege, .remark, .privilegelevel
+{
+ font-weight: bold;
+}
+span.name
+{
+ font-weight: bold;
+}
+
+li.feature
+{
+ margin-left:30px;
+ font-weight: bold;
+}
diff --git a/html/toc.html b/html/toc.html
new file mode 100644
index 0000000..6099d7b
--- /dev/null
+++ b/html/toc.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<title>Tizen IVI Application Programming</title>
+<link href="styles.css" rel="StyleSheet" type="text/css">
+<link href="snippet.css" rel="StyleSheet" type="text/css">
+</head>
+
+<body marginheight="0" marginwidth="0">
+ <h1>Tizen IVI Application Programming</h1>
+ <p>The Tizen Web application programming documentation provides all
+ the information you need to create interactive web applications for
+ Tizen IVI devices:</p>
+ <ul>
+ <li><a href="apireference.html">IVI API References</a>
+ <p>Provides descriptions for all Tizen IVI APIs.</p></li>
+ </ul>
+ <p>The main terms and abbreviations used in the documentation are explained in the <a href="../../org.tizen.gettingstarted/html/glossary/glossary.htm">glossary</a>.</p>
+ <div id="footer">
+ <hr size="1">
+ <font size="1">Except as noted, this content - excluding the
+ Code Examples - is licensed under <a
+ href="http://creativecommons.org/licenses/by/3.0/legalcode"
+ target="_blank">Creative Commons Attribution 3.0</a> and all of the
+ Code Examples contained herein are licensed under <a
+ href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>.<br>For
+ details, see the <a href="https://www.tizen.org/content-license"
+ target="_blank">Content License</a>.
+ </font>
+ </div>
+</body>
+</html>
diff --git a/plugin.xml b/plugin.xml
new file mode 100644
index 0000000..0174fc5
--- /dev/null
+++ b/plugin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.help.toc">
+ <toc
+ file="toc.xml">
+ </toc>
+ <toc
+ file="Tizen_IVI_Toc.xml"
+ primary="true">
+ </toc>
+ </extension>
+
+</plugin>
diff --git a/src/org/tizen/ivi/help/Activator.java b/src/org/tizen/ivi/help/Activator.java
new file mode 100644
index 0000000..a16ac41
--- /dev/null
+++ b/src/org/tizen/ivi/help/Activator.java
@@ -0,0 +1,61 @@
+package org.tizen.ivi.help;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.tizen.ivi.help"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given
+ * plug-in relative path
+ *
+ * @param path the path
+ * @return the image descriptor
+ */
+ public static ImageDescriptor getImageDescriptor(String path) {
+ return imageDescriptorFromPlugin(PLUGIN_ID, path);
+ }
+}
diff --git a/toc.xml b/toc.xml
new file mode 100644
index 0000000..3df12ff
--- /dev/null
+++ b/toc.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Tizen IVI App Programming">
+ <topic label="API References" href="html/apireference.html">
+ <topic label="Locale" href="html/Locale.html"/>
+ <topic label="MediaServer" href="html/MediaServer.html"/>
+ <topic label="Speech" href="html/Speech.html"/>
+ <topic label="Vehicle" href="html/Vehicle.html"/>
+ </topic>
+</toc>