Updated package changelog.
authorShibata Makoto <shibata@mac.tec.toyota.co.jp>
Fri, 26 Apr 2013 11:33:45 +0000 (20:33 +0900)
committerShibata Makoto <shibata@mac.tec.toyota.co.jp>
Fri, 26 Apr 2013 11:34:20 +0000 (20:34 +0900)
Change-Id: I8384b78b2d976e65ba439dd01ac50dcb83cebd74
Signed-off-by: Shibata Makoto <shibata@mac.tec.toyota.co.jp>
113 files changed:
Makefile.am [new file with mode: 0644]
autogen.sh [new file with mode: 0755]
configure.ac [new file with mode: 0644]
data/make.sh [new file with mode: 0644]
data/samplenavi_conf.edc [new file with mode: 0644]
data/samplenavi_conf_dist.edc [new file with mode: 0644]
musicbox.wav [new file with mode: 0644]
org.tizen.ico.app-samplenavi.desktop [new file with mode: 0644]
org.tizen.ico.app-soundsample.desktop [new file with mode: 0644]
org.tizen.ico.app-soundsample.png [new file with mode: 0644]
org.tizen.ico.app-vicsample.desktop [new file with mode: 0644]
org.tizen.ico.app-vicsample.png [new file with mode: 0644]
packaging/ico-uxf-HomeScreen-sample-app.changes [new file with mode: 0644]
packaging/ico-uxf-HomeScreen-sample-app.spec [new file with mode: 0644]
res/Map/css/images/ajax-loader.png [new file with mode: 0644]
res/Map/css/jquery.mobile-1.0.min.css [new file with mode: 0644]
res/Map/css/navi.css [new file with mode: 0644]
res/Map/js/nativeapp_accessor.js [new file with mode: 0644]
res/Map/js/navi.js [new file with mode: 0644]
res/Map/js/navi_defines.js [new file with mode: 0644]
res/Map/js/navi_route.js [new file with mode: 0644]
res/Map/lib/jquery-1.6.4.min.js [new file with mode: 0644]
res/Map/lib/jquery.mobile-1.0.min.js [new file with mode: 0644]
res/Map/map.html [new file with mode: 0644]
res/config.txt [new file with mode: 0644]
res/icons/default/small/org.tizen.ico.app-samplenavi.png [new file with mode: 0644]
res/images/Meter/Meters_SpeedNum_0c.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_0r.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_1c.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_1l.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_1r.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_2c.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_2r.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_3c.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_3r.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_4c.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_4r.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_5c.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_5r.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_6c.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_6r.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_7c.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_7r.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_8c.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_8r.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_9c.png [new file with mode: 0755]
res/images/Meter/Meters_SpeedNum_9r.png [new file with mode: 0755]
res/images/na_bt3_off.png [new file with mode: 0644]
res/images/na_bt3_on.png [new file with mode: 0644]
res/images/na_goal.png [new file with mode: 0644]
res/images/na_goal_text.png [new file with mode: 0644]
res/images/na_pa_01.png [new file with mode: 0644]
res/images/na_pa_02.png [new file with mode: 0644]
res/images/na_pa_03.png [new file with mode: 0644]
res/images/na_pa_04.png [new file with mode: 0644]
res/images/nai_01_off.png [new file with mode: 0644]
res/images/nai_01_on.png [new file with mode: 0644]
res/images/nai_02_off.png [new file with mode: 0644]
res/images/nai_03_off.png [new file with mode: 0644]
res/images/nai_04_off.png [new file with mode: 0644]
res/images/nai_05_off.png [new file with mode: 0644]
res/images/nai_06_off.png [new file with mode: 0644]
res/images/nai_07_off.png [new file with mode: 0644]
res/images/nai_08_off.png [new file with mode: 0644]
res/images/nai_09_off.png [new file with mode: 0644]
res/images/nai_10_off.png [new file with mode: 0644]
res/images/nai_11_off.png [new file with mode: 0644]
res/images/nai_12_off.png [new file with mode: 0644]
res/images/nai_12_on.png [new file with mode: 0644]
res/images/sg_l_01.png [new file with mode: 0644]
res/images/sg_l_02.png [new file with mode: 0644]
res/images/sg_l_03.png [new file with mode: 0644]
res/images/sg_l_04.png [new file with mode: 0644]
res/images/sg_l_05.png [new file with mode: 0644]
res/images/sg_l_06.png [new file with mode: 0644]
res/images/sg_l_07.png [new file with mode: 0644]
res/images/sg_l_08.png [new file with mode: 0644]
res/images/sg_m_01.png [new file with mode: 0644]
res/images/sg_m_02.png [new file with mode: 0644]
res/images/sg_m_03.png [new file with mode: 0644]
res/images/sg_m_04.png [new file with mode: 0644]
res/images/sg_m_05.png [new file with mode: 0644]
res/images/sg_m_06.png [new file with mode: 0644]
res/images/sg_m_07.png [new file with mode: 0644]
res/images/sg_m_08.png [new file with mode: 0644]
res/images/test_cameraview.png [new file with mode: 0644]
res/images/test_map2.png [new file with mode: 0644]
res/landmark.csv [new file with mode: 0644]
res/landmark1.csv [new file with mode: 0644]
res/landmark2.csv [new file with mode: 0644]
res/landmark3.csv [new file with mode: 0644]
res/samplenavi.conf [new file with mode: 0644]
soundsample_config.txt [new file with mode: 0644]
src/.deps/ico_app_soundsample-soundsample.Po [new file with mode: 0644]
src/.deps/ico_app_soundsample-soundsample_pulse_async_test.Po [new file with mode: 0644]
src/.deps/ico_app_soundsample-soundsample_yswavfile.Po [new file with mode: 0644]
src/.deps/ico_app_vicsample-vicsample.Po [new file with mode: 0644]
src/.deps/ico_app_vicsample-vicsample_sample.Po [new file with mode: 0644]
src/Makefile.am [new file with mode: 0644]
src/define.h [new file with mode: 0644]
src/e3d.c [new file with mode: 0644]
src/e3d.h [new file with mode: 0644]
src/samplenavi.c [new file with mode: 0644]
src/samplenavi.h [new file with mode: 0644]
src/soundsample.c [new file with mode: 0644]
src/soundsample.h [new file with mode: 0644]
src/soundsample_pulse_async_test.cpp [new file with mode: 0644]
src/soundsample_yswavfile.cpp [new file with mode: 0644]
src/soundsample_yswavfile.h [new file with mode: 0644]
src/vicsample.c [new file with mode: 0644]
vicsample_config.txt [new file with mode: 0644]
wgt/DemoAudioApp.wgt [new file with mode: 0644]
wgt/DemoMeterApp.wgt [new file with mode: 0644]

diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..f268924
--- /dev/null
@@ -0,0 +1,2 @@
+SUBDIRS = src
+
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..916169a
--- /dev/null
@@ -0,0 +1,9 @@
+#! /bin/sh
+
+test -n "$srcdir" || srcdir=`dirname "$0"`
+test -n "$srcdir" || srcdir=.
+(
+  cd "$srcdir" &&
+  autoreconf --force -v --install
+) || exit
+test -n "$NOCONFIGURE" || "$srcdir/configure" "$@"
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..c5fe71f
--- /dev/null
@@ -0,0 +1,33 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.68])
+AC_CONFIG_SRCDIR([src/soundsample_pulse_async_test.cpp])
+AC_INIT([ico-uxf-HomeScreen-sample-app], [0.0.1], [https://BUG-REPORT-ADDRESS])
+AM_INIT_AUTOMAKE([1.11.1 -Wall -Werror foreign silent-rules])
+AC_CONFIG_SRCDIR([src/soundsample_yswavfile.cpp])
+AC_CONFIG_HEADERS([config.h])
+
+# Checks for programs.
+AC_PROG_CXX
+AC_PROG_CC
+AC_PROG_INSTALL
+
+# Checks for libraries.
+
+# Checks for header files.
+AC_CHECK_HEADERS([stddef.h stdlib.h string.h unistd.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_HEADER_STDBOOL
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_TYPE_UINT8_T
+
+# Checks for library functions.
+AC_FUNC_FORK
+AC_FUNC_MALLOC
+AC_CHECK_FUNCS([gettimeofday memset sqrt strcasecmp strncasecmp strtol tzset])
+AC_CONFIG_FILES([Makefile
+                 src/Makefile])
+AC_OUTPUT
diff --git a/data/make.sh b/data/make.sh
new file mode 100644 (file)
index 0000000..b37b7c5
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+edje_cc -id ../res/images/ -fd ../res/images/ samplenavi_conf.edc
+edje_cc -id ../res/images/ -fd ../res/images/ samplenavi_conf_dist.edc
+chmod 755 samplenavi_conf.edj
+chmod 755 samplenavi_conf_dist.edj
diff --git a/data/samplenavi_conf.edc b/data/samplenavi_conf.edc
new file mode 100644 (file)
index 0000000..232ffe1
--- /dev/null
@@ -0,0 +1,216 @@
+images{
+       image:"nai_01_off.png" COMP;
+       image:"nai_01_on.png" COMP;
+       image:"nai_02_off.png" COMP;
+       image:"nai_03_off.png" COMP;
+       image:"nai_04_off.png" COMP;
+       image:"na_pa_01.png" COMP;
+       image:"na_pa_02.png" COMP;
+}
+
+collections {
+       group {
+               name: "samplenavi_conf";
+               parts {
+                       part {
+                               name: "background";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 0 0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.5;
+                                               offset: -1 -1;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "transparency";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 0;
+                                       rel1 {
+                                               relative: 0.0 0.5;
+                                               offset: 0 0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               offset: -1 -1;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "ui_bg";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 34 119 255;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 0 415;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.5;
+                                               offset: -1 -1;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "nai_01";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 34 128;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  193 287;
+                                       }
+                                       image{
+                                               normal: "nai_01_off.png"; 
+                                       }
+                               }
+                               description {
+                                       state: "nai_01_on" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 34 128;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  193 287;
+                                       }
+                                       image{
+                                               normal: "nai_01_on.png"; 
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "nai_02";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 214 128;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  373 287;
+                                       }
+                                       image{
+                                               normal: "nai_02_off.png"; 
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "nai_03";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 394 128;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  553 287;
+                                       }
+                                       image{
+                                               normal: "nai_03_off.png"; 
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "nai_04";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 574 128;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  733 287;
+                                       }
+                                       image{
+                                               normal: "nai_04_off.png"; 
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "na_pa_01";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               //access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 20 439;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset: 29 459;
+                                       }
+                                       image{
+                                               normal: "na_pa_01.png"; 
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "na_pa_02";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 38 437;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset: 87 459;
+                                       }
+                                       image{
+                                               normal: "na_pa_02.png"; 
+                                       }
+                               }
+                       }
+               }
+       }
+}
+
diff --git a/data/samplenavi_conf_dist.edc b/data/samplenavi_conf_dist.edc
new file mode 100644 (file)
index 0000000..472ad83
--- /dev/null
@@ -0,0 +1,331 @@
+images{
+       image:"nai_05_off.png" COMP;
+       image:"nai_06_off.png" COMP;
+       image:"nai_07_off.png" COMP;
+       image:"nai_08_off.png" COMP;
+       image:"nai_09_off.png" COMP;
+       image:"nai_10_off.png" COMP;
+       image:"nai_11_off.png" COMP;
+       image:"nai_12_off.png" COMP;
+       image:"nai_12_on.png" COMP;
+       image:"na_pa_01.png" COMP;
+       image:"na_pa_03.png" COMP;
+       image:"na_pa_04.png" COMP;
+}
+
+collections {
+       group {
+               name: "samplenavi_dist";
+               parts {
+                       part {
+                               name: "background";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 0 0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.5;
+                                               offset: -1 -1;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "transparency";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 0;
+                                       rel1 {
+                                               relative: 0.0 0.5;
+                                               offset: 0 0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               offset: -1 -1;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "ui_bg";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 34 119 255;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 0 415;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.5;
+                                               offset: -1 -1;
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "nai_05";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 34 38;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  193 197;
+                                       }
+                                       image{
+                                               normal: "nai_05_off.png";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "nai_06";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 214 38;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  373 197;
+                                       }
+                                       image{
+                                               normal: "nai_06_off.png";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "nai_07";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 394 38;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  553 197;
+                                       }
+                                       image{
+                                               normal: "nai_07_off.png";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "nai_08";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 574 38;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  733 197;
+                                       }
+                                       image{
+                                               normal: "nai_08_off.png";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "nai_09";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 34 218;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  193 377;
+                                       }
+                                       image{
+                                               normal: "nai_09_off.png";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "nai_10";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 214 218;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  373 377;
+                                       }
+                                       image{
+                                               normal: "nai_10_off.png";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "nai_11";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 394 218;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  553 377;
+                                       }
+                                       image{
+                                               normal: "nai_11_off.png";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "nai_12";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 574 218;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  733 377;
+                                       }
+                                       image{
+                                               normal: "nai_12_off.png";
+                                       }
+                               }
+                               description {
+                                       state: "nai_12_on" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 574 218;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset:  733 377;
+                                       }
+                                       image{
+                                               normal: "nai_12_on.png";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "na_pa_03";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 38 437;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset: 87 459;
+                                       }
+                                       image{
+                                               normal: "na_pa_03.png";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "na_pa_01";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               //access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 100 439;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset: 109 459;
+                                       }
+                                       image{
+                                               normal: "na_pa_01.png";
+                                       }
+                               }
+                       }
+
+                       part {
+                               name: "na_pa_04";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               access: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 255 255 255 255; 
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               offset: 121 437;
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               offset: 190 459;
+                                       }
+                                       image{
+                                               normal: "na_pa_04.png";
+                                       }
+                               }
+                       }
+
+               }
+       }
+}
diff --git a/musicbox.wav b/musicbox.wav
new file mode 100644 (file)
index 0000000..119e52c
Binary files /dev/null and b/musicbox.wav differ
diff --git a/org.tizen.ico.app-samplenavi.desktop b/org.tizen.ico.app-samplenavi.desktop
new file mode 100644 (file)
index 0000000..45e664a
--- /dev/null
@@ -0,0 +1,9 @@
+Name=ico-app-samplenavi
+Type=Application
+Exec=/opt/apps/org.tizen.ico.app-samplenavi/bin/ico-app-samplenavi -basescreen
+Icon=org.tizen.ico.app-samplenavi.png
+Nodisplay=True
+Version=0.1.0
+Categories=Map;dispzone=Full;
+#Categories=Map;dispzone=UpperLeft;
+Comment=sample navigation app
diff --git a/org.tizen.ico.app-soundsample.desktop b/org.tizen.ico.app-soundsample.desktop
new file mode 100644 (file)
index 0000000..ae4a91c
--- /dev/null
@@ -0,0 +1,8 @@
+Name=ico-app-soundsample
+Type=Application
+Exec=/opt/apps/org.tizen.ico.app-soundsample/bin/ico-app-soundsample
+Icon=org.tizen.ico.app-soundsample.png
+Nodisplay=True
+Version=0.1.0
+Comment=audio test app
+Categories=Entertainment;Maker;run=Center;dispzone=Full;soundzone=Full;noauto
diff --git a/org.tizen.ico.app-soundsample.png b/org.tizen.ico.app-soundsample.png
new file mode 100644 (file)
index 0000000..08ba6e3
Binary files /dev/null and b/org.tizen.ico.app-soundsample.png differ
diff --git a/org.tizen.ico.app-vicsample.desktop b/org.tizen.ico.app-vicsample.desktop
new file mode 100644 (file)
index 0000000..434c5d0
--- /dev/null
@@ -0,0 +1,9 @@
+Name=ico-app-vicsample
+Type=Application
+Exec=/opt/apps/org.tizen.ico.app-vicsample/bin/ico-app-vicsample
+Icon=org.tizen.ico.app-vicsample.png
+Nodisplay=True
+Version=0.1.0
+Comment=vic info display test app
+#Categories=Entertainment;maker;run=Center;dispzone=Full
+Categories=Entertainment;maker;run=Center
diff --git a/org.tizen.ico.app-vicsample.png b/org.tizen.ico.app-vicsample.png
new file mode 100644 (file)
index 0000000..ea20150
Binary files /dev/null and b/org.tizen.ico.app-vicsample.png differ
diff --git a/packaging/ico-uxf-HomeScreen-sample-app.changes b/packaging/ico-uxf-HomeScreen-sample-app.changes
new file mode 100644 (file)
index 0000000..9927cfb
--- /dev/null
@@ -0,0 +1,3 @@
+* Fri Apr 26 2013 Shibata Makoto <shibata@mac.tec.toyota.co.jp> c744832
+- Import initial.
+
diff --git a/packaging/ico-uxf-HomeScreen-sample-app.spec b/packaging/ico-uxf-HomeScreen-sample-app.spec
new file mode 100644 (file)
index 0000000..b7fe12f
--- /dev/null
@@ -0,0 +1,212 @@
+Name:       ico-uxf-HomeScreen-sample-app
+Summary:    HomeScreen sample application 
+Version:    0.0.4
+Release:    1
+Group:      System/GUI
+License:    Apache License, Version 2.0
+URL:        http://www.toyota.com
+Source0:    %{name}-%{version}.tar.bz2
+
+#ico-app-soundsample
+BuildRequires: pkgconfig(wayland-client) >= 1.0
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(eina)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(eina)
+BuildRequires: pkgconfig(edje)
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(ecore-wayland)
+BuildRequires: pkgconfig(ecore-x)
+BuildRequires: pkgconfig(dbus-1)
+BuildRequires: pkgconfig(json-glib-1.0)
+BuildRequires: pkgconfig(aul)
+BuildRequires: pkgconfig(bundle)
+BuildRequires: pkgconfig(ail)
+BuildRequires: libwebsockets-devel
+BuildRequires: pulseaudio-libs-devel
+BuildRequires: ico-uxf-weston-plugin-devel
+BuildRequires: ico-uxf-HomeScreen-devel
+Requires: weston >= 1.0
+Requires: ico-uxf-weston-plugin
+Requires: ico-uxf-HomeScreen
+Requires: ecore
+Requires: elementary
+Requires: evas
+Requires: glib2
+Requires: pulseaudio-libs
+
+#ico-app-vicsample
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(ecore-wayland)
+BuildRequires: pkgconfig(ecore-x)
+BuildRequires: pkgconfig(dbus-1)
+BuildRequires: pkgconfig(json-glib-1.0)
+BuildRequires: pkgconfig(aul)
+BuildRequires: libwebsockets-devel
+BuildRequires: ico-uxf-weston-plugin-devel
+BuildRequires: ico-uxf-HomeScreen-devel
+Requires: ico-uxf-weston-plugin
+Requires: ico-uxf-HomeScreen
+Requires: ecore
+Requires: elementary
+Requires: evas
+Requires: dbus
+Requires: dbus-glib
+Requires: automotive-message-broker
+
+#ico-app-samplenavi
+BuildRequires: pkgconfig(ecore)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(ecore-evas)
+BuildRequires: pkgconfig(eina)
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(ewebkit2)
+BuildRequires: pkgconfig(wayland-client)
+BuildRequires: pkgconfig(wayland-cursor)
+BuildRequires: pkgconfig(wayland-egl)
+BuildRequires: pkgconfig(wayland-server)
+BuildRequires: pkgconfig(ecore-wayland)
+BuildRequires: pkgconfig(glesv2)
+BuildRequires: pkgconfig(egl)
+BuildRequires: pkgconfig(cairo)
+BuildRequires: pkgconfig(pango)
+BuildRequires: pkgconfig(pangocairo)
+BuildRequires: pkgconfig(gdk-pixbuf-2.0)
+BuildRequires: pkgconfig(gobject-2.0)
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(gmodule-2.0)
+BuildRequires: pkgconfig(gthread-2.0)
+BuildRequires: pkgconfig(dbus-1)
+BuildRequires: pkgconfig(json-glib-1.0)
+BuildRequires: pkgconfig(aul)
+BuildRequires: libwebsockets-devel
+BuildRequires: ico-uxf-weston-plugin-devel
+BuildRequires: ico-uxf-HomeScreen-devel
+BuildRequires: edje-tools
+#BuildRequires: pkgconfig(opencv)
+Requires: ico-uxf-weston-plugin
+Requires: ico-uxf-HomeScreen
+Requires: ecore
+Requires: evas
+Requires: ecore-evas
+Requires: eina
+Requires: elementary
+Requires: webkit2-efl
+Requires: wayland
+Requires: mesa-libwayland-egl
+Requires: ecore-wayland
+Requires: mesa-libGLESv2
+Requires: mesa-libEGL
+Requires: cairo
+Requires: pango
+Requires: gdk-pixbuf
+Requires: glib2
+Requires: json-glib
+Requires: aul
+Requires: dbus
+Requires: dbus-glib
+Requires: automotive-message-broker
+#Requires: libopencv2_4
+
+%description
+HomeScreen sample application 
+
+%prep
+%setup -q -n %{name}-%{version}
+
+%build
+autoreconf --install
+
+%configure
+make %{?_smp_mflags}
+cd data/;sh make.sh;cd ../
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+# configurations(ico-app-soundsample)
+%define sound_PREFIX /opt/apps/org.tizen.ico.app-soundsample
+
+mkdir -p %{buildroot}%{sound_PREFIX}/bin/
+mkdir -p %{buildroot}%{sound_PREFIX}/sounds/
+mkdir -p %{buildroot}%{sound_PREFIX}/res/icons/default/small/
+mkdir -p %{buildroot}/opt/share/applications/
+install -m 0644 soundsample_config.txt %{buildroot}%{sound_PREFIX}/res/
+install -m 0644 org.tizen.ico.app-soundsample.png %{buildroot}%{sound_PREFIX}/res/icons/default/small/
+install -m 0644 musicbox.wav %{buildroot}%{sound_PREFIX}/sounds/
+install -m 0644 org.tizen.ico.app-soundsample.desktop %{buildroot}/opt/share/applications/
+
+# configurations(ico-app-vicsample)
+%define vic_PREFIX /opt/apps/org.tizen.ico.app-vicsample
+
+mkdir -p %{buildroot}%{vic_PREFIX}/bin/
+mkdir -p %{buildroot}%{vic_PREFIX}/res/icons/default/small/
+mkdir -p %{buildroot}/opt/share/applications/
+install -m 0644 vicsample_config.txt %{buildroot}%{vic_PREFIX}/res/
+install -m 0644 org.tizen.ico.app-vicsample.png %{buildroot}%{vic_PREFIX}/res/icons/default/small/
+install -m 0644 org.tizen.ico.app-vicsample.desktop %{buildroot}/opt/share/applications/
+
+# configurations(ico-app-samplenavi)
+%define navi_PREFIX /opt/apps/org.tizen.ico.app-samplenavi
+
+mkdir -p %{buildroot}%{navi_PREFIX}/bin/
+mkdir -p %{buildroot}%{navi_PREFIX}/data/
+mkdir -p %{buildroot}/opt/share/applications/
+install -m 0644 data/*.edj %{buildroot}%{navi_PREFIX}/data/
+install -m 0644 org.tizen.ico.app-samplenavi.desktop %{buildroot}/opt/share/applications/
+cp -r res %{buildroot}%{navi_PREFIX}/.
+
+# configurations(DemoMeterApp.wgt DemoAudioApp.wgt)
+mkdir -p %{buildroot}/tmp/
+install -m 0644 wgt/*.wgt %{buildroot}/tmp/
+#mkdir -p %{buildroot}/opt/apps/homescreen-sample-app/wgt/
+#install -m 0644 wgt/*.wgt %{buildroot}/opt/apps/homescreen-sample-app/wgt/
+#install -m 0644 wgt/wgt-install.sh %{buildroot}/opt/apps/homescreen-sample-app/wgt/
+#install -m 0644 wgt/wgt-uninstall.sh %{buildroot}/opt/apps/homescreen-sample-app/wgt/
+
+%files
+%defattr(-,root,root,-)
+# files(ico-app-soundsample)
+%{sound_PREFIX}/bin/ico-app-soundsample
+%{sound_PREFIX}/res/soundsample_config.txt
+%{sound_PREFIX}/res/icons/default/small/org.tizen.ico.app-soundsample.png
+%{sound_PREFIX}/sounds/musicbox.wav
+/opt/share/applications/org.tizen.ico.app-soundsample.desktop
+
+# files(ico-app-vicsample)
+%{vic_PREFIX}/bin/ico-app-vicsample
+%{vic_PREFIX}/res/vicsample_config.txt
+%{vic_PREFIX}/res/icons/default/small/org.tizen.ico.app-vicsample.png
+/opt/share/applications/org.tizen.ico.app-vicsample.desktop
+
+# files(ico-app-samplenavi)
+%{navi_PREFIX}/bin/ico-app-samplenavi
+%{navi_PREFIX}/data/*.edj
+%{navi_PREFIX}/res
+/opt/share/applications/org.tizen.ico.app-samplenavi.desktop
+
+# files(DemoMeterApp.wgt DemoAudioApp.wgt)
+/tmp/*.wgt
+#/opt/apps/homescreen-sample-app/wgt/*.wgt
+#/opt/apps/homescreen-sample-app/wgt/wgt-install.sh
+#/opt/apps/homescreen-sample-app/wgt/wgt-uninstall.sh
+
+%post
+# install shell(DemoMeterApp.wgt DemoAudioApp.wgt)
+#sh /opt/apps/homescreen-sample-app/wgt/wgt-install.sh
+wrt-installer -i /tmp/DemoMeterApp.wgt
+wrt-installer -i /tmp/DemoAudioApp.wgt
+rm -f /tmp/DemoMeterApp.wgt
+rm -f /tmp/DemoAudioApp.wgt
+
+%preun
+# uninstall shell(DemoMeterApp.wgt DemoAudioApp.wgt)
+#sh /opt/apps/homescreen-sample-app/wgt/wgt-uninstall.sh
+
+%postun
+id=`wrt-launcher -l | grep -e " DemoMeterApp " | sed -e 's/\s\{1,\}/ /g' | cut -d' ' -f3`
+wrt-installer -u $id
+id=`wrt-launcher -l | grep -e " DemoAudioApp " | sed -e 's/\s\{1,\}/ /g' | cut -d' ' -f3`
+wrt-installer -u $id
diff --git a/res/Map/css/images/ajax-loader.png b/res/Map/css/images/ajax-loader.png
new file mode 100644 (file)
index 0000000..4beacbf
Binary files /dev/null and b/res/Map/css/images/ajax-loader.png differ
diff --git a/res/Map/css/jquery.mobile-1.0.min.css b/res/Map/css/jquery.mobile-1.0.min.css
new file mode 100644 (file)
index 0000000..ab4e0b8
--- /dev/null
@@ -0,0 +1,2 @@
+/*! jQuery Mobile v1.0 jquerymobile.com | jquery.org/license */
+.ui-bar-a{border:1px solid #2a2a2a;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#111));background-image:-webkit-linear-gradient(#3c3c3c,#111);background-image:-moz-linear-gradient(#3c3c3c,#111);background-image:-ms-linear-gradient(#3c3c3c,#111);background-image:-o-linear-gradient(#3c3c3c,#111);background-image:linear-gradient(#3c3c3c,#111)}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-a .ui-link:hover{color:#2489ce}.ui-bar-a .ui-link:active{color:#2489ce}.ui-bar-a .ui-link:visited{color:#2489ce}.ui-body-a,.ui-dialog.ui-overlay-a{border:1px solid #2a2a2a;background:#222;color:#fff;text-shadow:0 1px 0 #000;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#666),to(#222));background-image:-webkit-linear-gradient(#666,#222);background-image:-moz-linear-gradient(#666,#222);background-image:-ms-linear-gradient(#666,#222);background-image:-o-linear-gradient(#666,#222);background-image:linear-gradient(#666,#222)}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:bold}.ui-body-a .ui-link:hover{color:#2489ce}.ui-body-a .ui-link:active{color:#2489ce}.ui-body-a .ui-link:visited{color:#2489ce}.ui-btn-up-a{border:1px solid #222;background:#333;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#333));background-image:-webkit-linear-gradient(#555,#333);background-image:-moz-linear-gradient(#555,#333);background-image:-ms-linear-gradient(#555,#333);background-image:-o-linear-gradient(#555,#333);background-image:linear-gradient(#555,#333)}.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#666),to(#444));background-image:-webkit-linear-gradient(#666,#444);background-image:-moz-linear-gradient(#666,#444);background-image:-ms-linear-gradient(#666,#444);background-image:-o-linear-gradient(#666,#444);background-image:linear-gradient(#666,#444)}.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#3d3d3d;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#333),to(#5a5a5a));background-image:-webkit-linear-gradient(#333,#5a5a5a);background-image:-moz-linear-gradient(#333,#5a5a5a);background-image:-ms-linear-gradient(#333,#5a5a5a);background-image:-o-linear-gradient(#333,#5a5a5a);background-image:linear-gradient(#333,#5a5a5a)}.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #254f7a;background-image:-webkit-gradient(linear,left top,left bottom,from(#81a8ce),to(#5e87b0));background-image:-webkit-linear-gradient(#81a8ce,#5e87b0);background-image:-moz-linear-gradient(#81a8ce,#5e87b0);background-image:-ms-linear-gradient(#81a8ce,#5e87b0);background-image:-o-linear-gradient(#81a8ce,#5e87b0);background-image:linear-gradient(#81a8ce,#5e87b0)}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b .ui-link{color:#ddf0f8;font-weight:bold}.ui-bar-b .ui-link:hover{color:#ddf0f8}.ui-bar-b .ui-link:active{color:#ddf0f8}.ui-bar-b .ui-link:visited{color:#ddf0f8}.ui-body-b,.ui-dialog.ui-overlay-b{border:1px solid #c6c6c6;background:#ccc;color:#333;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#e6e6e6),to(#ccc));background-image:-webkit-linear-gradient(#e6e6e6,#ccc);background-image:-moz-linear-gradient(#e6e6e6,#ccc);background-image:-ms-linear-gradient(#e6e6e6,#ccc);background-image:-o-linear-gradient(#e6e6e6,#ccc);background-image:linear-gradient(#e6e6e6,#ccc)}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-body-b .ui-link:hover{color:#2489ce}.ui-body-b .ui-link:active{color:#2489ce}.ui-body-b .ui-link:visited{color:#2489ce}.ui-btn-up-b{border:1px solid #145072;background:#2567ab;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #145072;background-image:-webkit-gradient(linear,left top,left bottom,from(#5f9cc5),to(#396b9e));background-image:-webkit-linear-gradient(#5f9cc5,#396b9e);background-image:-moz-linear-gradient(#5f9cc5,#396b9e);background-image:-ms-linear-gradient(#5f9cc5,#396b9e);background-image:-o-linear-gradient(#5f9cc5,#396b9e);background-image:linear-gradient(#5f9cc5,#396b9e)}.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00516e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #014d68;background-image:-webkit-gradient(linear,left top,left bottom,from(#72b0d4),to(#4b88b6));background-image:-webkit-linear-gradient(#72b0d4,#4b88b6);background-image:-moz-linear-gradient(#72b0d4,#4b88b6);background-image:-ms-linear-gradient(#72b0d4,#4b88b6);background-image:-o-linear-gradient(#72b0d4,#4b88b6);background-image:linear-gradient(#72b0d4,#4b88b6)}.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #225377;background-image:-webkit-gradient(linear,left top,left bottom,from(#396b9e),to(#4e89c5));background-image:-webkit-linear-gradient(#396b9e,#4e89c5);background-image:-moz-linear-gradient(#396b9e,#4e89c5);background-image:-ms-linear-gradient(#396b9e,#4e89c5);background-image:-o-linear-gradient(#396b9e,#4e89c5);background-image:linear-gradient(#396b9e,#4e89c5)}.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px solid #b3b3b3;background:#e9eaeb;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#e9eaeb));background-image:-webkit-linear-gradient(#f0f0f0,#e9eaeb);background-image:-moz-linear-gradient(#f0f0f0,#e9eaeb);background-image:-ms-linear-gradient(#f0f0f0,#e9eaeb);background-image:-o-linear-gradient(#f0f0f0,#e9eaeb);background-image:linear-gradient(#f0f0f0,#e9eaeb)}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-c .ui-link:hover{color:#2489ce}.ui-bar-c .ui-link:active{color:#2489ce}.ui-bar-c .ui-link:visited{color:#2489ce}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c,.ui-dialog.ui-overlay-c{border:1px solid #b3b3b3;color:#333;text-shadow:0 1px 0 #fff;background:#f0f0f0;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#ddd));background-image:-webkit-linear-gradient(#eee,#ddd);background-image:-moz-linear-gradient(#eee,#ddd);background-image:-ms-linear-gradient(#eee,#ddd);background-image:-o-linear-gradient(#eee,#ddd);background-image:linear-gradient(#eee,#ddd)}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-body-c .ui-link:hover{color:#2489ce}.ui-body-c .ui-link:active{color:#2489ce}.ui-body-c .ui-link:visited{color:#2489ce}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#444;text-shadow:0 1px 1px #f6f6f6;background-image:-webkit-gradient(linear,left top,left bottom,from(#fdfdfd),to(#eee));background-image:-webkit-linear-gradient(#fdfdfd,#eee);background-image:-moz-linear-gradient(#fdfdfd,#eee);background-image:-ms-linear-gradient(#fdfdfd,#eee);background-image:-o-linear-gradient(#fdfdfd,#eee);background-image:linear-gradient(#fdfdfd,#eee)}.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dadada;font-weight:bold;color:#101010;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#ededed),to(#dadada));background-image:-webkit-linear-gradient(#ededed,#dadada);background-image:-moz-linear-gradient(#ededed,#dadada);background-image:-ms-linear-gradient(#ededed,#dadada);background-image:-o-linear-gradient(#ededed,#dadada);background-image:linear-gradient(#ededed,#dadada)}.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #808080;background:#fdfdfd;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fdfdfd));background-image:-webkit-linear-gradient(#eee,#fdfdfd);background-image:-moz-linear-gradient(#eee,#fdfdfd);background-image:-ms-linear-gradient(#eee,#fdfdfd);background-image:-o-linear-gradient(#eee,#fdfdfd);background-image:linear-gradient(#eee,#fdfdfd)}.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px solid #ccc;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#bbb));background-image:-webkit-linear-gradient(#ddd,#bbb);background-image:-moz-linear-gradient(#ddd,#bbb);background-image:-ms-linear-gradient(#ddd,#bbb);background-image:-o-linear-gradient(#ddd,#bbb);background-image:linear-gradient(#ddd,#bbb)}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d .ui-link{color:#2489ce;font-weight:bold}.ui-bar-d .ui-link:hover{color:#2489ce}.ui-bar-d .ui-link:active{color:#2489ce}.ui-bar-d .ui-link:visited{color:#2489ce}.ui-body-d,.ui-dialog.ui-overlay-d{border:1px solid #ccc;color:#333;text-shadow:0 1px 0 #fff;background:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d .ui-link:hover{color:#2489ce}.ui-body-d .ui-link:active{color:#2489ce}.ui-body-d .ui-link:visited{color:#2489ce}.ui-btn-up-d{border:1px solid #ccc;background:#fff;font-weight:bold;color:#444;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#222;cursor:pointer;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fdfdfd),to(#eee));background-image:-webkit-linear-gradient(#fdfdfd,#eee);background-image:-moz-linear-gradient(#fdfdfd,#eee);background-image:-ms-linear-gradient(#fdfdfd,#eee);background-image:-o-linear-gradient(#fdfdfd,#eee);background-image:linear-gradient(#fdfdfd,#eee)}.ui-btn-hover-d a.ui-link-inherit{color:#222}.ui-btn-down-d{border:1px solid #aaa;background:#fff;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fff));background-image:-webkit-linear-gradient(#eee,#fff);background-image:-moz-linear-gradient(#eee,#fff);background-image:-ms-linear-gradient(#eee,#fff);background-image:-o-linear-gradient(#eee,#fff);background-image:linear-gradient(#eee,#fff)}.ui-btn-down-d a.ui-link-inherit{color:#111}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fadb4e));background-image:-webkit-linear-gradient(#fceda7,#fadb4e);background-image:-moz-linear-gradient(#fceda7,#fadb4e);background-image:-ms-linear-gradient(#fceda7,#fadb4e);background-image:-o-linear-gradient(#fceda7,#fadb4e);background-image:linear-gradient(#fceda7,#fadb4e)}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Helvetica,Arial,sans-serif}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e .ui-link{color:#2489ce;font-weight:bold}.ui-bar-e .ui-link:hover{color:#2489ce}.ui-bar-e .ui-link:active{color:#2489ce}.ui-bar-e .ui-link:visited{color:#2489ce}.ui-body-e,.ui-dialog.ui-overlay-e{border:1px solid #f7c942;color:#333;text-shadow:0 1px 0 #fff;background:#faeb9e;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#faeb9e));background-image:-webkit-linear-gradient(#fff,#faeb9e);background-image:-moz-linear-gradient(#fff,#faeb9e);background-image:-ms-linear-gradient(#fff,#faeb9e);background-image:-o-linear-gradient(#fff,#faeb9e);background-image:linear-gradient(#fff,#faeb9e)}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e .ui-link:hover{color:#2489ce}.ui-body-e .ui-link:active{color:#2489ce}.ui-body-e .ui-link:visited{color:#2489ce}.ui-btn-up-e{border:1px solid #f7c942;background:#fadb4e;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fadb4e));background-image:-webkit-linear-gradient(#fceda7,#fadb4e);background-image:-moz-linear-gradient(#fceda7,#fadb4e);background-image:-ms-linear-gradient(#fceda7,#fadb4e);background-image:-o-linear-gradient(#fceda7,#fadb4e);background-image:linear-gradient(#fceda7,#fadb4e)}.ui-btn-up-e a.ui-link-inherit{color:#333}.ui-btn-hover-e{border:1px solid #e79952;background:#fbe26f;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf0b5),to(#fbe26f));background-image:-webkit-linear-gradient(#fcf0b5,#fbe26f);background-image:-moz-linear-gradient(#fcf0b5,#fbe26f);background-image:-ms-linear-gradient(#fcf0b5,#fbe26f);background-image:-o-linear-gradient(#fcf0b5,#fbe26f);background-image:linear-gradient(#fcf0b5,#fbe26f)}.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f7c942;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fadb4e),to(#fceda7));background-image:-webkit-linear-gradient(#fadb4e,#fceda7);background-image:-moz-linear-gradient(#fadb4e,#fceda7);background-image:-ms-linear-gradient(#fadb4e,#fceda7);background-image:-o-linear-gradient(#fadb4e,#fceda7);background-image:linear-gradient(#fadb4e,#fceda7)}.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #155678;background:#4596ce;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(#85bae4),to(#5393c5));background-image:-webkit-linear-gradient(#85bae4,#5393c5);background-image:-moz-linear-gradient(#85bae4,#5393c5);background-image:-ms-linear-gradient(#85bae4,#5393c5);background-image:-o-linear-gradient(#85bae4,#5393c5);background-image:linear-gradient(#85bae4,#5393c5);font-family:Helvetica,Arial,sans-serif}.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-corner-none{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-br{border-bottom:#828282;border-bottom:rgba(130,130,130,.3);border-bottom-width:1px;border-bottom-style:solid}.ui-disabled{opacity:.3}.ui-disabled,.ui-disabled a{pointer-events:none;cursor:default}.ui-icon,.ui-icon-searchfield:after{background:#666;background:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png);background-repeat:no-repeat;-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt{background:#fff;background:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-resolution:240dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(images/icons-36-white.png);-moz-background-size:776px 18px;-o-background-size:776px 18px;-webkit-background-size:776px 18px;background-size:776px 18px}.ui-icon-alt{background-image:url(images/icons-36-black.png)}}.ui-icon-plus{background-position:-0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-180px 50%}.ui-icon-arrow-d{background-position:-216px 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-288px 50%}.ui-icon-refresh{background-position:-324px 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-396px 50%}.ui-icon-grid{background-position:-432px 50%}.ui-icon-star{background-position:-468px 50%}.ui-icon-alert{background-position:-504px 50%}.ui-icon-info{background-position:-540px 50%}.ui-icon-home{background-position:-576px 50%}.ui-icon-search,.ui-icon-searchfield:after{background-position:-612px 50%}.ui-icon-checkbox-off{background-position:-684px 50%}.ui-icon-checkbox-on{background-position:-648px 50%}.ui-icon-radio-off{background-position:-756px 50%}.ui-icon-radio-on{background-position:-720px 50%}.ui-checkbox .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.ui-icon-checkbox-off,.ui-icon-radio-off{background-color:transparent}.ui-checkbox-on .ui-icon,.ui-radio-on .ui-icon{background-color:#4596ce}.ui-icon-loading{background-image:url(images/ajax-loader.png);width:40px;height:40px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;background-size:35px 35px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.ui-corner-tl,.ui-corner-tr,.ui-corner-bl,.ui-corner-br,.ui-corner-top,.ui-corner-bottom,.ui-corner-right,.ui-corner-left,.ui-corner-all,.ui-btn-corner-tl,.ui-btn-corner-tr,.ui-btn-corner-bl,.ui-btn-corner-br,.ui-btn-corner-top,.ui-btn-corner-bottom,.ui-btn-corner-right,.ui-btn-corner-left,.ui-btn-corner-all{-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus{outline-width:2px}.ui-mobile,.ui-mobile body{height:100%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border:0}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}@media screen and (orientation:portrait){.ui-mobile,.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile,.ui-mobile .ui-page{min-height:300px}}.ui-page.ui-mobile-touch-overflow,.ui-mobile-touch-overflow.ui-native-fixed .ui-content{overflow:auto;height:100%;-webkit-overflow-scrolling:touch;-moz-overflow-scrolling:touch;-o-overflow-scrolling:touch;-ms-overflow-scrolling:touch;overflow-scrolling:touch}.ui-page.ui-mobile-touch-overflow,.ui-page.ui-mobile-touch-overflow *{-webkit-transform:rotateY(0)}.ui-page.ui-mobile-pre-transition{display:block}.ui-loading .ui-mobile-viewport{overflow:hidden!important}.ui-loading .ui-loader{display:block}.ui-loading .ui-page{overflow:hidden}.ui-loader{display:none;position:absolute;opacity:.85;z-index:100;left:50%;width:200px;margin-left:-130px;margin-top:-35px;padding:10px 30px}.ui-loader h1{font-size:15px;text-align:center}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0 auto;width:35px;height:35px;background-color:transparent}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{display:block}.ui-page .ui-header,.ui-page .ui-footer{position:relative}.ui-header .ui-btn-left{position:absolute;left:10px;top:.4em}.ui-header .ui-btn-right{position:absolute;right:10px;top:.4em}.ui-header .ui-title,.ui-footer .ui-title{min-height:1.1em;text-align:center;font-size:16px;display:block;margin:.6em 90px .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:.6em 15px .8em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-page-fullscreen .ui-content{padding:0}.ui-mobile-touch-overflow.ui-page.ui-native-fixed,.ui-mobile-touch-overflow.ui-page.ui-native-fullscreen{overflow:visible}.ui-mobile-touch-overflow.ui-native-fixed .ui-header,.ui-mobile-touch-overflow.ui-native-fixed .ui-footer{position:fixed;left:0;right:0;top:0;z-index:200}.ui-mobile-touch-overflow.ui-page.ui-native-fixed .ui-footer{top:auto;bottom:0}.ui-mobile-touch-overflow.ui-native-fixed .ui-content{padding-top:2.5em;padding-bottom:3em;top:0;bottom:0;height:auto;position:absolute}.ui-mobile-touch-overflow.ui-native-fullscreen .ui-content{padding-top:0;padding-bottom:0}.ui-mobile-touch-overflow.ui-native-fullscreen .ui-header,.ui-mobile-touch-overflow.ui-native-fullscreen .ui-footer{opacity:.9}.ui-native-bars-hidden{display:none}.ui-icon{width:18px;height:18px}.ui-fullscreen img{max-width:100%}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.spin{-webkit-transform:rotate(360deg);-webkit-animation-name:spin;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear}@-webkit-keyframes spin{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}.in,.out{-webkit-animation-timing-function:ease-in-out;-webkit-animation-duration:350ms}.slide.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft}.slide.in{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromleft}.slideup.out{-webkit-animation-name:dontmove;z-index:0}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;z-index:10}.slideup.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slideup.out.reverse{-webkit-transform:translateY(100%);z-index:10;-webkit-animation-name:slideouttobottom}.slidedown.out{-webkit-animation-name:dontmove;z-index:0}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;z-index:10}.slidedown.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slidedown.out.reverse{-webkit-transform:translateY(-100%);z-index:10;-webkit-animation-name:slideouttotop}@-webkit-keyframes slideinfromright{from{-webkit-transform:translateX(100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translateX(-100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(100%)}}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{z-index:0;-webkit-animation-name:fadeout}.fade.in{opacity:1;z-index:10;-webkit-animation-name:fadein}.viewport-flip{-webkit-perspective:1000;position:absolute}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.flip{-webkit-animation-duration:.65s;-webkit-backface-visibility:hidden;-webkit-transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-180deg) scale(.8);-webkit-animation-name:flipouttoleft}.flip.in{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromleft}.flip.out.reverse{-webkit-transform:rotateY(180deg) scale(.8);-webkit-animation-name:flipouttoright}.flip.in.reverse{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromright}@-webkit-keyframes flipinfromright{from{-webkit-transform:rotateY(-180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipinfromleft{from{-webkit-transform:rotateY(180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(-180deg) scale(.8)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(180deg) scale(.8)}}@-webkit-keyframes dontmove{from{opacity:1}to{opacity:1}}.pop{-webkit-transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);opacity:1;-webkit-animation-name:popin;z-index:10}.pop.in.reverse{z-index:0;-webkit-animation-name:dontmove}.pop.out.reverse{-webkit-transform:scale(.2);opacity:0;-webkit-animation-name:popout;z-index:10}@-webkit-keyframes popin{from{-webkit-transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.2);opacity:0}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px}.ui-grid-solo .ui-block-a{width:100%;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:25%}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:20%}.ui-grid-d .ui-block-a{clear:left}.ui-header,.ui-footer,.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{position:absolute;overflow:hidden;width:100%;border-left-width:0;border-right-width:0}.ui-header-fixed,.ui-footer-fixed{z-index:1000;-webkit-transform:translateZ(0)}.ui-footer-duplicate,.ui-page-fullscreen .ui-fixed-inline{display:none}.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{opacity:.9}.ui-navbar{overflow:hidden}.ui-navbar ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0}.ui-navbar-collapsed ul{float:left;width:75%;margin-right:-2px}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%}.ui-navbar li.ui-navbar-truncate{position:absolute;left:-9999px;top:-9999px}.ui-navbar li .ui-btn,.ui-navbar .ui-navbar-toggle .ui-btn{display:block;font-size:12px;text-align:center;margin:0;border-right-width:0}.ui-navbar li .ui-btn{margin-right:-1px}.ui-navbar li .ui-btn:last-child{margin-right:0}.ui-header .ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0}.ui-navbar .ui-btn-inner{padding-left:2px;padding-right:2px}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner{padding-top:.8em;padding-bottom:.9em}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px}.ui-navbar-expanded .ui-btn-inner{padding-left:5px;padding-right:5px}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px 15px;text-align:center}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px 5px 45px;text-align:center}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px}.ui-navbar-expanded li .ui-btn .ui-btn-inner{min-height:2.5em}.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 5px;padding:0}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar .ui-btn{display:inline-block;font-size:13px;margin:0}.ui-btn-inline{display:inline-block}.ui-btn-inner{padding:.6em 25px;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-bar .ui-btn-inner{padding:.4em 8px .5em}.ui-btn-icon-notext{width:24px;height:24px}.ui-btn-icon-notext .ui-btn-inner{padding:2px 1px 2px 3px}.ui-btn-text{position:relative;z-index:1}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-9999px}.ui-btn-icon-left .ui-btn-inner{padding-left:33px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-bar .ui-btn-icon-left .ui-btn-inner{padding-left:27px}.ui-btn-icon-right .ui-btn-inner{padding-right:33px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-bar .ui-btn-icon-right .ui-btn-inner{padding-right:27px}.ui-btn-icon-top .ui-btn-inner{padding-top:33px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-bar .ui-btn-icon-top .ui-btn-inner{padding-top:27px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:33px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner,.ui-bar .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:27px}.ui-btn-icon-notext .ui-icon{display:block;z-index:0}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-icon,.ui-btn-icon-bottom .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-btn-icon-top .ui-icon{top:10px}.ui-btn-icon-bottom .ui-icon{bottom:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-bar .ui-btn-icon-left .ui-icon{left:4px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-bar .ui-btn-icon-right .ui-icon{right:4px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-bar .ui-btn-icon-top .ui-icon{top:4px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-bar .ui-btn-icon-bottom .ui-icon{bottom:4px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:.1;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=.0001);font-size:1px;border:0;line-height:999px}.ui-collapsible{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative}.ui-collapsible-heading a{text-align:left;margin:0}.ui-collapsible-heading a .ui-btn-inner{padding-left:40px}.ui-collapsible-heading a span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading a span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -8px;padding:10px 16px;border-top:0;background-image:none;font-weight:normal}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0 1em}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em}.ui-controlgroup-controls{display:block;width:100%}.ui-controlgroup li{list-style:none}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-controls label.ui-select{position:absolute;left:-9999px}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-select{display:inline-block;margin:0 -5px 0 0}.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{float:left;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}@media all and (min-width:450px){.ui-field-contain .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-controlgroup-controls{width:60%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}}.ui-dialog{min-height:480px}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{max-width:500px;margin:10% auto 15px auto;width:85%;position:relative}.ui-dialog .ui-header,.ui-dialog .ui-footer{padding:0 15px;z-index:10}.ui-dialog .ui-content{padding:15px}.ui-dialog .ui-content,.ui-dialog .ui-footer{margin-top:-15px}.ui-checkbox,.ui-radio{position:relative;margin:.2em 0 .5em;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;z-index:2}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-icon,.ui-radio .ui-icon{top:1.1em}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain{padding:1.5em 0;margin:0;border-bottom-width:1px;overflow:visible}.ui-field-contain:first-child{border-top-width:0}@media all and (min-width:450px){.ui-field-contain{border-width:0;padding:0;margin:1em 0}}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{overflow:hidden}.ui-select .ui-btn{opacity:1}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:button;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;opacity:0;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);z-index:2}.ui-select .ui-disabled{opacity:.3}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn select.ui-select-nativeonly{opacity:1;text-indent:0}.ui-select .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{position:absolute;padding:0;z-index:1100!important;width:80%;max-width:350px;padding:6px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-9999px;left:-9999px}.ui-selectmenu-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.ui-selectmenu .ui-header .ui-title{margin:.6em 46px .8em}@media all and (min-width:450px){.ui-field-contain label.ui-select{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-select{width:60%;display:inline-block}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:16px;display:block;width:97%}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{padding:0 30px;background-image:none;position:relative}.ui-icon-searchfield:after{position:absolute;left:7px;top:50%;margin-top:-9px;content:"";width:18px;height:18px;opacity:.5}.ui-input-search input.ui-input-text{border:0;width:98%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-13px}.ui-input-search .ui-input-clear-hidden{display:none}@media all and (min-width:450px){.ui-field-contain label.ui-input-text{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search{width:60%;display:inline-block}.ui-field-contain .ui-input-search{width:50%}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search{padding:.4em;width:97%}.ui-input-search input.ui-input-text{width:98%}}.ui-listview{margin:0;counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-content .ui-listview-inset{margin:1em 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold}.ui-li-divider{counter-reset:listnumbering}ol.ui-listview .ui-link-inherit:before,ol.ui-listview .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:normal;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li:last-child,.ui-li.ui-field-contain:last-child{border-bottom-width:1px}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 15px .7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:60px;padding-left:100px}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-count{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:30px}.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow.ui-li-has-count{padding-right:75px}.ui-li-has-count .ui-btn-text{padding-right:15px}.ui-li-heading{font-size:16px;font-weight:bold;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:normal;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-thumb,.ui-listview .ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-listview .ui-li-icon{max-height:40px;max-width:40px;left:10px;top:.9em}.ui-li-thumb,.ui-listview .ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}@media all and (min-width:480px){.ui-li-aside{width:45%}}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:95px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:38px}.ui-li-divider .ui-li-count,.ui-li-static .ui-li-count{right:10px}.ui-li-has-alt .ui-li-count{right:55px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-11px 0 0 0;border-bottom-width:1px;z-index:-1}.ui-li-link-alt .ui-btn-inner{padding:0;height:100%;position:absolute;width:100%;top:0;left:0}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-listview-filter-inset{margin:-15px -5px -15px -5px;background:transparent}.ui-li.ui-screen-hidden{display:none}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}input.ui-slider-input,.ui-field-contain input.ui-slider-input{display:inline-block;width:50px}select.ui-slider-switch{display:none}div.ui-slider{position:relative;display:inline-block;overflow:visible;height:15px;padding:0;margin:0 2% 0 20px;top:4px;width:60%}div.ui-slider-switch{width:99.8%}a.ui-slider-handle{position:absolute;z-index:10;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px}a.ui-slider-handle .ui-btn-inner{padding-left:0;padding-right:0}@media all and (min-width:480px){.ui-field-contain label.ui-slider{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain div.ui-slider{width:43%}}div.ui-slider-switch{height:32px;overflow:hidden;margin-left:0}div.ui-slider-inneroffset{margin-left:50%;position:absolute;top:1px;height:100%;width:50%}a.ui-slider-handle-snapping{-webkit-transition:left 70ms linear}div.ui-slider-labelbg{position:absolute;top:0;margin:0;border-width:0}div.ui-slider-switch div.ui-slider-labelbg-a{width:60%;height:100%;left:0}div.ui-slider-switch div.ui-slider-labelbg-b{width:60%;height:100%;right:0}.ui-slider-switch-a div.ui-slider-labelbg-a,.ui-slider-switch-b div.ui-slider-labelbg-b{z-index:-1}.ui-slider-switch-a div.ui-slider-labelbg-b,.ui-slider-switch-b div.ui-slider-labelbg-a{z-index:0}div.ui-slider-switch a.ui-slider-handle{z-index:20;width:101%;height:32px;margin-top:-18px;margin-left:-101%}span.ui-slider-label{width:100%;position:absolute;height:32px;font-size:16px;text-align:center;line-height:2;background:0;border-color:transparent}span.ui-slider-label-a{left:-100%;margin-right:-1px}span.ui-slider-label-b{right:-100%;margin-left:-1px}
\ No newline at end of file
diff --git a/res/Map/css/navi.css b/res/Map/css/navi.css
new file mode 100644 (file)
index 0000000..6fe9989
--- /dev/null
@@ -0,0 +1,29 @@
+/*\r
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.\r
+ *\r
+ * This program is licensed under the terms and conditions of the \r
+ * Apache License, version 2.0.  The full text of the Apache License is at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ */\r
+\r
+html,body{\r
+       height: 100% ;\r
+}\r
+\r
+.base {\r
+       width: 100%;\r
+       height: 50%;\r
+}\r
+\r
+.map_area {\r
+       float: center;\r
+       width: 100%;\r
+       height: 480px;\r
+}\r
+\r
+#map_canvas {\r
+       float: center;\r
+       width: 100%;\r
+       height: 700px;\r
+}\r
diff --git a/res/Map/js/nativeapp_accessor.js b/res/Map/js/nativeapp_accessor.js
new file mode 100644 (file)
index 0000000..0fb8942
--- /dev/null
@@ -0,0 +1,186 @@
+/*\r
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.\r
+ *\r
+ * This program is licensed under the terms and conditions of the \r
+ * Apache License, version 2.0.  The full text of the Apache License is at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ */\r
+\r
+/**\r
+ *     Navigation Application(sample navi) Accessor Class\r
+ *\r
+ */\r
+var CarInfo = function(lat_val, lon_val) {\r
+    this.lat_val = lat_val;\r
+    this.lon_val = lon_val;\r
+}\r
+\r
+var NativeAppAccessor = function() {\r
+       var _socket;                                                                                            // WebSocket\r
+       \r
+       /**\r
+        *      Connection WebSocket\r
+        *\r
+        */\r
+       this.connectWebSocket = function() {\r
+               if ( navigator.userAgent.indexOf('Firefox') != -1 ) {\r
+                       _socket = new MozWebSocket('ws://' + IP_ADDR + ':' + WEBSOCKET_PORT + '/');\r
+               }\r
+               else {\r
+                       _socket = new WebSocket('ws://' + IP_ADDR + ':' + WEBSOCKET_PORT + '/', 'http-only');\r
+               }\r
+               \r
+               // socket event\r
+        _socket.onopen = function() {\r
+            _socket.send('OPEN ' + EDJE_PATH + EDJE_CONF_NAME);\r
+        };\r
+\r
+        _socket.onmessage = function(e) { recvMessage(e); };\r
+               _socket.onerror = function(e) { };\r
+               _socket.onclose = function() { };\r
+       }\r
+\r
+       /**\r
+        *      Disconnection WebSocket\r
+        *\r
+        */\r
+       this.disconnectWebSocket = function() {\r
+               if ( _socket ) {\r
+                       _socket.send('Close_Socket');\r
+                       _socket.close();\r
+               }\r
+       }\r
+\r
+       /**\r
+        * Request Navigation Start\r
+        */\r
+       this.sendReqNaviStart = function() {\r
+               if (_socket) {\r
+                       $('#address').text('Send Req Navi Start.');\r
+                       _socket.send('CHG SEQ REQ_NAV');\r
+               }\r
+       }\r
+\r
+       /**\r
+        * Request Navigation End\r
+        */\r
+       this.sendReqNaviEnd = function() {\r
+               if (_socket) {\r
+                       $('#address').text('Send Req Navi End.');\r
+                       _socket.send('CHG SEQ END_NAV');\r
+               }\r
+       }\r
+\r
+       /**\r
+        * Send Route\r
+        */\r
+       this.sendRoute = function( routeStr ) {\r
+               if( _socket ) {\r
+                       _socket.send( routeStr );\r
+               }\r
+       }\r
+\r
+    /**\r
+     *  Receive Message\r
+     *\r
+     *  @param  event   Receive Event\r
+     *\r
+     */\r
+    function recvMessage(event) {\r
+        var message = event.data;\r
+        var info;\r
+\r
+        var messageType = getMessageType(message);\r
+        if ( messageType == MSG_TYPE.CHG ) {\r
+            // type is carinfo change message\r
+            info = getCarInfo(message);\r
+            if ( info ) {\r
+                $(document).trigger('recvCarInfo', info);\r
+            }\r
+        }\r
+        else\r
+        {\r
+            $(document).trigger('recvSeqNxt', message);\r
+        }\r
+    }\r
+\r
+    /**\r
+     *  get message type\r
+     *\r
+     *  @param  message     Receive message\r
+     *\r
+     *  @return message kind (MSG_TYPE)\r
+     *\r
+     */\r
+    function getMessageType(message) {\r
+        var cmd = message.slice(0, 7);\r
+        var type;\r
+\r
+        if ( cmd == 'CHG VAL') {\r
+            type = MSG_TYPE.CHG;\r
+        } else if (cmd == 'CHG SEQ') {\r
+            type = MSG_TYPE.SEQ;\r
+        } else {\r
+            type = MSG_TYPE.ERR;\r
+        }\r
+\r
+        return type;\r
+    }\r
+\r
+    /**\r
+     *  Get CarInfo\r
+     *\r
+     *  @param  message     Receive message\r
+     *\r
+     *  @return CarInfo data\r
+     *\r
+     */\r
+    function getCarInfo(message) {\r
+        var tmp = message.slice(17);\r
+        var tmp_info;\r
+        var info;\r
+        var lat_index;\r
+        var lon_index;\r
+\r
+        lat_index = tmp.indexOf(KEY_LAT);\r
+        lon_index = tmp.indexOf(KEY_LON);\r
+\r
+        if ((lat_index != -1) && (lon_index != -1) ){\r
+            info = new CarInfo();\r
+\r
+            // Latitude\r
+            tmp_info = tmp.slice(lat_index + KEY_LAT.length + 1, lon_index);\r
+            info.lat_val =  parseFloat(tmp_info);\r
+\r
+            // Longitude\r
+            tmp_info = tmp.slice(lon_index + KEY_LON.length + 1);\r
+            info.lon_val =  parseFloat(tmp_info);\r
+        }\r
+\r
+        return info;\r
+    }\r
+\r
+    /**\r
+     * Request DIST ONSCREEN\r
+     */\r
+    this.sendReqDistOnScreen = function() {\r
+        if (_socket) {\r
+            $('#address').text("SEND REQ DIST OnScreen.");\r
+            try {\r
+                _socket.send('OPEN ' + EDJE_PATH + EDJE_DIST_NAME);\r
+            } catch (e) {\r
+                $('#address').text("SEND REQ DIST OnScreen Error. :" + e);\r
+            }\r
+        }\r
+    }\r
+    /**\r
+     * Request CLOSE ONSCREEN\r
+     */\r
+    this.sendReqCloseOnScreen = function() {\r
+        if (_socket) {\r
+            $('#address').text("SEND REQ Close OnScreen.");\r
+            _socket.send('CLOSE');\r
+        }\r
+    }\r
+}\r
diff --git a/res/Map/js/navi.js b/res/Map/js/navi.js
new file mode 100644 (file)
index 0000000..e03be1d
--- /dev/null
@@ -0,0 +1,269 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the 
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+
+/**
+ * Navigation Map Class
+ */
+
+var Navigation = function() {
+       var _myLatLng;                                                                                  // Current Location
+       var _lat = TMP_LAT;                                                                             // Current Latitude
+       var _lng = TMP_LON;                                                                             // Current Longitude
+       var _dir;                                                                                               // Current Direction
+       var _map;                                                                                               // map
+       var _dirDisplay;                                                                                // DirectionsRenderer Object
+       var _dirService;                                                                                // DirectionsService Object
+       var _carMarker;                                                                                 // Current Location Marker
+       var _nativeAccessor;                                                                    // WebSocket accessor (samplenavi)
+       var _seqnum = SEQUENCE_MODE.START;                                              // Sequence
+       var _routeStr = '';                                                                             // Route Info
+       
+       /*
+        *      initialize
+        */
+       this.initialize = function() {
+               $('#address').text('For samplenaviConnection');
+
+               // event bind
+               $(document).bind('recvSeqNxt', function(event, data) {
+                       recvSeqNxt(data);
+               });
+               $(document).bind('recvCarInfo', function(event, data) {
+                       recvCarinfo(data);
+               });
+               // Initialize Location
+               _myLatLng = new google.maps.LatLng(_lat, _lng);
+
+               // MAP create
+               var mapOptions = {
+                       zoom: DEFAULT_ZOOM,                                                                     // zoom value
+                       mapTypeId: google.maps.MapTypeId.ROADMAP,                       // MAP TYPE
+                       center: _myLatLng                                                                       // Initial Position
+               };
+                       
+               _map = new google.maps.Map($('#map_canvas').get(0), mapOptions);
+               
+               // Create current position marker
+               _carMarker = new google.maps.Marker({
+                       map: _map,
+                       position: _myLatLng,
+                       zIndex: 3
+               });
+               
+               // Set DirectionRendererOption
+               var rendererOptions = {
+                       draggable: false,
+                       preserveViewport:true
+               };
+               
+               _dirDisplay = new google.maps.DirectionsRenderer(rendererOptions);
+               _dirDisplay.setMap(_map);
+               _dirDisplay.setOptions( {suppressMarkers: true} );              // Hide markers
+               _dirService = new google.maps.DirectionsService();
+               
+               // Create WebSocket Accessor(samplenavi)
+               _nativeAccessor = new NativeAppAccessor();
+               _nativeAccessor.connectWebSocket();
+
+               // Request CONF ONSCREEN
+               _seqnum = SEQUENCE_MODE.CONF;
+       }
+
+       /**
+        *      finalize
+        *
+        */
+       this.finalize = function() {
+               _nativeAccessor.disconnectWebSocket();
+       }
+
+       /**
+        *      Move Current Location
+        *
+        */
+       function changeLatLng() {
+               _myLatLng = new google.maps.LatLng(_lat, _lng);
+               _map.panTo(_myLatLng);
+               
+               // Move Marker
+               _carMarker.setPosition(_myLatLng);
+       }
+
+       /**
+        *      Set Route
+        */
+       function setRoute() {
+               if (SHOWING_ROUTE == 1) {
+                       setRoute1();
+               } else if (SHOWING_ROUTE == 2) {
+                       setRoute2();
+               } else if (SHOWING_ROUTE == 3) {
+                       setRoute3();
+               }
+       }
+
+       /**
+        *      Set Route(Route 1)
+        *
+        */
+       function setRoute1() {
+               // Local variable
+               var startStr = String(START_LAT) + ',' + String(START_LNG);
+               var goalStr = String(GOAL_LAT) + ',' + String(GOAL_LNG);
+               
+               // Route request
+               var request = {
+                               origin: startStr,
+                               destination: goalStr,
+                               waypoints: [
+                                       ],
+                               travelMode: google.maps.DirectionsTravelMode.DRIVING,   // Set DrivingMode(Car)
+                               unitSystem: google.maps.DirectionsUnitSystem.METRIC,    // Set Unit
+                               optimizeWaypoints: true,                                                                // optimize route
+                               avoidHighways: true,                                                                    // Avoid highways
+                               avoidTolls: true                                                                                // Avoid tall road
+               };
+               
+               _dirService.route(request, function(response, status) {
+                       if (status == google.maps.DirectionsStatus.OK) {
+                               _dirDisplay.setDirections(response);
+
+                               _routeStr = "<route>";
+                               
+                               // Set route info
+                               for( var i = 0; i < (response.routes[0].overview_path.length); i++ ) {
+                                       var lat = response.routes[0].overview_path[i].lat();
+                                       var lng = response.routes[0].overview_path[i].lng();
+                                       _routeStr += String( lng ) + ',' + String( lat ) + "<BR>";
+                               }
+                               _routeStr += "</route>";
+                               
+                               // Send route
+                               _nativeAccessor.sendRoute( _routeStr );
+                       }
+                       else {
+                               alert('google maps error:' + status);
+                       }
+               })
+       }
+       
+       /**
+        *      Set Route(Route 2)
+        *
+        */
+       function setRoute2() {
+               // Route request
+               var request = {
+                               origin: "35.47945,139.40026",
+                               destination: "35.61689,139.44791",
+                               waypoints: [
+                                       { location: "35.534845,139.437477" }
+                                       ],
+                               travelMode: google.maps.DirectionsTravelMode.DRIVING,   // Set DrivingMode(Car)
+                               unitSystem: google.maps.DirectionsUnitSystem.METRIC,    // Set Unit
+                               optimizeWaypoints: false,                                                               // optimize route
+                               avoidHighways: true,                                                                    // Avoid highways
+                               avoidTolls: true                                                                                // Avoid tall road
+               };
+               
+               _dirService.route(request, function(response, status) {
+                       if (status == google.maps.DirectionsStatus.OK) {
+                               _dirDisplay.setDirections(response);
+                               _routeStr = "<route>";
+                               
+                               // Set route info
+                               for( var i = 0; i < (response[0].overview_path.length); i++ ) {
+                                       var lat = response[0].overview_path[i].lat();
+                                       var lng = response[0].overview_path[i].lng();
+                                       _routeStr += String( lng ) + ',' + String( lat ) + "<BR>";
+                               }
+                               _routeStr += "</route>";
+                               
+                               // Send route
+                               _nativeAccessor.sendRoute( _routeStr );
+                       }
+                       else {
+                               alert('google maps error:' + status);
+                       }
+               })
+       }
+       
+       /**
+        *      Set Route(Route 3)
+        *
+        */
+       function setRoute3() {
+               // Route request
+               var request = {
+                       origin: "35.45153,139.2125",
+                       destination: "35.43037,139.21579",
+                               waypoints: [
+                                       ],
+                               travelMode: google.maps.DirectionsTravelMode.DRIVING,   // Set DrivingMode(Car)
+                               unitSystem: google.maps.DirectionsUnitSystem.METRIC,    // Set Unit
+                               optimizeWaypoints: false,                                                               // optimize route
+                               avoidHighways: true,                                                                    // Avoid highways
+                               avoidTolls: true                                                                                // Avoid tall road
+               };
+               
+               _dirService.route(request, function(response, status) {
+                       if (status == google.maps.DirectionsStatus.OK) {
+                               _dirDisplay.setDirections(response);
+                               _routeStr = "<route>";
+                               
+                               // Set root info
+                               for( var i = 0; i < (response[0].overview_path.length); i++ ) {
+                                       var lat = response[0].overview_path[i].lat();
+                                       var lng = response[0].overview_path[i].lng();
+                                       _routeStr += String( lng ) + ',' + String( lat ) + "<BR>";
+                               }
+                               _routeStr += "</route>";
+                               
+                               // Send route
+                               _nativeAccessor.sendRoute( _routeStr );
+                       }
+                       else {
+                               alert('google maps error:' + status);
+                       }
+               })
+       }
+
+       /**
+        *      Receive CarInfo
+        *
+        *      @param  data    CarInfo data
+        *
+        */
+       function recvCarinfo(data) {
+        _lat = data.lat_val;
+        _lng = data.lon_val;
+               changeLatLng();
+       }
+
+       /**
+        *      Receive Change Sequence
+        */
+       function recvSeqNxt(data) {
+               if (data == 'TOUCH ' + EDJE_PATH + EDJE_CONF_NAME + ' nai_01' ) {
+                       _nativeAccessor.sendReqDistOnScreen();
+                       _seqnum = SEQUENCE_MODE.DIST;
+               } else if (data == 'TOUCH ' + EDJE_PATH + EDJE_DIST_NAME + ' nai_12') {
+                       _nativeAccessor.sendReqNaviStart();
+            _nativeAccessor.sendReqCloseOnScreen();
+                       _seqnum = SEQUENCE_MODE.NAVI;
+
+                       setRoute();
+               } else if (data == 'RESULT SUCCESS') {
+                       $('#address').text("OnScreen Request Success.");
+               } else if (data == 'RESULT FAILED') {
+                       $('#address').text("OnScreen Request Failed.");
+               }
+       }
+}
+
diff --git a/res/Map/js/navi_defines.js b/res/Map/js/navi_defines.js
new file mode 100644 (file)
index 0000000..c9326af
--- /dev/null
@@ -0,0 +1,44 @@
+/*\r
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.\r
+ *\r
+ * This program is licensed under the terms and conditions of the \r
+ * Apache License, version 2.0.  The full text of the Apache License is at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ */\r
+\r
+/**\r
+ *     Defines\r
+ */\r
+\r
+const MSG_TYPE = \r
+{\r
+       CHG : 0,                                                                                // Change Message\r
+       SEQ : 1,                                                                                // Sequence Message\r
+       ERR : 2,                                                                                // Error Message\r
+       \r
+};\r
+\r
+const SEQUENCE_MODE =                                                          // Sequence\r
+{\r
+       START : 0,                                                                              // Start Application\r
+       CONF : 1,                                                                               // Display Conf.\r
+       DIST : 2,                                                                               // Display Dist.\r
+       NAVI : 3,                                                                               // Run Navigation\r
+       NAVI_END : 4                                                                    // End Navigation(no use)\r
+};\r
+\r
+const SHOWING_ROUTE                    = 1;                                    // Current Route number\r
+const TMP_LAT                          = 35.47945;                             // Initialize Latitude\r
+const TMP_LON                          = 139.40026;                    // Initialize Longitude\r
+const DEFAULT_ZOOM                     = 17;                                   // Zoom value for Map\r
+const EDJE_PATH                                = '/opt/apps/org.tizen.ico.app-samplenavi/data';\r
+const EDJE_CONF_NAME           = '/samplenavi_conf.edj';\r
+const EDJE_DIST_NAME           = '/samplenavi_conf_dist.edj';\r
+const APP_NO                           = '300';\r
+const IP_ADDR                          = '127.0.0.1';\r
+const WEBSOCKET_PORT           = '50414';\r
+\r
+const KEY_LAT = "LAT";\r
+const KEY_LON = "LON";\r
+\r
diff --git a/res/Map/js/navi_route.js b/res/Map/js/navi_route.js
new file mode 100644 (file)
index 0000000..c2ede15
--- /dev/null
@@ -0,0 +1,13 @@
+/*\r
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.\r
+ *\r
+ * This program is licensed under the terms and conditions of the \r
+ * Apache License, version 2.0.  The full text of the Apache License is at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ */\r
+\r
+const START_LAT = 35.47945;\r
+const START_LNG = 139.40026;\r
+const GOAL_LAT  = 35.49746;\r
+const GOAL_LNG  = 139.40504;\r
diff --git a/res/Map/lib/jquery-1.6.4.min.js b/res/Map/lib/jquery-1.6.4.min.js
new file mode 100644 (file)
index 0000000..628ed9b
--- /dev/null
@@ -0,0 +1,4 @@
+/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */
+(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bW(a,c,d,e,"*",g));return l}function bV(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function by(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bt:bu;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(w,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+"With"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete 
+t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?D:C):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="submit"||c==="image")&&f(b).closest("form").length&&J("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&J("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,"input")?a.type:"",c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=w.exec(h),k="",j&&(k=j[0],h=h.replace(w,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+M(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\[\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),"not",a)},filter:function(a){return this.pushStack(V(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|object|embed|option|style)/i,bb=/checked\s*(?:[^=]|=\s*.checked.)/i,bc=/\/(java|ecma)script/i,bd=/^\s*<!(?:\[CDATA\[|\-\-)/,be={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!ba.test(a[0])&&(f.support.checkClone||!bb.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean
+(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bk(k[i]);else bk(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bc.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bm=/alpha\([^)]*\)/i,bn=/opacity=([^)]*)/,bo=/([A-Z]|^ms)/g,bp=/^-?\d+(?:px)?$/i,bq=/^-?\d/,br=/^([\-+])=([\-+.\de]+)/,bs={position:"absolute",visibility:"hidden",display:"block"},bt=["Left","Right"],bu=["Top","Bottom"],bv,bw,bx;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bv(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=br.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bv)return bv(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return by(a,b,d);f.swap(a,bs,function(){e=by(a,b,d)});return e}},set:function(a,b){if(!bp.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cr(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cq("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cq("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cr(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cq("show",1),slideUp:cq("hide",1),slideToggle:cq("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return d.step(a)}var d=this,e=f.fx;this.startTime=cn||co(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&f.timers.push(g)&&!cl&&(cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||co(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cs=/^t(?:able|d|h)$/i,ct=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cu(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cs.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
\ No newline at end of file
diff --git a/res/Map/lib/jquery.mobile-1.0.min.js b/res/Map/lib/jquery.mobile-1.0.min.js
new file mode 100644 (file)
index 0000000..0fca54b
--- /dev/null
@@ -0,0 +1,172 @@
+/*! jQuery Mobile v1.0 jquerymobile.com | jquery.org/license */
+(function(a,e){if(a.cleanData){var b=a.cleanData;a.cleanData=function(f){for(var c=0,h;(h=f[c])!=null;c++)a(h).triggerHandler("remove");b(f)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){a(this).triggerHandler("remove")});return d.call(a(this),b,c)})}}a.widget=function(b,c,h){var d=b.split(".")[0],e,b=b.split(".")[1];e=d+"-"+b;if(!h)h=c,c=a.Widget;a.expr[":"][e]=function(c){return!!a.data(c,
+b)};a[d]=a[d]||{};a[d][b]=function(a,b){arguments.length&&this._createWidget(a,b)};c=new c;c.options=a.extend(true,{},c.options);a[d][b].prototype=a.extend(true,c,{namespace:d,widgetName:b,widgetEventPrefix:a[d][b].prototype.widgetEventPrefix||b,widgetBaseClass:e},h);a.widget.bridge(b,a[d][b])};a.widget.bridge=function(b,c){a.fn[b]=function(d){var g=typeof d==="string",i=Array.prototype.slice.call(arguments,1),k=this,d=!g&&i.length?a.extend.apply(null,[true,d].concat(i)):d;if(g&&d.charAt(0)==="_")return k;
+g?this.each(function(){var c=a.data(this,b);if(!c)throw"cannot call methods on "+b+" prior to initialization; attempted to call method '"+d+"'";if(!a.isFunction(c[d]))throw"no such method '"+d+"' for "+b+" widget instance";var g=c[d].apply(c,i);if(g!==c&&g!==e)return k=g,false}):this.each(function(){var e=a.data(this,b);e?e.option(d||{})._init():a.data(this,b,new c(d,this))});return k}};a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)};a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",
+options:{disabled:false},_createWidget:function(b,c){a.data(c,this.widgetName,this);this.element=a(c);this.options=a.extend(true,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){var b={};a.metadata&&(b=a.metadata.get(element)[this.widgetName]);return b},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);
+this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(b,c){var d=b;if(arguments.length===0)return a.extend({},this.options);if(typeof b==="string"){if(c===e)return this.options[b];d={};d[b]=c}this._setOptions(d);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b;a==="disabled"&&
+this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(b,c,d){var e=this.options[b],c=a.Event(c);c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase();d=d||{};if(c.originalEvent)for(var b=a.event.props.length,i;b;)i=a.event.props[--b],c[i]=c.originalEvent[i];this.element.trigger(c,
+d);return!(a.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+(function(a,e){a.widget("mobile.widget",{_createWidget:function(){a.Widget.prototype._createWidget.apply(this,arguments);this._trigger("init")},_getCreateOptions:function(){var b=this.element,d={};a.each(this.options,function(a){var c=b.jqmData(a.replace(/[A-Z]/g,function(a){return"-"+a.toLowerCase()}));c!==e&&(d[a]=c)});return d},enhanceWithin:function(b){var d=a(b).closest(":jqmData(role='page')").data("page"),d=d&&d.keepNativeSelector()||"";a(this.options.initSelector,b).not(d)[this.widgetName]()}})})(jQuery);
+(function(a){a(window);var e=a("html");a.mobile.media=function(){var b={},d=a("<div id='jquery-mediatest'>"),f=a("<body>").append(d);return function(a){if(!(a in b)){var h=document.createElement("style"),g="@media "+a+" { #jquery-mediatest { position:absolute; } }";h.type="text/css";h.styleSheet?h.styleSheet.cssText=g:h.appendChild(document.createTextNode(g));e.prepend(f).prepend(h);b[a]=d.css("position")==="absolute";f.add(h).remove()}return b[a]}}()})(jQuery);
+(function(a,e){function b(a){var b=a.charAt(0).toUpperCase()+a.substr(1),a=(a+" "+c.join(b+" ")+b).split(" "),d;for(d in a)if(f[a[d]]!==e)return true}var d=a("<body>").prependTo("html"),f=d[0].style,c=["Webkit","Moz","O"],h="palmGetResource"in window,g=window.operamini&&{}.toString.call(window.operamini)==="[object OperaMini]",i=window.blackberry;a.mobile.browser={};a.mobile.browser.ie=function(){for(var a=3,b=document.createElement("div"),c=b.all||[];b.innerHTML="<\!--[if gt IE "+ ++a+"]><br><![endif]--\>",
+c[0];);return a>4?a:!a}();a.extend(a.support,{orientation:"orientation"in window&&"onorientationchange"in window,touch:"ontouchend"in document,cssTransitions:"WebKitTransitionEvent"in window,pushState:"pushState"in history&&"replaceState"in history,mediaquery:a.mobile.media("only all"),cssPseudoElement:!!b("content"),touchOverflow:!!b("overflowScrolling"),boxShadow:!!b("boxShadow")&&!i,scrollTop:("pageXOffset"in window||"scrollTop"in document.documentElement||"scrollTop"in d[0])&&!h&&!g,dynamicBaseTag:function(){var b=
+location.protocol+"//"+location.host+location.pathname+"ui-dir/",c=a("head base"),f=null,e="",h;c.length?e=c.attr("href"):c=f=a("<base>",{href:b}).appendTo("head");h=a("<a href='testurl' />").prependTo(d)[0].href;c[0].href=e||location.pathname;f&&f.remove();return h.indexOf(b)===0}()});d.remove();h=function(){var a=window.navigator.userAgent;return a.indexOf("Nokia")>-1&&(a.indexOf("Symbian/3")>-1||a.indexOf("Series60/5")>-1)&&a.indexOf("AppleWebKit")>-1&&a.match(/(BrowserNG|NokiaBrowser)\/7\.[0-3]/)}();
+a.mobile.ajaxBlacklist=window.blackberry&&!window.WebKitPoint||g||h;h&&a(function(){a("head link[rel='stylesheet']").attr("rel","alternate stylesheet").attr("rel","stylesheet")});a.support.boxShadow||a("html").addClass("ui-mobile-nosupport-boxshadow")})(jQuery);
+(function(a,e,b,d){function f(a){for(;a&&typeof a.originalEvent!=="undefined";)a=a.originalEvent;return a}function c(b){for(var c={},f,d;b;){f=a.data(b,n);for(d in f)if(f[d])c[d]=c.hasVirtualBinding=true;b=b.parentNode}return c}function h(){v&&(clearTimeout(v),v=0);v=setTimeout(function(){E=v=0;u.length=0;D=false;y=true},a.vmouse.resetTimerDuration)}function g(b,c,r){var e,h;if(!(h=r&&r[b])){if(r=!r)a:{for(r=c.target;r;){if((h=a.data(r,n))&&(!b||h[b]))break a;r=r.parentNode}r=null}h=r}if(h){e=c;var r=
+e.type,j,g;e=a.Event(e);e.type=b;h=e.originalEvent;j=a.event.props;if(h)for(g=j.length;g;)b=j[--g],e[b]=h[b];if(r.search(/mouse(down|up)|click/)>-1&&!e.which)e.which=1;if(r.search(/^touch/)!==-1&&(b=f(h),r=b.touches,b=b.changedTouches,r=r&&r.length?r[0]:b&&b.length?b[0]:d))for(h=0,len=z.length;h<len;h++)b=z[h],e[b]=r[b];a(c.target).trigger(e)}return e}function i(b){var c=a.data(b.target,A);if(!D&&(!E||E!==c))if(c=g("v"+b.type,b))c.isDefaultPrevented()&&b.preventDefault(),c.isPropagationStopped()&&
+b.stopPropagation(),c.isImmediatePropagationStopped()&&b.stopImmediatePropagation()}function k(b){var d=f(b).touches,e;if(d&&d.length===1&&(e=b.target,d=c(e),d.hasVirtualBinding))E=r++,a.data(e,A,E),v&&(clearTimeout(v),v=0),w=y=false,e=f(b).touches[0],x=e.pageX,t=e.pageY,g("vmouseover",b,d),g("vmousedown",b,d)}function l(a){y||(w||g("vmousecancel",a,c(a.target)),w=true,h())}function o(b){if(!y){var d=f(b).touches[0],r=w,e=a.vmouse.moveDistanceThreshold;w=w||Math.abs(d.pageX-x)>e||Math.abs(d.pageY-
+t)>e;flags=c(b.target);w&&!r&&g("vmousecancel",b,flags);g("vmousemove",b,flags);h()}}function m(a){if(!y){y=true;var b=c(a.target),d;g("vmouseup",a,b);if(!w&&(d=g("vclick",a,b))&&d.isDefaultPrevented())d=f(a).changedTouches[0],u.push({touchID:E,x:d.clientX,y:d.clientY}),D=true;g("vmouseout",a,b);w=false;h()}}function p(b){var b=a.data(b,n),c;if(b)for(c in b)if(b[c])return true;return false}function j(){}function q(b){var c=b.substr(1);return{setup:function(){p(this)||a.data(this,n,{});a.data(this,
+n)[b]=true;s[b]=(s[b]||0)+1;s[b]===1&&B.bind(c,i);a(this).bind(c,j);if(C)s.touchstart=(s.touchstart||0)+1,s.touchstart===1&&B.bind("touchstart",k).bind("touchend",m).bind("touchmove",o).bind("scroll",l)},teardown:function(){--s[b];s[b]||B.unbind(c,i);C&&(--s.touchstart,s.touchstart||B.unbind("touchstart",k).unbind("touchmove",o).unbind("touchend",m).unbind("scroll",l));var d=a(this),f=a.data(this,n);f&&(f[b]=false);d.unbind(c,j);p(this)||d.removeData(n)}}}var n="virtualMouseBindings",A="virtualTouchID",
+e="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),z="clientX clientY pageX pageY screenX screenY".split(" "),s={},v=0,x=0,t=0,w=false,u=[],D=false,y=false,C="addEventListener"in b,B=a(b),r=1,E=0;a.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(var F=0;F<e.length;F++)a.event.special[e[F]]=q(e[F]);C&&b.addEventListener("click",function(b){var c=u.length,d=b.target,f,r,e,h,j;if(c){f=b.clientX;r=b.clientY;threshold=a.vmouse.clickDistanceThreshold;
+for(e=d;e;){for(h=0;h<c;h++)if(j=u[h],e===d&&Math.abs(j.x-f)<threshold&&Math.abs(j.y-r)<threshold||a.data(e,A)===j.touchID){b.preventDefault();b.stopPropagation();return}e=e.parentNode}}},true)})(jQuery,window,document);
+(function(a,e,b){function d(b,c,d){var f=d.type;d.type=c;a.event.handle.call(b,d);d.type=f}a.each("touchstart touchmove touchend orientationchange throttledresize tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(b,c){a.fn[c]=function(a){return a?this.bind(c,a):this.trigger(c)};a.attrFn[c]=true});var f=a.support.touch,c=f?"touchstart":"mousedown",h=f?"touchend":"mouseup",g=f?"touchmove":"mousemove";a.event.special.scrollstart={enabled:true,setup:function(){function b(a,
+e){f=e;d(c,f?"scrollstart":"scrollstop",a)}var c=this,f,e;a(c).bind("touchmove scroll",function(c){a.event.special.scrollstart.enabled&&(f||b(c,true),clearTimeout(e),e=setTimeout(function(){b(c,false)},50))})}};a.event.special.tap={setup:function(){var b=this,c=a(b);c.bind("vmousedown",function(f){function e(){clearTimeout(q)}function h(){e();c.unbind("vclick",g).unbind("vmouseup",e).unbind("vmousecancel",h)}function g(a){h();j==a.target&&d(b,"tap",a)}if(f.which&&f.which!==1)return false;var j=f.target,
+q;c.bind("vmousecancel",h).bind("vmouseup",e).bind("vclick",g);q=setTimeout(function(){d(b,"taphold",a.Event("taphold"))},750)})}};a.event.special.swipe={scrollSupressionThreshold:10,durationThreshold:1E3,horizontalDistanceThreshold:30,verticalDistanceThreshold:75,setup:function(){var d=a(this);d.bind(c,function(c){function f(b){if(m){var c=b.originalEvent.touches?b.originalEvent.touches[0]:b;p={time:(new Date).getTime(),coords:[c.pageX,c.pageY]};Math.abs(m.coords[0]-p.coords[0])>a.event.special.swipe.scrollSupressionThreshold&&
+b.preventDefault()}}var e=c.originalEvent.touches?c.originalEvent.touches[0]:c,m={time:(new Date).getTime(),coords:[e.pageX,e.pageY],origin:a(c.target)},p;d.bind(g,f).one(h,function(){d.unbind(g,f);m&&p&&p.time-m.time<a.event.special.swipe.durationThreshold&&Math.abs(m.coords[0]-p.coords[0])>a.event.special.swipe.horizontalDistanceThreshold&&Math.abs(m.coords[1]-p.coords[1])<a.event.special.swipe.verticalDistanceThreshold&&m.origin.trigger("swipe").trigger(m.coords[0]>p.coords[0]?"swipeleft":"swiperight");
+m=p=b})})}};(function(a,b){function c(){var a=f();a!==e&&(e=a,d.trigger("orientationchange"))}var d=a(b),f,e;a.event.special.orientationchange={setup:function(){if(a.support.orientation&&a.mobile.orientationChangeEnabled)return false;e=f();d.bind("throttledresize",c)},teardown:function(){if(a.support.orientation&&a.mobile.orientationChangeEnabled)return false;d.unbind("throttledresize",c)},add:function(a){var b=a.handler;a.handler=function(a){a.orientation=f();return b.apply(this,arguments)}}};a.event.special.orientationchange.orientation=
+f=function(){var c=true,c=document.documentElement;return(c=a.support.orientation?b.orientation%180==0:c&&c.clientWidth/c.clientHeight<1.1)?"portrait":"landscape"}})(jQuery,e);(function(){a.event.special.throttledresize={setup:function(){a(this).bind("resize",b)},teardown:function(){a(this).unbind("resize",b)}};var b=function(){f=(new Date).getTime();e=f-c;e>=250?(c=f,a(this).trigger("throttledresize")):(d&&clearTimeout(d),d=setTimeout(b,250-e))},c=0,d,f,e})();a.each({scrollstop:"scrollstart",taphold:"tap",
+swipeleft:"swipe",swiperight:"swipe"},function(b,c){a.event.special[b]={setup:function(){a(this).bind(c,a.noop)}}})})(jQuery,this);
+(function(a,e,b){function d(a){a=a||location.href;return"#"+a.replace(/^[^#]*#?(.*)$/,"$1")}var f="hashchange",c=document,h,g=a.event.special,i=c.documentMode,k="on"+f in e&&(i===b||i>7);a.fn[f]=function(a){return a?this.bind(f,a):this.trigger(f)};a.fn[f].delay=50;g[f]=a.extend(g[f],{setup:function(){if(k)return false;a(h.start)},teardown:function(){if(k)return false;a(h.stop)}});h=function(){function h(){var b=d(),c=n(p);if(b!==p)q(p=b,c),a(e).trigger(f);else if(c!==p)location.href=location.href.replace(/#.*/,
+"")+c;i=setTimeout(h,a.fn[f].delay)}var g={},i,p=d(),j=function(a){return a},q=j,n=j;g.start=function(){i||h()};g.stop=function(){i&&clearTimeout(i);i=b};a.browser.msie&&!k&&function(){var b,e;g.start=function(){if(!b)e=(e=a.fn[f].src)&&e+d(),b=a('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){e||q(d());h()}).attr("src",e||"javascript:0").insertAfter("body")[0].contentWindow,c.onpropertychange=function(){try{if(event.propertyName==="title")b.document.title=c.title}catch(a){}}};
+g.stop=j;n=function(){return d(b.location.href)};q=function(d,e){var h=b.document,g=a.fn[f].domain;if(d!==e)h.title=c.title,h.open(),g&&h.write('<script>document.domain="'+g+'"<\/script>'),h.close(),b.location.hash=d}}();return g}()})(jQuery,this);
+(function(a){a.widget("mobile.page",a.mobile.widget,{options:{theme:"c",domCache:false,keepNativeDefault:":jqmData(role='none'), :jqmData(role='nojs')"},_create:function(){this._trigger("beforecreate");this.element.attr("tabindex","0").addClass("ui-page ui-body-"+this.options.theme)},keepNativeSelector:function(){var e=this.options;return e.keepNative&&a.trim(e.keepNative)&&e.keepNative!==e.keepNativeDefault?[e.keepNative,e.keepNativeDefault].join(", "):e.keepNativeDefault}})})(jQuery);
+(function(a,e){var b={};a.extend(a.mobile,{ns:"",subPageUrlKey:"ui-page",activePageClass:"ui-page-active",activeBtnClass:"ui-btn-active",ajaxEnabled:true,hashListeningEnabled:true,linkBindingEnabled:true,defaultPageTransition:"slide",minScrollBack:250,defaultDialogTransition:"pop",loadingMessage:"loading",pageLoadErrorMessage:"Error Loading Page",autoInitializePage:true,pushStateEnabled:true,orientationChangeEnabled:true,gradeA:function(){return a.support.mediaquery||a.mobile.browser.ie&&a.mobile.browser.ie>=
+7},keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91},silentScroll:function(b){if(a.type(b)!=="number")b=a.mobile.defaultHomeScroll;a.event.special.scrollstart.enabled=false;
+setTimeout(function(){e.scrollTo(0,b);a(document).trigger("silentscroll",{x:0,y:b})},20);setTimeout(function(){a.event.special.scrollstart.enabled=true},150)},nsNormalizeDict:b,nsNormalize:function(c){return!c?void 0:b[c]||(b[c]=a.camelCase(a.mobile.ns+c))},getInheritedTheme:function(a,b){for(var d=a[0],f="",e=/ui-(bar|body)-([a-z])\b/,l,o;d;){l=d.className||"";if((o=e.exec(l))&&(f=o[2]))break;d=d.parentNode}return f||b||"a"}});a.fn.jqmData=function(b,d){var f;typeof b!="undefined"&&(f=this.data(b?
+a.mobile.nsNormalize(b):b,d));return f};a.jqmData=function(b,d,f){var e;typeof d!="undefined"&&(e=a.data(b,d?a.mobile.nsNormalize(d):d,f));return e};a.fn.jqmRemoveData=function(b){return this.removeData(a.mobile.nsNormalize(b))};a.jqmRemoveData=function(b,d){return a.removeData(b,a.mobile.nsNormalize(d))};a.fn.removeWithDependents=function(){a.removeWithDependents(this)};a.removeWithDependents=function(b){b=a(b);(b.jqmData("dependents")||a()).remove();b.remove()};a.fn.addDependents=function(b){a.addDependents(a(this),
+b)};a.addDependents=function(b,d){var f=a(b).jqmData("dependents")||a();a(b).jqmData("dependents",a.merge(f,d))};a.fn.getEncodedText=function(){return a("<div/>").text(a(this).text()).html()};var d=a.find,f=/:jqmData\(([^)]*)\)/g;a.find=function(b,e,g,i){b=b.replace(f,"[data-"+(a.mobile.ns||"")+"$1]");return d.call(this,b,e,g,i)};a.extend(a.find,d);a.find.matches=function(b,d){return a.find(b,null,null,d)};a.find.matchesSelector=function(b,d){return a.find(d,null,null,[b]).length>0}})(jQuery,this);
+(function(a,e){function b(a){var b=a.find(".ui-title:eq(0)");b.length?b.focus():a.focus()}function d(b){q&&(!q.closest(".ui-page-active").length||b)&&q.removeClass(a.mobile.activeBtnClass);q=null}function f(){z=false;A.length>0&&a.mobile.changePage.apply(null,A.pop())}function c(c,d,f,e){var g=a.mobile.urlHistory.getActive(),j=a.support.touchOverflow&&a.mobile.touchOverflowEnabled,i=g.lastScroll||(j?0:a.mobile.defaultHomeScroll),g=h();window.scrollTo(0,a.mobile.defaultHomeScroll);d&&d.data("page")._trigger("beforehide",
+null,{nextPage:c});j||c.height(g+i);c.data("page")._trigger("beforeshow",null,{prevPage:d||a("")});a.mobile.hidePageLoadingMsg();j&&i&&(c.addClass("ui-mobile-pre-transition"),b(c),c.is(".ui-native-fixed")?c.find(".ui-content").scrollTop(i):c.scrollTop(i));f=(a.mobile.transitionHandlers[f||"none"]||a.mobile.defaultTransitionHandler)(f,e,c,d);f.done(function(){j||(c.height(""),b(c));j||a.mobile.silentScroll(i);d&&(j||d.height(""),d.data("page")._trigger("hide",null,{nextPage:c}));c.data("page")._trigger("show",
+null,{prevPage:d||a("")})});return f}function h(){var b=a.event.special.orientationchange.orientation()==="portrait",c=b?screen.availHeight:screen.availWidth,b=Math.max(b?480:320,a(window).height());return Math.min(c,b)}function g(){(!a.support.touchOverflow||!a.mobile.touchOverflowEnabled)&&a("."+a.mobile.activePageClass).css("min-height",h())}function i(b,c){c&&b.attr("data-"+a.mobile.ns+"role",c);b.page()}function k(a){for(;a;){if(typeof a.nodeName==="string"&&a.nodeName.toLowerCase()=="a")break;
+a=a.parentNode}return a}function l(b){var b=a(b).closest(".ui-page").jqmData("url"),c=t.hrefNoHash;if(!b||!j.isPath(b))b=c;return j.makeUrlAbsolute(b,c)}var o=a(window),m=a("html"),p=a("head"),j={urlParseRE:/^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,parseUrl:function(b){if(a.type(b)==="object")return b;b=j.urlParseRE.exec(b||"")||[];return{href:b[0]||"",hrefNoHash:b[1]||
+"",hrefNoSearch:b[2]||"",domain:b[3]||"",protocol:b[4]||"",doubleSlash:b[5]||"",authority:b[6]||"",username:b[8]||"",password:b[9]||"",host:b[10]||"",hostname:b[11]||"",port:b[12]||"",pathname:b[13]||"",directory:b[14]||"",filename:b[15]||"",search:b[16]||"",hash:b[17]||""}},makePathAbsolute:function(a,b){if(a&&a.charAt(0)==="/")return a;for(var a=a||"",c=(b=b?b.replace(/^\/|(\/[^\/]*|[^\/]+)$/g,""):"")?b.split("/"):[],d=a.split("/"),f=0;f<d.length;f++){var e=d[f];switch(e){case ".":break;case "..":c.length&&
+c.pop();break;default:c.push(e)}}return"/"+c.join("/")},isSameDomain:function(a,b){return j.parseUrl(a).domain===j.parseUrl(b).domain},isRelativeUrl:function(a){return j.parseUrl(a).protocol===""},isAbsoluteUrl:function(a){return j.parseUrl(a).protocol!==""},makeUrlAbsolute:function(a,b){if(!j.isRelativeUrl(a))return a;var c=j.parseUrl(a),d=j.parseUrl(b),f=c.protocol||d.protocol,e=c.protocol?c.doubleSlash:c.doubleSlash||d.doubleSlash,h=c.authority||d.authority,g=c.pathname!=="",i=j.makePathAbsolute(c.pathname||
+d.filename,d.pathname);return f+e+h+i+(c.search||!g&&d.search||"")+c.hash},addSearchParams:function(b,c){var d=j.parseUrl(b),f=typeof c==="object"?a.param(c):c,e=d.search||"?";return d.hrefNoSearch+e+(e.charAt(e.length-1)!=="?"?"&":"")+f+(d.hash||"")},convertUrlToDataUrl:function(a){var b=j.parseUrl(a);if(j.isEmbeddedPage(b))return b.hash.split(s)[0].replace(/^#/,"");else if(j.isSameDomain(b,t))return b.hrefNoHash.replace(t.domain,"");return a},get:function(a){if(a===e)a=location.hash;return j.stripHash(a).replace(/[^\/]*\.[^\/*]+$/,
+"")},getFilePath:function(b){var c="&"+a.mobile.subPageUrlKey;return b&&b.split(c)[0].split(s)[0]},set:function(a){location.hash=a},isPath:function(a){return/\//.test(a)},clean:function(a){return a.replace(t.domain,"")},stripHash:function(a){return a.replace(/^#/,"")},cleanHash:function(a){return j.stripHash(a.replace(/\?.*$/,"").replace(s,""))},isExternal:function(a){a=j.parseUrl(a);return a.protocol&&a.domain!==x.domain?true:false},hasProtocol:function(a){return/^(:?\w+:)/.test(a)},isFirstPageUrl:function(b){var b=
+j.parseUrl(j.makeUrlAbsolute(b,t)),c=a.mobile.firstPage,c=c&&c[0]?c[0].id:e;return(b.hrefNoHash===x.hrefNoHash||w&&b.hrefNoHash===t.hrefNoHash)&&(!b.hash||b.hash==="#"||c&&b.hash.replace(/^#/,"")===c)},isEmbeddedPage:function(a){a=j.parseUrl(a);return a.protocol!==""?a.hash&&(a.hrefNoHash===x.hrefNoHash||w&&a.hrefNoHash===t.hrefNoHash):/^#/.test(a.href)}},q=null,n={stack:[],activeIndex:0,getActive:function(){return n.stack[n.activeIndex]},getPrev:function(){return n.stack[n.activeIndex-1]},getNext:function(){return n.stack[n.activeIndex+
+1]},addNew:function(a,b,c,d,f){n.getNext()&&n.clearForward();n.stack.push({url:a,transition:b,title:c,pageUrl:d,role:f});n.activeIndex=n.stack.length-1},clearForward:function(){n.stack=n.stack.slice(0,n.activeIndex+1)},directHashChange:function(b){var c,d,f;this.getActive();a.each(n.stack,function(a,e){b.currentUrl===e.url&&(c=a<n.activeIndex,d=!c,f=a)});this.activeIndex=f!==e?f:this.activeIndex;c?(b.either||b.isBack)(true):d&&(b.either||b.isForward)(false)},ignoreNextHashChange:false},A=[],z=false,
+s="&ui-state=dialog",v=p.children("base"),x=j.parseUrl(location.href),t=v.length?j.parseUrl(j.makeUrlAbsolute(v.attr("href"),x.href)):x,w=x.hrefNoHash!==t.hrefNoHash,u=a.support.dynamicBaseTag?{element:v.length?v:a("<base>",{href:t.hrefNoHash}).prependTo(p),set:function(a){u.element.attr("href",j.makeUrlAbsolute(a,t))},reset:function(){u.element.attr("href",t.hrefNoHash)}}:e,D=true,y,C,B;y=function(){var b=o;a.support.touchOverflow&&a.mobile.touchOverflowEnabled&&(b=a(".ui-page-active"),b=b.is(".ui-native-fixed")?
+b.find(".ui-content"):b);return b};C=function(b){if(D){var c=a.mobile.urlHistory.getActive();if(c)b=b&&b.scrollTop(),c.lastScroll=b<a.mobile.minScrollBack?a.mobile.defaultHomeScroll:b}};B=function(){setTimeout(C,100,a(this))};o.bind(a.support.pushState?"popstate":"hashchange",function(){D=false});o.one(a.support.pushState?"popstate":"hashchange",function(){D=true});o.one("pagecontainercreate",function(){a.mobile.pageContainer.bind("pagechange",function(){var a=y();D=true;a.unbind("scrollstop",B);
+a.bind("scrollstop",B)})});y().bind("scrollstop",B);a.mobile.getScreenHeight=h;a.fn.animationComplete=function(b){return a.support.cssTransitions?a(this).one("webkitAnimationEnd",b):(setTimeout(b,0),a(this))};a.mobile.path=j;a.mobile.base=u;a.mobile.urlHistory=n;a.mobile.dialogHashKey=s;a.mobile.noneTransitionHandler=function(b,c,d,f){f&&f.removeClass(a.mobile.activePageClass);d.addClass(a.mobile.activePageClass);return a.Deferred().resolve(b,c,d,f).promise()};a.mobile.defaultTransitionHandler=a.mobile.noneTransitionHandler;
+a.mobile.transitionHandlers={none:a.mobile.defaultTransitionHandler};a.mobile.allowCrossDomainPages=false;a.mobile.getDocumentUrl=function(b){return b?a.extend({},x):x.href};a.mobile.getDocumentBase=function(b){return b?a.extend({},t):t.href};a.mobile._bindPageRemove=function(){var b=a(this);!b.data("page").options.domCache&&b.is(":jqmData(external-page='true')")&&b.bind("pagehide.remove",function(){var b=a(this),c=new a.Event("pageremove");b.trigger(c);c.isDefaultPrevented()||b.removeWithDependents()})};
+a.mobile.loadPage=function(b,c){var d=a.Deferred(),f=a.extend({},a.mobile.loadPage.defaults,c),h=null,g=null,m=j.makeUrlAbsolute(b,a.mobile.activePage&&l(a.mobile.activePage)||t.hrefNoHash);if(f.data&&f.type==="get")m=j.addSearchParams(m,f.data),f.data=e;if(f.data&&f.type==="post")f.reloadPage=true;var s=j.getFilePath(m),p=j.convertUrlToDataUrl(m);f.pageContainer=f.pageContainer||a.mobile.pageContainer;h=f.pageContainer.children(":jqmData(url='"+p+"')");h.length===0&&p&&!j.isPath(p)&&(h=f.pageContainer.children("#"+
+p).attr("data-"+a.mobile.ns+"url",p));if(h.length===0)if(a.mobile.firstPage&&j.isFirstPageUrl(s))a.mobile.firstPage.parent().length&&(h=a(a.mobile.firstPage));else if(j.isEmbeddedPage(s))return d.reject(m,c),d.promise();u&&u.reset();if(h.length){if(!f.reloadPage)return i(h,f.role),d.resolve(m,c,h),d.promise();g=h}var n=f.pageContainer,k=new a.Event("pagebeforeload"),q={url:b,absUrl:m,dataUrl:p,deferred:d,options:f};n.trigger(k,q);if(k.isDefaultPrevented())return d.promise();if(f.showLoadMsg)var v=
+setTimeout(function(){a.mobile.showPageLoadingMsg()},f.loadMsgDelay);!a.mobile.allowCrossDomainPages&&!j.isSameDomain(x,m)?d.reject(m,c):a.ajax({url:s,type:f.type,data:f.data,dataType:"html",success:function(e,n,k){var o=a("<div></div>"),l=e.match(/<title[^>]*>([^<]*)/)&&RegExp.$1,t=RegExp("\\bdata-"+a.mobile.ns+"url=[\"']?([^\"'>]*)[\"']?");RegExp("(<[^>]+\\bdata-"+a.mobile.ns+"role=[\"']?page[\"']?[^>]*>)").test(e)&&RegExp.$1&&t.test(RegExp.$1)&&RegExp.$1&&(b=s=j.getFilePath(RegExp.$1));u&&u.set(s);
+o.get(0).innerHTML=e;h=o.find(":jqmData(role='page'), :jqmData(role='dialog')").first();h.length||(h=a("<div data-"+a.mobile.ns+"role='page'>"+e.split(/<\/?body[^>]*>/gmi)[1]+"</div>"));l&&!h.jqmData("title")&&(~l.indexOf("&")&&(l=a("<div>"+l+"</div>").text()),h.jqmData("title",l));if(!a.support.dynamicBaseTag){var x=j.get(s);h.find("[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]").each(function(){var b=a(this).is("[href]")?"href":a(this).is("[src]")?"src":"action",c=a(this).attr(b),
+c=c.replace(location.protocol+"//"+location.host+location.pathname,"");/^(\w+:|#|\/)/.test(c)||a(this).attr(b,x+c)})}h.attr("data-"+a.mobile.ns+"url",j.convertUrlToDataUrl(s)).attr("data-"+a.mobile.ns+"external-page",true).appendTo(f.pageContainer);h.one("pagecreate",a.mobile._bindPageRemove);i(h,f.role);m.indexOf("&"+a.mobile.subPageUrlKey)>-1&&(h=f.pageContainer.children(":jqmData(url='"+p+"')"));f.showLoadMsg&&(clearTimeout(v),a.mobile.hidePageLoadingMsg());q.xhr=k;q.textStatus=n;q.page=h;f.pageContainer.trigger("pageload",
+q);d.resolve(m,c,h,g)},error:function(b,e,h){u&&u.set(j.get());q.xhr=b;q.textStatus=e;q.errorThrown=h;b=new a.Event("pageloadfailed");f.pageContainer.trigger(b,q);b.isDefaultPrevented()||(f.showLoadMsg&&(clearTimeout(v),a.mobile.hidePageLoadingMsg(),a("<div class='ui-loader ui-overlay-shadow ui-body-e ui-corner-all'><h1>"+a.mobile.pageLoadErrorMessage+"</h1></div>").css({display:"block",opacity:0.96,top:o.scrollTop()+100}).appendTo(f.pageContainer).delay(800).fadeOut(400,function(){a(this).remove()})),
+d.reject(m,c))}});return d.promise()};a.mobile.loadPage.defaults={type:"get",data:e,reloadPage:false,role:e,showLoadMsg:false,pageContainer:e,loadMsgDelay:50};a.mobile.changePage=function(b,h){if(z)A.unshift(arguments);else{var g=a.extend({},a.mobile.changePage.defaults,h);g.pageContainer=g.pageContainer||a.mobile.pageContainer;g.fromPage=g.fromPage||a.mobile.activePage;var p=g.pageContainer,k=new a.Event("pagebeforechange"),q={toPage:b,options:g};p.trigger(k,q);if(!k.isDefaultPrevented())if(b=q.toPage,
+z=true,typeof b=="string")a.mobile.loadPage(b,g).done(function(b,c,d,f){z=false;c.duplicateCachedPage=f;a.mobile.changePage(d,c)}).fail(function(){z=false;d(true);f();g.pageContainer.trigger("pagechangefailed",q)});else{if(b[0]===a.mobile.firstPage[0]&&!g.dataUrl)g.dataUrl=x.hrefNoHash;var k=g.fromPage,l=g.dataUrl&&j.convertUrlToDataUrl(g.dataUrl)||b.jqmData("url"),v=l;j.getFilePath(l);var o=n.getActive(),t=n.activeIndex===0,w=0,u=document.title,y=g.role==="dialog"||b.jqmData("role")==="dialog";if(k&&
+k[0]===b[0]&&!g.allowSamePageTransition)z=false,p.trigger("pagechange",q);else{i(b,g.role);g.fromHashChange&&n.directHashChange({currentUrl:l,isBack:function(){w=-1},isForward:function(){w=1}});try{document.activeElement&&document.activeElement.nodeName.toLowerCase()!="body"?a(document.activeElement).blur():a("input:focus, textarea:focus, select:focus").blur()}catch(B){}y&&o&&(l=(o.url||"")+s);if(g.changeHash!==false&&l)n.ignoreNextHashChange=true,j.set(l);var C=!o?u:b.jqmData("title")||b.children(":jqmData(role='header')").find(".ui-title").getEncodedText();
+C&&u==document.title&&(u=C);b.jqmData("title")||b.jqmData("title",u);g.transition=g.transition||(w&&!t?o.transition:e)||(y?a.mobile.defaultDialogTransition:a.mobile.defaultPageTransition);w||n.addNew(l,g.transition,u,v,g.role);document.title=n.getActive().title;a.mobile.activePage=b;g.reverse=g.reverse||w<0;c(b,k,g.transition,g.reverse).done(function(){d();g.duplicateCachedPage&&g.duplicateCachedPage.remove();m.removeClass("ui-mobile-rendering");f();p.trigger("pagechange",q)})}}}};a.mobile.changePage.defaults=
+{transition:e,reverse:false,changeHash:true,fromHashChange:false,role:e,duplicateCachedPage:e,pageContainer:e,showLoadMsg:true,dataUrl:e,fromPage:e,allowSamePageTransition:false};a.mobile._registerInternalEvents=function(){a("form").live("submit",function(b){var c=a(this);if(a.mobile.ajaxEnabled&&!c.is(":jqmData(ajax='false')")){var d=c.attr("method"),f=c.attr("target"),e=c.attr("action");if(!e&&(e=l(c),e===t.hrefNoHash))e=x.hrefNoSearch;e=j.makeUrlAbsolute(e,l(c));!j.isExternal(e)&&!f&&(a.mobile.changePage(e,
+{type:d&&d.length&&d.toLowerCase()||"get",data:c.serialize(),transition:c.jqmData("transition"),direction:c.jqmData("direction"),reloadPage:true}),b.preventDefault())}});a(document).bind("vclick",function(b){if(!(b.which>1)&&a.mobile.linkBindingEnabled&&(b=k(b.target))&&j.parseUrl(b.getAttribute("href")||"#").hash!=="#")d(true),q=a(b).closest(".ui-btn").not(".ui-disabled"),q.addClass(a.mobile.activeBtnClass),a("."+a.mobile.activePageClass+" .ui-btn").not(b).blur()});a(document).bind("click",function(b){if(a.mobile.linkBindingEnabled){var c=
+k(b.target);if(c&&!(b.which>1)){var f=a(c),h=function(){window.setTimeout(function(){d(true)},200)};if(f.is(":jqmData(rel='back')"))return window.history.back(),false;var g=l(f),c=j.makeUrlAbsolute(f.attr("href")||"#",g);if(!a.mobile.ajaxEnabled&&!j.isEmbeddedPage(c))h();else{if(c.search("#")!=-1)if(c=c.replace(/[^#]*#/,""))c=j.isPath(c)?j.makeUrlAbsolute(c,g):j.makeUrlAbsolute("#"+c,x.hrefNoHash);else{b.preventDefault();return}var g=f.is("[rel='external']")||f.is(":jqmData(ajax='false')")||f.is("[target]"),
+i=a.mobile.allowCrossDomainPages&&x.protocol==="file:"&&c.search(/^https?:/)!=-1;g||j.isExternal(c)&&!i?h():(h=f.jqmData("transition"),g=(g=f.jqmData("direction"))&&g==="reverse"||f.jqmData("back"),f=f.attr("data-"+a.mobile.ns+"rel")||e,a.mobile.changePage(c,{transition:h,reverse:g,role:f}),b.preventDefault())}}}});a(".ui-page").live("pageshow.prefetch",function(){var b=[];a(this).find("a:jqmData(prefetch)").each(function(){var c=a(this),f=c.attr("href");f&&a.inArray(f,b)===-1&&(b.push(f),a.mobile.loadPage(f,
+{role:c.attr("data-"+a.mobile.ns+"rel")}))})});a.mobile._handleHashChange=function(b){var c=j.stripHash(b),f={transition:a.mobile.urlHistory.stack.length===0?"none":e,changeHash:false,fromHashChange:true};if(!a.mobile.hashListeningEnabled||n.ignoreNextHashChange)n.ignoreNextHashChange=false;else{if(n.stack.length>1&&c.indexOf(s)>-1)if(a.mobile.activePage.is(".ui-dialog"))n.directHashChange({currentUrl:c,either:function(b){var d=a.mobile.urlHistory.getActive();c=d.pageUrl;a.extend(f,{role:d.role,transition:d.transition,
+reverse:b})}});else{n.directHashChange({currentUrl:c,isBack:function(){window.history.back()},isForward:function(){window.history.forward()}});return}c?(c=typeof c==="string"&&!j.isPath(c)?j.makeUrlAbsolute("#"+c,t):c,a.mobile.changePage(c,f)):a.mobile.changePage(a.mobile.firstPage,f)}};o.bind("hashchange",function(){a.mobile._handleHashChange(location.hash)});a(document).bind("pageshow",g);a(window).bind("throttledresize",g)}})(jQuery);
+(function(a,e){var b={},d=a(e),f=a.mobile.path.parseUrl(location.href);a.extend(b,{initialFilePath:f.pathname+f.search,initialHref:f.hrefNoHash,hashchangeFired:false,state:function(){return{hash:location.hash||"#"+b.initialFilePath,title:document.title,initialHref:b.initialHref}},resetUIKeys:function(b){var f="&"+a.mobile.subPageUrlKey,d=b.indexOf(a.mobile.dialogHashKey);d>-1?b=b.slice(0,d)+"#"+b.slice(d):b.indexOf(f)>-1&&(b=b.split(f).join("#"+f));return b},nextHashChangePrevented:function(c){a.mobile.urlHistory.ignoreNextHashChange=
+c;b.onHashChangeDisabled=c},onHashChange:function(){if(!b.onHashChangeDisabled){var c,f;c=location.hash;var d=a.mobile.path.isPath(c),e=d?location.href:a.mobile.getDocumentUrl();c=d?c.replace("#",""):c;f=b.state();c=a.mobile.path.makeUrlAbsolute(c,e);d&&(c=b.resetUIKeys(c));history.replaceState(f,document.title,c)}},onPopState:function(c){var f=c.originalEvent.state;f&&(b.nextHashChangePrevented(true),setTimeout(function(){b.nextHashChangePrevented(false);a.mobile._handleHashChange(f.hash)},100))},
+init:function(){d.bind("hashchange",b.onHashChange);d.bind("popstate",b.onPopState);location.hash===""&&history.replaceState(b.state(),document.title,location.href)}});a(function(){a.mobile.pushStateEnabled&&a.support.pushState&&b.init()})})(jQuery,this);
+(function(a){function e(b,d,f,c){var e=new a.Deferred,g=d?" reverse":"",i="ui-mobile-viewport-transitioning viewport-"+b;f.animationComplete(function(){f.add(c).removeClass("out in reverse "+b);c&&c[0]!==f[0]&&c.removeClass(a.mobile.activePageClass);f.parent().removeClass(i);e.resolve(b,d,f,c)});f.parent().addClass(i);c&&c.addClass(b+" out"+g);f.addClass(a.mobile.activePageClass+" "+b+" in"+g);return e.promise()}a.mobile.css3TransitionHandler=e;if(a.mobile.defaultTransitionHandler===a.mobile.noneTransitionHandler)a.mobile.defaultTransitionHandler=
+e})(jQuery,this);
+(function(a){a.mobile.page.prototype.options.degradeInputs={color:false,date:false,datetime:false,"datetime-local":false,email:false,month:false,number:false,range:"number",search:"text",tel:false,time:false,url:false,week:false};a(document).bind("pagecreate create",function(e){var b=a(e.target).closest(':jqmData(role="page")').data("page"),d;if(b)d=b.options,a(e.target).find("input").not(b.keepNativeSelector()).each(function(){var b=a(this),c=this.getAttribute("type"),e=d.degradeInputs[c]||"text";
+if(d.degradeInputs[c]){var g=a("<div>").html(b.clone()).html(),i=g.indexOf(" type=")>-1;b.replaceWith(g.replace(i?/\s+type=["']?\w+['"]?/:/\/?>/,' type="'+e+'" data-'+a.mobile.ns+'type="'+c+'"'+(i?"":">")))}})})})(jQuery);
+(function(a,e){a.widget("mobile.dialog",a.mobile.widget,{options:{closeBtnText:"Close",overlayTheme:"a",initSelector:":jqmData(role='dialog')"},_create:function(){var b=this,d=this.element,f=a("<a href='#' data-"+a.mobile.ns+"icon='delete' data-"+a.mobile.ns+"iconpos='notext'>"+this.options.closeBtnText+"</a>");d.addClass("ui-overlay-"+this.options.overlayTheme);d.attr("role","dialog").addClass("ui-dialog").find(":jqmData(role='header')").addClass("ui-corner-top ui-overlay-shadow").prepend(f).end().find(":jqmData(role='content'),:jqmData(role='footer')").addClass("ui-overlay-shadow").last().addClass("ui-corner-bottom");
+f.bind("vclick",function(){b.close()});d.bind("vclick submit",function(b){var b=a(b.target).closest(b.type==="vclick"?"a":"form"),f;b.length&&!b.jqmData("transition")&&(f=a.mobile.urlHistory.getActive()||{},b.attr("data-"+a.mobile.ns+"transition",f.transition||a.mobile.defaultDialogTransition).attr("data-"+a.mobile.ns+"direction","reverse"))}).bind("pagehide",function(){a(this).find("."+a.mobile.activeBtnClass).removeClass(a.mobile.activeBtnClass)})},close:function(){e.history.back()}});a(a.mobile.dialog.prototype.options.initSelector).live("pagecreate",
+function(){a(this).dialog()})})(jQuery,this);
+(function(a){a.mobile.page.prototype.options.backBtnText="Back";a.mobile.page.prototype.options.addBackBtn=false;a.mobile.page.prototype.options.backBtnTheme=null;a.mobile.page.prototype.options.headerTheme="a";a.mobile.page.prototype.options.footerTheme="a";a.mobile.page.prototype.options.contentTheme=null;a(":jqmData(role='page'), :jqmData(role='dialog')").live("pagecreate",function(){var e=a(this),b=e.data("page").options,d=e.jqmData("role"),f=b.theme;a(":jqmData(role='header'), :jqmData(role='footer'), :jqmData(role='content')",
+this).each(function(){var c=a(this),e=c.jqmData("role"),g=c.jqmData("theme"),i=g||b.contentTheme||d==="dialog"&&f,k;c.addClass("ui-"+e);if(e==="header"||e==="footer"){var l=g||(e==="header"?b.headerTheme:b.footerTheme)||f;c.addClass("ui-bar-"+l).attr("role",e==="header"?"banner":"contentinfo");g=c.children("a");i=g.hasClass("ui-btn-left");k=g.hasClass("ui-btn-right");i=i||g.eq(0).not(".ui-btn-right").addClass("ui-btn-left").length;k||g.eq(1).addClass("ui-btn-right");b.addBackBtn&&e==="header"&&a(".ui-page").length>
+1&&c.jqmData("url")!==a.mobile.path.stripHash(location.hash)&&!i&&a("<a href='#' class='ui-btn-left' data-"+a.mobile.ns+"rel='back' data-"+a.mobile.ns+"icon='arrow-l'>"+b.backBtnText+"</a>").attr("data-"+a.mobile.ns+"theme",b.backBtnTheme||l).prependTo(c);c.children("h1, h2, h3, h4, h5, h6").addClass("ui-title").attr({tabindex:"0",role:"heading","aria-level":"1"})}else e==="content"&&(i&&c.addClass("ui-body-"+i),c.attr("role","main"))})})})(jQuery);
+(function(a){a.widget("mobile.collapsible",a.mobile.widget,{options:{expandCueText:" click to expand contents",collapseCueText:" click to collapse contents",collapsed:true,heading:"h1,h2,h3,h4,h5,h6,legend",theme:null,contentTheme:null,iconTheme:"d",initSelector:":jqmData(role='collapsible')"},_create:function(){var e=this.element,b=this.options,d=e.addClass("ui-collapsible"),f=e.children(b.heading).first(),c=d.wrapInner("<div class='ui-collapsible-content'></div>").find(".ui-collapsible-content"),
+h=e.closest(":jqmData(role='collapsible-set')").addClass("ui-collapsible-set"),e=h.children(":jqmData(role='collapsible')");f.is("legend")&&(f=a("<div role='heading'>"+f.html()+"</div>").insertBefore(f),f.next().remove());if(h.length){if(!b.theme)b.theme=h.jqmData("theme");if(!b.contentTheme)b.contentTheme=h.jqmData("content-theme")}c.addClass(b.contentTheme?"ui-body-"+b.contentTheme:"");f.insertBefore(c).addClass("ui-collapsible-heading").append("<span class='ui-collapsible-heading-status'></span>").wrapInner("<a href='#' class='ui-collapsible-heading-toggle'></a>").find("a").first().buttonMarkup({shadow:false,
+corners:false,iconPos:"left",icon:"plus",theme:b.theme});h.length?(h.jqmData("collapsiblebound")||h.jqmData("collapsiblebound",true).bind("expand",function(b){a(b.target).closest(".ui-collapsible").siblings(".ui-collapsible").trigger("collapse")}),e.first().find("a").first().addClass("ui-corner-top").find(".ui-btn-inner").addClass("ui-corner-top"),e.last().jqmData("collapsible-last",true).find("a").first().addClass("ui-corner-bottom").find(".ui-btn-inner").addClass("ui-corner-bottom"),d.jqmData("collapsible-last")&&
+f.find("a").first().add(f.find(".ui-btn-inner")).addClass("ui-corner-bottom")):f.find("a").first().add(f.find(".ui-btn-inner")).addClass("ui-corner-top ui-corner-bottom");d.bind("expand collapse",function(e){if(!e.isDefaultPrevented()){e.preventDefault();var i=a(this),e=e.type==="collapse",k=b.contentTheme;f.toggleClass("ui-collapsible-heading-collapsed",e).find(".ui-collapsible-heading-status").text(e?b.expandCueText:b.collapseCueText).end().find(".ui-icon").toggleClass("ui-icon-minus",!e).toggleClass("ui-icon-plus",
+e);i.toggleClass("ui-collapsible-collapsed",e);c.toggleClass("ui-collapsible-content-collapsed",e).attr("aria-hidden",e);if(k&&(!h.length||d.jqmData("collapsible-last")))f.find("a").first().add(f.find(".ui-btn-inner")).toggleClass("ui-corner-bottom",e),c.toggleClass("ui-corner-bottom",!e);c.trigger("updatelayout")}}).trigger(b.collapsed?"collapse":"expand");f.bind("click",function(a){var b=f.is(".ui-collapsible-heading-collapsed")?"expand":"collapse";d.trigger(b);a.preventDefault()})}});a(document).bind("pagecreate create",
+function(e){a(a.mobile.collapsible.prototype.options.initSelector,e.target).collapsible()})})(jQuery);(function(a){a.fn.fieldcontain=function(){return this.addClass("ui-field-contain ui-body ui-br")};a(document).bind("pagecreate create",function(e){a(":jqmData(role='fieldcontain')",e.target).fieldcontain()})})(jQuery);
+(function(a){a.fn.grid=function(e){return this.each(function(){var b=a(this),d=a.extend({grid:null},e),f=b.children(),c={solo:1,a:2,b:3,c:4,d:5},d=d.grid;if(!d)if(f.length<=5)for(var h in c)c[h]===f.length&&(d=h);else d="a";c=c[d];b.addClass("ui-grid-"+d);f.filter(":nth-child("+c+"n+1)").addClass("ui-block-a");c>1&&f.filter(":nth-child("+c+"n+2)").addClass("ui-block-b");c>2&&f.filter(":nth-child(3n+3)").addClass("ui-block-c");c>3&&f.filter(":nth-child(4n+4)").addClass("ui-block-d");c>4&&f.filter(":nth-child(5n+5)").addClass("ui-block-e")})}})(jQuery);
+(function(a,e){a.widget("mobile.navbar",a.mobile.widget,{options:{iconpos:"top",grid:null,initSelector:":jqmData(role='navbar')"},_create:function(){var b=this.element,d=b.find("a"),f=d.filter(":jqmData(icon)").length?this.options.iconpos:e;b.addClass("ui-navbar").attr("role","navigation").find("ul").grid({grid:this.options.grid});f||b.addClass("ui-navbar-noicons");d.buttonMarkup({corners:false,shadow:false,iconpos:f});b.delegate("a","vclick",function(){d.not(".ui-state-persist").removeClass(a.mobile.activeBtnClass);
+a(this).addClass(a.mobile.activeBtnClass)})}});a(document).bind("pagecreate create",function(b){a(a.mobile.navbar.prototype.options.initSelector,b.target).navbar()})})(jQuery);
+(function(a){var e={};a.widget("mobile.listview",a.mobile.widget,{options:{theme:null,countTheme:"c",headerTheme:"b",dividerTheme:"b",splitIcon:"arrow-r",splitTheme:"b",inset:false,initSelector:":jqmData(role='listview')"},_create:function(){var a=this;a.element.addClass(function(d,f){return f+" ui-listview "+(a.options.inset?" ui-listview-inset ui-corner-all ui-shadow ":"")});a.refresh(true)},_removeCorners:function(a,d){a=a.add(a.find(".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb"));d==="top"?a.removeClass("ui-corner-top ui-corner-tr ui-corner-tl"):
+d==="bottom"?a.removeClass("ui-corner-bottom ui-corner-br ui-corner-bl"):a.removeClass("ui-corner-top ui-corner-tr ui-corner-tl ui-corner-bottom ui-corner-br ui-corner-bl")},_refreshCorners:function(a){var d,f;this.options.inset&&(d=this.element.children("li"),f=a?d.not(".ui-screen-hidden"):d.filter(":visible"),this._removeCorners(d),d=f.first().addClass("ui-corner-top"),d.add(d.find(".ui-btn-inner").not(".ui-li-link-alt span:first-child")).addClass("ui-corner-top").end().find(".ui-li-link-alt, .ui-li-link-alt span:first-child").addClass("ui-corner-tr").end().find(".ui-li-thumb").not(".ui-li-icon").addClass("ui-corner-tl"),
+f=f.last().addClass("ui-corner-bottom"),f.add(f.find(".ui-btn-inner")).find(".ui-li-link-alt").addClass("ui-corner-br").end().find(".ui-li-thumb").not(".ui-li-icon").addClass("ui-corner-bl"));a||this.element.trigger("updatelayout")},_findFirstElementByTagName:function(a,d,f,c){var e={};for(e[f]=e[c]=true;a;){if(e[a.nodeName])return a;a=a[d]}return null},_getChildrenByTagName:function(b,d,f){var c=[],e={};e[d]=e[f]=true;for(b=b.firstChild;b;)e[b.nodeName]&&c.push(b),b=b.nextSibling;return a(c)},_addThumbClasses:function(b){var d,
+f,c=b.length;for(d=0;d<c;d++)f=a(this._findFirstElementByTagName(b[d].firstChild,"nextSibling","img","IMG")),f.length&&(f.addClass("ui-li-thumb"),a(this._findFirstElementByTagName(f[0].parentNode,"parentNode","li","LI")).addClass(f.is(".ui-li-icon")?"ui-li-has-icon":"ui-li-has-thumb"))},refresh:function(b){this.parentPage=this.element.closest(".ui-page");this._createSubPages();var d=this.options,f=this.element,c=f.jqmData("dividertheme")||d.dividerTheme,e=f.jqmData("splittheme"),g=f.jqmData("spliticon"),
+i=this._getChildrenByTagName(f[0],"li","LI"),k=a.support.cssPseudoElement||!a.nodeName(f[0],"ol")?0:1,l={},o,m,p,j,q;k&&f.find(".ui-li-dec").remove();if(!d.theme)d.theme=a.mobile.getInheritedTheme(this.element,"c");for(var n=0,A=i.length;n<A;n++){o=i.eq(n);m="ui-li";if(b||!o.hasClass("ui-li"))p=o.jqmData("theme")||d.theme,j=this._getChildrenByTagName(o[0],"a","A"),j.length?(q=o.jqmData("icon"),o.buttonMarkup({wrapperEls:"div",shadow:false,corners:false,iconpos:"right",icon:j.length>1||q===false?false:
+q||"arrow-r",theme:p}),q!=false&&j.length==1&&o.addClass("ui-li-has-arrow"),j.first().addClass("ui-link-inherit"),j.length>1&&(m+=" ui-li-has-alt",j=j.last(),q=e||j.jqmData("theme")||d.splitTheme,j.appendTo(o).attr("title",j.getEncodedText()).addClass("ui-li-link-alt").empty().buttonMarkup({shadow:false,corners:false,theme:p,icon:false,iconpos:false}).find(".ui-btn-inner").append(a(document.createElement("span")).buttonMarkup({shadow:true,corners:true,theme:q,iconpos:"notext",icon:g||j.jqmData("icon")||
+d.splitIcon})))):o.jqmData("role")==="list-divider"?(m+=" ui-li-divider ui-btn ui-bar-"+c,o.attr("role","heading"),k&&(k=1)):m+=" ui-li-static ui-body-"+p;k&&m.indexOf("ui-li-divider")<0&&(p=o.is(".ui-li-static:first")?o:o.find(".ui-link-inherit"),p.addClass("ui-li-jsnumbering").prepend("<span class='ui-li-dec'>"+k++ +". </span>"));l[m]||(l[m]=[]);l[m].push(o[0])}for(m in l)a(l[m]).addClass(m).children(".ui-btn-inner").addClass(m);f.find("h1, h2, h3, h4, h5, h6").addClass("ui-li-heading").end().find("p, dl").addClass("ui-li-desc").end().find(".ui-li-aside").each(function(){var b=
+a(this);b.prependTo(b.parent())}).end().find(".ui-li-count").each(function(){a(this).closest("li").addClass("ui-li-has-count")}).addClass("ui-btn-up-"+(f.jqmData("counttheme")||this.options.countTheme)+" ui-btn-corner-all");this._addThumbClasses(i);this._addThumbClasses(f.find(".ui-link-inherit"));this._refreshCorners(b)},_idStringEscape:function(a){return a.replace(/[^a-zA-Z0-9]/g,"-")},_createSubPages:function(){var b=this.element,d=b.closest(".ui-page"),f=d.jqmData("url"),c=f||d[0][a.expando],
+h=b.attr("id"),g=this.options,i="data-"+a.mobile.ns,k=this,l=d.find(":jqmData(role='footer')").jqmData("id"),o;typeof e[c]==="undefined"&&(e[c]=-1);h=h||++e[c];a(b.find("li>ul, li>ol").toArray().reverse()).each(function(c){var d=a(this),e=d.attr("id")||h+"-"+c,c=d.parent(),k=a(d.prevAll().toArray().reverse()),k=k.length?k:a("<span>"+a.trim(c.contents()[0].nodeValue)+"</span>"),n=k.first().getEncodedText(),e=(f||"")+"&"+a.mobile.subPageUrlKey+"="+e,A=d.jqmData("theme")||g.theme,z=d.jqmData("counttheme")||
+b.jqmData("counttheme")||g.countTheme;o=true;d.detach().wrap("<div "+i+"role='page' "+i+"url='"+e+"' "+i+"theme='"+A+"' "+i+"count-theme='"+z+"'><div "+i+"role='content'></div></div>").parent().before("<div "+i+"role='header' "+i+"theme='"+g.headerTheme+"'><div class='ui-title'>"+n+"</div></div>").after(l?a("<div "+i+"role='footer' "+i+"id='"+l+"'>"):"").parent().appendTo(a.mobile.pageContainer).page();d=c.find("a:first");d.length||(d=a("<a/>").html(k||n).prependTo(c.empty()));d.attr("href","#"+e)}).listview();
+o&&d.is(":jqmData(external-page='true')")&&d.data("page").options.domCache===false&&d.unbind("pagehide.remove").bind("pagehide.remove",function(b,c){var e=c.nextPage;c.nextPage&&(e=e.jqmData("url"),e.indexOf(f+"&"+a.mobile.subPageUrlKey)!==0&&(k.childPages().remove(),d.remove()))})},childPages:function(){var b=this.parentPage.jqmData("url");return a(":jqmData(url^='"+b+"&"+a.mobile.subPageUrlKey+"')")}});a(document).bind("pagecreate create",function(b){a(a.mobile.listview.prototype.options.initSelector,
+b.target).listview()})})(jQuery);
+(function(a){a.mobile.listview.prototype.options.filter=false;a.mobile.listview.prototype.options.filterPlaceholder="Filter items...";a.mobile.listview.prototype.options.filterTheme="c";a.mobile.listview.prototype.options.filterCallback=function(a,b){return a.toLowerCase().indexOf(b)===-1};a(":jqmData(role='listview')").live("listviewcreate",function(){var e=a(this),b=e.data("listview");if(b.options.filter){var d=a("<form>",{"class":"ui-listview-filter ui-bar-"+b.options.filterTheme,role:"search"});
+a("<input>",{placeholder:b.options.filterPlaceholder}).attr("data-"+a.mobile.ns+"type","search").jqmData("lastval","").bind("keyup change",function(){var d=a(this),c=this.value.toLowerCase(),h=null,h=d.jqmData("lastval")+"",g=false,i="";d.jqmData("lastval",c);i=c.substr(0,h.length-1).replace(h,"");h=c.length<h.length||i.length!=c.length-h.length?e.children():e.children(":not(.ui-screen-hidden)");if(c){for(var k=h.length-1;k>=0;k--)d=a(h[k]),i=d.jqmData("filtertext")||d.text(),d.is("li:jqmData(role=list-divider)")?
+(d.toggleClass("ui-filter-hidequeue",!g),g=false):b.options.filterCallback(i,c)?d.toggleClass("ui-filter-hidequeue",true):g=true;h.filter(":not(.ui-filter-hidequeue)").toggleClass("ui-screen-hidden",false);h.filter(".ui-filter-hidequeue").toggleClass("ui-screen-hidden",true).toggleClass("ui-filter-hidequeue",false)}else h.toggleClass("ui-screen-hidden",false);b._refreshCorners()}).appendTo(d).textinput();a(this).jqmData("inset")&&d.addClass("ui-listview-filter-inset");d.bind("submit",function(){return false}).insertBefore(e)}})})(jQuery);
+(function(a){a(document).bind("pagecreate create",function(e){a(":jqmData(role='nojs')",e.target).addClass("ui-nojs")})})(jQuery);
+(function(a,e){a.widget("mobile.checkboxradio",a.mobile.widget,{options:{theme:null,initSelector:"input[type='checkbox'],input[type='radio']"},_create:function(){var b=this,d=this.element,f=d.closest("form,fieldset,:jqmData(role='page')").find("label[for='"+d[0].id+"']"),c=d.attr("type"),h=c+"-on",g=c+"-off",i=d.parents(":jqmData(type='horizontal')").length?e:g;if(!(c!=="checkbox"&&c!=="radio")){a.extend(this,{label:f,inputtype:c,checkedClass:"ui-"+h+(i?"":" "+a.mobile.activeBtnClass),uncheckedClass:"ui-"+
+g,checkedicon:"ui-icon-"+h,uncheckedicon:"ui-icon-"+g});if(!this.options.theme)this.options.theme=this.element.jqmData("theme");f.buttonMarkup({theme:this.options.theme,icon:i,shadow:false});d.add(f).wrapAll("<div class='ui-"+c+"'></div>");f.bind({vmouseover:function(b){a(this).parent().is(".ui-disabled")&&b.stopPropagation()},vclick:function(a){if(d.is(":disabled"))a.preventDefault();else return b._cacheVals(),d.prop("checked",c==="radio"&&true||!d.prop("checked")),d.triggerHandler("click"),b._getInputSet().not(d).prop("checked",
+false),b._updateAll(),false}});d.bind({vmousedown:function(){b._cacheVals()},vclick:function(){var c=a(this);c.is(":checked")?(c.prop("checked",true),b._getInputSet().not(c).prop("checked",false)):c.prop("checked",false);b._updateAll()},focus:function(){f.addClass("ui-focus")},blur:function(){f.removeClass("ui-focus")}});this.refresh()}},_cacheVals:function(){this._getInputSet().each(function(){var b=a(this);b.jqmData("cacheVal",b.is(":checked"))})},_getInputSet:function(){return this.inputtype==
+"checkbox"?this.element:this.element.closest("form,fieldset,:jqmData(role='page')").find("input[name='"+this.element.attr("name")+"'][type='"+this.inputtype+"']")},_updateAll:function(){var b=this;this._getInputSet().each(function(){var d=a(this);(d.is(":checked")||b.inputtype==="checkbox")&&d.trigger("change")}).checkboxradio("refresh")},refresh:function(){var b=this.element,d=this.label,f=d.find(".ui-icon");a(b[0]).prop("checked")?(d.addClass(this.checkedClass).removeClass(this.uncheckedClass),
+f.addClass(this.checkedicon).removeClass(this.uncheckedicon)):(d.removeClass(this.checkedClass).addClass(this.uncheckedClass),f.removeClass(this.checkedicon).addClass(this.uncheckedicon));b.is(":disabled")?this.disable():this.enable()},disable:function(){this.element.prop("disabled",true).parent().addClass("ui-disabled")},enable:function(){this.element.prop("disabled",false).parent().removeClass("ui-disabled")}});a(document).bind("pagecreate create",function(b){a.mobile.checkboxradio.prototype.enhanceWithin(b.target)})})(jQuery);
+(function(a,e){a.widget("mobile.button",a.mobile.widget,{options:{theme:null,icon:null,iconpos:null,inline:null,corners:true,shadow:true,iconshadow:true,initSelector:"button, [type='button'], [type='submit'], [type='reset'], [type='image']"},_create:function(){var b=this.element,d=this.options,f,c;this.button=a("<div></div>").text(b.text()||b.val()).insertBefore(b).buttonMarkup({theme:d.theme,icon:d.icon,iconpos:d.iconpos,inline:d.inline,corners:d.corners,shadow:d.shadow,iconshadow:d.iconshadow}).append(b.addClass("ui-btn-hidden"));
+d=b.attr("type");f=b.attr("name");d!=="button"&&d!=="reset"&&f&&b.bind("vclick",function(){c===e&&(c=a("<input>",{type:"hidden",name:b.attr("name"),value:b.attr("value")}).insertBefore(b),a(document).one("submit",function(){c.remove();c=e}))});this.refresh()},enable:function(){this.element.attr("disabled",false);this.button.removeClass("ui-disabled").attr("aria-disabled",false);return this._setOption("disabled",false)},disable:function(){this.element.attr("disabled",true);this.button.addClass("ui-disabled").attr("aria-disabled",
+true);return this._setOption("disabled",true)},refresh:function(){var a=this.element;a.prop("disabled")?this.disable():this.enable();this.button.data("textWrapper").text(a.text()||a.val())}});a(document).bind("pagecreate create",function(b){a.mobile.button.prototype.enhanceWithin(b.target)})})(jQuery);
+(function(a,e){a.widget("mobile.slider",a.mobile.widget,{options:{theme:null,trackTheme:null,disabled:false,initSelector:"input[type='range'], :jqmData(type='range'), :jqmData(role='slider')"},_create:function(){var b=this,d=this.element,f=a.mobile.getInheritedTheme(d,"c"),c=this.options.theme||f,h=this.options.trackTheme||f,g=d[0].nodeName.toLowerCase(),f=g=="select"?"ui-slider-switch":"",i=d.attr("id"),k=i+"-label",i=a("[for='"+i+"']").attr("id",k),l=function(){return g=="input"?parseFloat(d.val()):
+d[0].selectedIndex},o=g=="input"?parseFloat(d.attr("min")):0,m=g=="input"?parseFloat(d.attr("max")):d.find("option").length-1,p=window.parseFloat(d.attr("step")||1),j=a("<div class='ui-slider "+f+" ui-btn-down-"+h+" ui-btn-corner-all' role='application'></div>"),q=a("<a href='#' class='ui-slider-handle'></a>").appendTo(j).buttonMarkup({corners:true,theme:c,shadow:true}).attr({role:"slider","aria-valuemin":o,"aria-valuemax":m,"aria-valuenow":l(),"aria-valuetext":l(),title:l(),"aria-labelledby":k});
+a.extend(this,{slider:j,handle:q,dragging:false,beforeStart:null,userModified:false,mouseMoved:false});g=="select"&&(j.wrapInner("<div class='ui-slider-inneroffset'></div>"),q.addClass("ui-slider-handle-snapping"),d.find("option"),d.find("option").each(function(b){var c=!b?"b":"a",d=!b?"right":"left",b=!b?" ui-btn-down-"+h:" "+a.mobile.activeBtnClass;a("<div class='ui-slider-labelbg ui-slider-labelbg-"+c+b+" ui-btn-corner-"+d+"'></div>").prependTo(j);a("<span class='ui-slider-label ui-slider-label-"+
+c+b+" ui-btn-corner-"+d+"' role='img'>"+a(this).getEncodedText()+"</span>").prependTo(q)}));i.addClass("ui-slider");d.addClass(g==="input"?"ui-slider-input":"ui-slider-switch").change(function(){b.mouseMoved||b.refresh(l(),true)}).keyup(function(){b.refresh(l(),true,true)}).blur(function(){b.refresh(l(),true)});a(document).bind("vmousemove",function(a){if(b.dragging)return b.mouseMoved=true,g==="select"&&q.removeClass("ui-slider-handle-snapping"),b.refresh(a),b.userModified=b.beforeStart!==d[0].selectedIndex,
+false});j.bind("vmousedown",function(a){b.dragging=true;b.userModified=false;b.mouseMoved=false;if(g==="select")b.beforeStart=d[0].selectedIndex;b.refresh(a);return false});j.add(document).bind("vmouseup",function(){if(b.dragging)return b.dragging=false,g==="select"&&(q.addClass("ui-slider-handle-snapping"),b.mouseMoved?b.userModified?b.refresh(b.beforeStart==0?1:0):b.refresh(b.beforeStart):b.refresh(b.beforeStart==0?1:0)),b.mouseMoved=false});j.insertAfter(d);this.handle.bind("vmousedown",function(){a(this).focus()}).bind("vclick",
+false);this.handle.bind("keydown",function(c){var d=l();if(!b.options.disabled){switch(c.keyCode){case a.mobile.keyCode.HOME:case a.mobile.keyCode.END:case a.mobile.keyCode.PAGE_UP:case a.mobile.keyCode.PAGE_DOWN:case a.mobile.keyCode.UP:case a.mobile.keyCode.RIGHT:case a.mobile.keyCode.DOWN:case a.mobile.keyCode.LEFT:if(c.preventDefault(),!b._keySliding)b._keySliding=true,a(this).addClass("ui-state-active")}switch(c.keyCode){case a.mobile.keyCode.HOME:b.refresh(o);break;case a.mobile.keyCode.END:b.refresh(m);
+break;case a.mobile.keyCode.PAGE_UP:case a.mobile.keyCode.UP:case a.mobile.keyCode.RIGHT:b.refresh(d+p);break;case a.mobile.keyCode.PAGE_DOWN:case a.mobile.keyCode.DOWN:case a.mobile.keyCode.LEFT:b.refresh(d-p)}}}).keyup(function(){if(b._keySliding)b._keySliding=false,a(this).removeClass("ui-state-active")});this.refresh(e,e,true)},refresh:function(a,d,f){(this.options.disabled||this.element.attr("disabled"))&&this.disable();var c=this.element,e,g=c[0].nodeName.toLowerCase(),i=g==="input"?parseFloat(c.attr("min")):
+0,k=g==="input"?parseFloat(c.attr("max")):c.find("option").length-1;if(typeof a==="object"){if(!this.dragging||a.pageX<this.slider.offset().left-8||a.pageX>this.slider.offset().left+this.slider.width()+8)return;e=Math.round((a.pageX-this.slider.offset().left)/this.slider.width()*100)}else a==null&&(a=g==="input"?parseFloat(c.val()):c[0].selectedIndex),e=(parseFloat(a)-i)/(k-i)*100;if(!isNaN(e)&&(e<0&&(e=0),e>100&&(e=100),a=Math.round(e/100*(k-i))+i,a<i&&(a=i),a>k&&(a=k),this.handle.css("left",e+"%"),
+this.handle.attr({"aria-valuenow":g==="input"?a:c.find("option").eq(a).attr("value"),"aria-valuetext":g==="input"?a:c.find("option").eq(a).getEncodedText(),title:a}),g==="select"&&(a===0?this.slider.addClass("ui-slider-switch-a").removeClass("ui-slider-switch-b"):this.slider.addClass("ui-slider-switch-b").removeClass("ui-slider-switch-a")),!f))f=false,g==="input"?(f=c.val()!==a,c.val(a)):(f=c[0].selectedIndex!==a,c[0].selectedIndex=a),!d&&f&&c.trigger("change")},enable:function(){this.element.attr("disabled",
+false);this.slider.removeClass("ui-disabled").attr("aria-disabled",false);return this._setOption("disabled",false)},disable:function(){this.element.attr("disabled",true);this.slider.addClass("ui-disabled").attr("aria-disabled",true);return this._setOption("disabled",true)}});a(document).bind("pagecreate create",function(b){a.mobile.slider.prototype.enhanceWithin(b.target)})})(jQuery);
+(function(a){a.widget("mobile.textinput",a.mobile.widget,{options:{theme:null,initSelector:"input[type='text'], input[type='search'], :jqmData(type='search'), input[type='number'], :jqmData(type='number'), input[type='password'], input[type='email'], input[type='url'], input[type='tel'], textarea, input[type='time'], input[type='date'], input[type='month'], input[type='week'], input[type='datetime'], input[type='datetime-local'], input[type='color'], input:not([type])"},_create:function(){var e=this.element,
+b=this.options.theme||a.mobile.getInheritedTheme(this.element,"c"),d=" ui-body-"+b,f,c;a("label[for='"+e.attr("id")+"']").addClass("ui-input-text");f=e.addClass("ui-input-text ui-body-"+b);typeof e[0].autocorrect!=="undefined"&&!a.support.touchOverflow&&(e[0].setAttribute("autocorrect","off"),e[0].setAttribute("autocomplete","off"));e.is("[type='search'],:jqmData(type='search')")?(f=e.wrap("<div class='ui-input-search ui-shadow-inset ui-btn-corner-all ui-btn-shadow ui-icon-searchfield"+d+"'></div>").parent(),
+c=a("<a href='#' class='ui-input-clear' title='clear text'>clear text</a>").tap(function(a){e.val("").focus();e.trigger("change");c.addClass("ui-input-clear-hidden");a.preventDefault()}).appendTo(f).buttonMarkup({icon:"delete",iconpos:"notext",corners:true,shadow:true}),b=function(){setTimeout(function(){c.toggleClass("ui-input-clear-hidden",!e.val())},0)},b(),e.bind("paste cut keyup focus change blur",b)):e.addClass("ui-corner-all ui-shadow-inset"+d);e.focus(function(){f.addClass("ui-focus")}).blur(function(){f.removeClass("ui-focus")});
+if(e.is("textarea")){var h=function(){var a=e[0].scrollHeight;e[0].clientHeight<a&&e.height(a+15)},g;e.keyup(function(){clearTimeout(g);g=setTimeout(h,100)});a.trim(e.val())&&(a(window).load(h),a(document).one("pagechange",h))}},disable:function(){(this.element.attr("disabled",true).is("[type='search'],:jqmData(type='search')")?this.element.parent():this.element).addClass("ui-disabled")},enable:function(){(this.element.attr("disabled",false).is("[type='search'],:jqmData(type='search')")?this.element.parent():
+this.element).removeClass("ui-disabled")}});a(document).bind("pagecreate create",function(e){a.mobile.textinput.prototype.enhanceWithin(e.target)})})(jQuery);
+(function(a){var e=function(b){var d=b.selectID,f=b.label,c=b.select.closest(".ui-page"),e=a("<div>",{"class":"ui-selectmenu-screen ui-screen-hidden"}).appendTo(c),g=b._selectOptions(),i=b.isMultiple=b.select[0].multiple,k=d+"-button",l=d+"-menu",o=a("<div data-"+a.mobile.ns+"role='dialog' data-"+a.mobile.ns+"theme='"+b.options.theme+"' data-"+a.mobile.ns+"overlay-theme='"+b.options.overlayTheme+"'><div data-"+a.mobile.ns+"role='header'><div class='ui-title'>"+f.getEncodedText()+"</div></div><div data-"+
+a.mobile.ns+"role='content'></div></div>").appendTo(a.mobile.pageContainer).page(),m=a("<div>",{"class":"ui-selectmenu ui-selectmenu-hidden ui-overlay-shadow ui-corner-all ui-body-"+b.options.overlayTheme+" "+a.mobile.defaultDialogTransition}).insertAfter(e),p=a("<ul>",{"class":"ui-selectmenu-list",id:l,role:"listbox","aria-labelledby":k}).attr("data-"+a.mobile.ns+"theme",b.options.theme).appendTo(m),j=a("<div>",{"class":"ui-header ui-bar-"+b.options.theme}).prependTo(m),q=a("<h1>",{"class":"ui-title"}).appendTo(j),
+n=a("<a>",{text:b.options.closeText,href:"#","class":"ui-btn-left"}).attr("data-"+a.mobile.ns+"iconpos","notext").attr("data-"+a.mobile.ns+"icon","delete").appendTo(j).buttonMarkup(),A=o.find(".ui-content"),z=o.find(".ui-header a");a.extend(b,{select:b.select,selectID:d,buttonId:k,menuId:l,thisPage:c,menuPage:o,label:f,screen:e,selectOptions:g,isMultiple:i,theme:b.options.theme,listbox:m,list:p,header:j,headerTitle:q,headerClose:n,menuPageContent:A,menuPageClose:z,placeholder:"",build:function(){var b=
+this;b.refresh();b.select.attr("tabindex","-1").focus(function(){a(this).blur();b.button.focus()});b.button.bind("vclick keydown",function(c){if(c.type=="vclick"||c.keyCode&&(c.keyCode===a.mobile.keyCode.ENTER||c.keyCode===a.mobile.keyCode.SPACE))b.open(),c.preventDefault()});b.list.attr("role","listbox").delegate(".ui-li>a","focusin",function(){a(this).attr("tabindex","0")}).delegate(".ui-li>a","focusout",function(){a(this).attr("tabindex","-1")}).delegate("li:not(.ui-disabled, .ui-li-divider)",
+"click",function(c){var d=b.select[0].selectedIndex,f=b.list.find("li:not(.ui-li-divider)").index(this),e=b._selectOptions().eq(f)[0];e.selected=b.isMultiple?!e.selected:true;b.isMultiple&&a(this).find(".ui-icon").toggleClass("ui-icon-checkbox-on",e.selected).toggleClass("ui-icon-checkbox-off",!e.selected);(b.isMultiple||d!==f)&&b.select.trigger("change");b.isMultiple||b.close();c.preventDefault()}).keydown(function(b){var c=a(b.target),d=c.closest("li");switch(b.keyCode){case 38:return b=d.prev(),
+b.length&&(c.blur().attr("tabindex","-1"),b.find("a").first().focus()),false;case 40:return b=d.next(),b.length&&(c.blur().attr("tabindex","-1"),b.find("a").first().focus()),false;case 13:case 32:return c.trigger("click"),false}});b.menuPage.bind("pagehide",function(){b.list.appendTo(b.listbox);b._focusButton();a.mobile._bindPageRemove.call(b.thisPage)});b.screen.bind("vclick",function(){b.close()});b.headerClose.click(function(){if(b.menuType=="overlay")return b.close(),false});b.thisPage.addDependents(this.menuPage)},
+_isRebuildRequired:function(){var a=this.list.find("li");return this._selectOptions().text()!==a.text()},refresh:function(b){var c=this;this._selectOptions();this.selected();var d=this.selectedIndices();(b||this._isRebuildRequired())&&c._buildList();c.setButtonText();c.setButtonCount();c.list.find("li:not(.ui-li-divider)").removeClass(a.mobile.activeBtnClass).attr("aria-selected",false).each(function(b){a.inArray(b,d)>-1&&(b=a(this),b.attr("aria-selected",true),c.isMultiple?b.find(".ui-icon").removeClass("ui-icon-checkbox-off").addClass("ui-icon-checkbox-on"):
+b.addClass(a.mobile.activeBtnClass))})},close:function(){if(!this.options.disabled&&this.isOpen)this.menuType=="page"?window.history.back():(this.screen.addClass("ui-screen-hidden"),this.listbox.addClass("ui-selectmenu-hidden").removeAttr("style").removeClass("in"),this.list.appendTo(this.listbox),this._focusButton()),this.isOpen=false},open:function(){if(!this.options.disabled){var b=this,c=b.list.parent().outerHeight(),d=b.list.parent().outerWidth(),f=a(".ui-page-active"),e=a.support.touchOverflow&&
+a.mobile.touchOverflowEnabled,f=f.is(".ui-native-fixed")?f.find(".ui-content"):f;scrollTop=e?f.scrollTop():a(window).scrollTop();btnOffset=b.button.offset().top;screenHeight=window.innerHeight;screenWidth=window.innerWidth;b.button.addClass(a.mobile.activeBtnClass);setTimeout(function(){b.button.removeClass(a.mobile.activeBtnClass)},300);if(c>screenHeight-80||!a.support.scrollTop){b.thisPage.unbind("pagehide.remove");if(scrollTop==0&&btnOffset>screenHeight)b.thisPage.one("pagehide",function(){a(this).jqmData("lastScroll",
+btnOffset)});b.menuPage.one("pageshow",function(){a(window).one("silentscroll",function(){b.list.find(a.mobile.activeBtnClass).focus()});b.isOpen=true});b.menuType="page";b.menuPageContent.append(b.list);b.menuPage.find("div .ui-title").text(b.label.text());a.mobile.changePage(b.menuPage,{transition:a.mobile.defaultDialogTransition})}else{b.menuType="overlay";b.screen.height(a(document).height()).removeClass("ui-screen-hidden");var f=btnOffset-scrollTop,h=scrollTop+screenHeight-btnOffset,g=c/2,e=
+parseFloat(b.list.parent().css("max-width")),c=f>c/2&&h>c/2?btnOffset+b.button.outerHeight()/2-g:f>h?scrollTop+screenHeight-c-30:scrollTop+30;d<e?e=(screenWidth-d)/2:(e=b.button.offset().left+b.button.outerWidth()/2-d/2,e<30?e=30:e+d>screenWidth&&(e=screenWidth-d-30));b.listbox.append(b.list).removeClass("ui-selectmenu-hidden").css({top:c,left:e}).addClass("in");b.list.find(a.mobile.activeBtnClass).focus();b.isOpen=true}}},_buildList:function(){var b=this,c=this.options,d=this.placeholder,f=[],e=
+[],h=b.isMultiple?"checkbox-off":"false";b.list.empty().filter(".ui-listview").listview("destroy");b.select.find("option").each(function(g){var j=a(this),i=j.parent(),m=j.getEncodedText(),p="<a href='#'>"+m+"</a>",k=[],n=[];i.is("optgroup")&&(i=i.attr("label"),a.inArray(i,f)===-1&&(e.push("<li data-"+a.mobile.ns+"role='list-divider'>"+i+"</li>"),f.push(i)));if(!this.getAttribute("value")||m.length==0||j.jqmData("placeholder"))c.hidePlaceholderMenuItems&&k.push("ui-selectmenu-placeholder"),d=b.placeholder=
+m;this.disabled&&(k.push("ui-disabled"),n.push("aria-disabled='true'"));e.push("<li data-"+a.mobile.ns+"option-index='"+g+"' data-"+a.mobile.ns+"icon='"+h+"' class='"+k.join(" ")+"' "+n.join(" ")+">"+p+"</li>")});b.list.html(e.join(" "));b.list.find("li").attr({role:"option",tabindex:"-1"}).first().attr("tabindex","0");this.isMultiple||this.headerClose.hide();!this.isMultiple&&!d.length?this.header.hide():this.headerTitle.text(this.placeholder);b.list.listview()},_button:function(){return a("<a>",
+{href:"#",role:"button",id:this.buttonId,"aria-haspopup":"true","aria-owns":this.menuId})}})};a("select").live("selectmenubeforecreate",function(){var b=a(this).data("selectmenu");b.options.nativeMenu||e(b)})})(jQuery);
+(function(a){a.widget("mobile.selectmenu",a.mobile.widget,{options:{theme:null,disabled:false,icon:"arrow-d",iconpos:"right",inline:null,corners:true,shadow:true,iconshadow:true,menuPageTheme:"b",overlayTheme:"a",hidePlaceholderMenuItems:true,closeText:"Close",nativeMenu:true,initSelector:"select:not(:jqmData(role='slider'))"},_button:function(){return a("<div/>")},_setDisabled:function(a){this.element.attr("disabled",a);this.button.attr("aria-disabled",a);return this._setOption("disabled",a)},_focusButton:function(){var a=
+this;setTimeout(function(){a.button.focus()},40)},_selectOptions:function(){return this.select.find("option")},_preExtension:function(){this.select=this.element.wrap("<div class='ui-select'>");this.selectID=this.select.attr("id");this.label=a("label[for='"+this.selectID+"']").addClass("ui-select");this.isMultiple=this.select[0].multiple;if(!this.options.theme)this.options.theme=a.mobile.getInheritedTheme(this.select,"c")},_create:function(){this._preExtension();this._trigger("beforeCreate");this.button=
+this._button();var e=this,b=this.options,d=this.button.text(a(this.select[0].options.item(this.select[0].selectedIndex==-1?0:this.select[0].selectedIndex)).text()).insertBefore(this.select).buttonMarkup({theme:b.theme,icon:b.icon,iconpos:b.iconpos,inline:b.inline,corners:b.corners,shadow:b.shadow,iconshadow:b.iconshadow});b.nativeMenu&&window.opera&&window.opera.version&&this.select.addClass("ui-select-nativeonly");if(this.isMultiple)this.buttonCount=a("<span>").addClass("ui-li-count ui-btn-up-c ui-btn-corner-all").hide().appendTo(d.addClass("ui-li-has-count"));
+(b.disabled||this.element.attr("disabled"))&&this.disable();this.select.change(function(){e.refresh()});this.build()},build:function(){var e=this;this.select.appendTo(e.button).bind("vmousedown",function(){e.button.addClass(a.mobile.activeBtnClass)}).bind("focus vmouseover",function(){e.button.trigger("vmouseover")}).bind("vmousemove",function(){e.button.removeClass(a.mobile.activeBtnClass)}).bind("change blur vmouseout",function(){e.button.trigger("vmouseout").removeClass(a.mobile.activeBtnClass)}).bind("change blur",
+function(){e.button.removeClass("ui-btn-down-"+e.options.theme)})},selected:function(){return this._selectOptions().filter(":selected")},selectedIndices:function(){var a=this;return this.selected().map(function(){return a._selectOptions().index(this)}).get()},setButtonText:function(){var e=this,b=this.selected();this.button.find(".ui-btn-text").text(function(){return!e.isMultiple?b.text():b.length?b.map(function(){return a(this).text()}).get().join(", "):e.placeholder})},setButtonCount:function(){var a=
+this.selected();this.isMultiple&&this.buttonCount[a.length>1?"show":"hide"]().text(a.length)},refresh:function(){this.setButtonText();this.setButtonCount()},open:a.noop,close:a.noop,disable:function(){this._setDisabled(true);this.button.addClass("ui-disabled")},enable:function(){this._setDisabled(false);this.button.removeClass("ui-disabled")}});a(document).bind("pagecreate create",function(e){a.mobile.selectmenu.prototype.enhanceWithin(e.target)})})(jQuery);
+(function(a,e){function b(b){for(var c;b;){if((c=typeof b.className==="string"&&b.className.split(" "))&&a.inArray("ui-btn",c)>-1&&a.inArray("ui-disabled",c)<0)break;b=b.parentNode}return b}a.fn.buttonMarkup=function(b){for(var b=b||{},c=0;c<this.length;c++){var h=this.eq(c),g=h[0],i=a.extend({},a.fn.buttonMarkup.defaults,{icon:b.icon!==e?b.icon:h.jqmData("icon"),iconpos:b.iconpos!==e?b.iconpos:h.jqmData("iconpos"),theme:b.theme!==e?b.theme:h.jqmData("theme"),inline:b.inline!==e?b.inline:h.jqmData("inline"),
+shadow:b.shadow!==e?b.shadow:h.jqmData("shadow"),corners:b.corners!==e?b.corners:h.jqmData("corners"),iconshadow:b.iconshadow!==e?b.iconshadow:h.jqmData("iconshadow")},b),k="ui-btn-inner",l,o,m=document.createElement(i.wrapperEls),p=document.createElement(i.wrapperEls),j=i.icon?document.createElement("span"):null;d&&d();if(!i.theme)i.theme=a.mobile.getInheritedTheme(h,"c");l="ui-btn ui-btn-up-"+i.theme;i.inline&&(l+=" ui-btn-inline");if(i.icon)i.icon="ui-icon-"+i.icon,i.iconpos=i.iconpos||"left",
+o="ui-icon "+i.icon,i.iconshadow&&(o+=" ui-icon-shadow");i.iconpos&&(l+=" ui-btn-icon-"+i.iconpos,i.iconpos=="notext"&&!h.attr("title")&&h.attr("title",h.getEncodedText()));i.corners&&(l+=" ui-btn-corner-all",k+=" ui-btn-corner-all");i.shadow&&(l+=" ui-shadow");g.setAttribute("data-"+a.mobile.ns+"theme",i.theme);h.addClass(l);m.className=k;m.setAttribute("aria-hidden","true");p.className="ui-btn-text";m.appendChild(p);if(j)j.className=o,m.appendChild(j);for(;g.firstChild;)p.appendChild(g.firstChild);
+g.appendChild(m);a.data(g,"textWrapper",a(p))}return this};a.fn.buttonMarkup.defaults={corners:true,shadow:true,iconshadow:true,inline:false,wrapperEls:"span"};var d=function(){a(document).bind({vmousedown:function(d){var d=b(d.target),c;d&&(d=a(d),c=d.attr("data-"+a.mobile.ns+"theme"),d.removeClass("ui-btn-up-"+c).addClass("ui-btn-down-"+c))},"vmousecancel vmouseup":function(d){var d=b(d.target),c;d&&(d=a(d),c=d.attr("data-"+a.mobile.ns+"theme"),d.removeClass("ui-btn-down-"+c).addClass("ui-btn-up-"+
+c))},"vmouseover focus":function(d){var d=b(d.target),c;d&&(d=a(d),c=d.attr("data-"+a.mobile.ns+"theme"),d.removeClass("ui-btn-up-"+c).addClass("ui-btn-hover-"+c))},"vmouseout blur":function(d){var d=b(d.target),c;d&&(d=a(d),c=d.attr("data-"+a.mobile.ns+"theme"),d.removeClass("ui-btn-hover-"+c+" ui-btn-down-"+c).addClass("ui-btn-up-"+c))}});d=null};a(document).bind("pagecreate create",function(b){a(":jqmData(role='button'), .ui-bar > a, .ui-header > a, .ui-footer > a, .ui-bar > :jqmData(role='controlgroup') > a",
+b.target).not(".ui-btn, :jqmData(role='none'), :jqmData(role='nojs')").buttonMarkup()})})(jQuery);
+(function(a){a.fn.controlgroup=function(e){return this.each(function(){function b(a){a.removeClass("ui-btn-corner-all ui-shadow").eq(0).addClass(h[0]).end().last().addClass(h[1]).addClass("ui-controlgroup-last")}var d=a(this),f=a.extend({direction:d.jqmData("type")||"vertical",shadow:false,excludeInvisible:true},e),c=d.children("legend"),h=f.direction=="horizontal"?["ui-corner-left","ui-corner-right"]:["ui-corner-top","ui-corner-bottom"];d.find("input").first().attr("type");c.length&&(d.wrapInner("<div class='ui-controlgroup-controls'></div>"),
+a("<div role='heading' class='ui-controlgroup-label'>"+c.html()+"</div>").insertBefore(d.children(0)),c.remove());d.addClass("ui-corner-all ui-controlgroup ui-controlgroup-"+f.direction);b(d.find(".ui-btn"+(f.excludeInvisible?":visible":"")));b(d.find(".ui-btn-inner"));f.shadow&&d.addClass("ui-shadow")})};a(document).bind("pagecreate create",function(e){a(":jqmData(role='controlgroup')",e.target).controlgroup({excludeInvisible:false})})})(jQuery);
+(function(a){a(document).bind("pagecreate create",function(e){a(e.target).find("a").not(".ui-btn, .ui-link-inherit, :jqmData(role='none'), :jqmData(role='nojs')").addClass("ui-link")})})(jQuery);
+(function(a,e){a.fn.fixHeaderFooter=function(){return!a.support.scrollTop||a.support.touchOverflow&&a.mobile.touchOverflowEnabled?this:this.each(function(){var b=a(this);b.jqmData("fullscreen")&&b.addClass("ui-page-fullscreen");b.find(".ui-header:jqmData(position='fixed')").addClass("ui-header-fixed ui-fixed-inline fade");b.find(".ui-footer:jqmData(position='fixed')").addClass("ui-footer-fixed ui-fixed-inline fade")})};a.mobile.fixedToolbars=function(){function b(){!i&&g==="overlay"&&(h||a.mobile.fixedToolbars.hide(true),
+a.mobile.fixedToolbars.startShowTimer())}function d(a){var b=0,c,d;if(a){d=document.body;c=a.offsetParent;for(b=a.offsetTop;a&&a!=d;){b+=a.scrollTop||0;if(a==c)b+=c.offsetTop,c=a.offsetParent;a=a.parentNode}}return b}function f(b){var c=a(window).scrollTop(),e=d(b[0]),f=b.css("top")=="auto"?0:parseFloat(b.css("top")),h=window.innerHeight,g=b.outerHeight(),i=b.parents(".ui-page:not(.ui-page-fullscreen)").length;return b.is(".ui-header-fixed")?(f=c-e+f,f<e&&(f=0),b.css("top",i?f:c)):b.css("top",i?c+
+h-g-(e-f):c+h-g)}if(a.support.scrollTop&&(!a.support.touchOverflow||!a.mobile.touchOverflowEnabled)){var c,h,g="inline",i=false,k=null,l=false,o=true;a(function(){var c=a(document),d=a(window);c.bind("vmousedown",function(){o&&(k=g)}).bind("vclick",function(b){o&&!a(b.target).closest("a,input,textarea,select,button,label,.ui-header-fixed,.ui-footer-fixed").length&&!l&&(a.mobile.fixedToolbars.toggle(k),k=null)}).bind("silentscroll",b);(c.scrollTop()===0?d:c).bind("scrollstart",function(){l=true;k===
+null&&(k=g);var b=k=="overlay";if(i=b||!!h)a.mobile.fixedToolbars.clearShowTimer(),b&&a.mobile.fixedToolbars.hide(true)}).bind("scrollstop",function(b){a(b.target).closest("a,input,textarea,select,button,label,.ui-header-fixed,.ui-footer-fixed").length||(l=false,i&&(a.mobile.fixedToolbars.startShowTimer(),i=false),k=null)});d.bind("resize updatelayout",b)});a(".ui-page").live("pagebeforeshow",function(b,d){var e=a(b.target).find(":jqmData(role='footer')"),h=e.data("id"),g=d.prevPage,g=g&&g.find(":jqmData(role='footer')"),
+g=g.length&&g.jqmData("id")===h;h&&g&&(c=e,f(c.removeClass("fade in out").appendTo(a.mobile.pageContainer)))}).live("pageshow",function(){var b=a(this);c&&c.length&&setTimeout(function(){f(c.appendTo(b).addClass("fade"));c=null},500);a.mobile.fixedToolbars.show(true,this)});a(".ui-collapsible-contain").live("collapse expand",b);return{show:function(b,c){a.mobile.fixedToolbars.clearShowTimer();g="overlay";return(c?a(c):a.mobile.activePage?a.mobile.activePage:a(".ui-page-active")).children(".ui-header-fixed:first, .ui-footer-fixed:not(.ui-footer-duplicate):last").each(function(){var c=
+a(this),e=a(window).scrollTop(),h=d(c[0]),g=window.innerHeight,i=c.outerHeight(),e=c.is(".ui-header-fixed")&&e<=h+i||c.is(".ui-footer-fixed")&&h<=e+g;c.addClass("ui-fixed-overlay").removeClass("ui-fixed-inline");!e&&!b&&c.animationComplete(function(){c.removeClass("in")}).addClass("in");f(c)})},hide:function(b){g="inline";return(a.mobile.activePage?a.mobile.activePage:a(".ui-page-active")).children(".ui-header-fixed:first, .ui-footer-fixed:not(.ui-footer-duplicate):last").each(function(){var c=a(this),
+d=c.css("top"),d=d=="auto"?0:parseFloat(d);c.addClass("ui-fixed-inline").removeClass("ui-fixed-overlay");if(d<0||c.is(".ui-header-fixed")&&d!==0)b?c.css("top",0):c.css("top")!=="auto"&&parseFloat(c.css("top"))!==0&&c.animationComplete(function(){c.removeClass("out reverse").css("top",0)}).addClass("out reverse")})},startShowTimer:function(){a.mobile.fixedToolbars.clearShowTimer();var b=[].slice.call(arguments);h=setTimeout(function(){h=e;a.mobile.fixedToolbars.show.apply(null,b)},100)},clearShowTimer:function(){h&&
+clearTimeout(h);h=e},toggle:function(b){b&&(g=b);return g==="overlay"?a.mobile.fixedToolbars.hide():a.mobile.fixedToolbars.show()},setTouchToggleEnabled:function(a){o=a}}}}();a(document).bind("pagecreate create",function(b){a(":jqmData(position='fixed')",b.target).length&&a(b.target).each(function(){if(!a.support.scrollTop||a.support.touchOverflow&&a.mobile.touchOverflowEnabled)return this;var b=a(this);b.jqmData("fullscreen")&&b.addClass("ui-page-fullscreen");b.find(".ui-header:jqmData(position='fixed')").addClass("ui-header-fixed ui-fixed-inline fade");
+b.find(".ui-footer:jqmData(position='fixed')").addClass("ui-footer-fixed ui-fixed-inline fade")})})})(jQuery);
+(function(a){a.mobile.touchOverflowEnabled=false;a.mobile.touchOverflowZoomEnabled=false;a(document).bind("pagecreate",function(e){a.support.touchOverflow&&a.mobile.touchOverflowEnabled&&(e=a(e.target),e.is(":jqmData(role='page')")&&e.each(function(){var b=a(this),d=b.find(":jqmData(role='header'), :jqmData(role='footer')").filter(":jqmData(position='fixed')"),e=b.jqmData("fullscreen"),c=d.length?b.find(".ui-content"):b;b.addClass("ui-mobile-touch-overflow");c.bind("scrollstop",function(){c.scrollTop()>
+0&&window.scrollTo(0,a.mobile.defaultHomeScroll)});d.length&&(b.addClass("ui-native-fixed"),e&&(b.addClass("ui-native-fullscreen"),d.addClass("fade in"),a(document).bind("vclick",function(){d.removeClass("ui-native-bars-hidden").toggleClass("in out").animationComplete(function(){a(this).not(".in").addClass("ui-native-bars-hidden")})})))}))})})(jQuery);
+(function(a,e){function b(){var b=a("meta[name='viewport']");b.length?b.attr("content",b.attr("content")+", user-scalable=no"):a("head").prepend("<meta>",{name:"viewport",content:"user-scalable=no"})}var d=a("html");a("head");var f=a(e);a(e.document).trigger("mobileinit");if(a.mobile.gradeA()){if(a.mobile.ajaxBlacklist)a.mobile.ajaxEnabled=false;d.addClass("ui-mobile ui-mobile-rendering");var c=a("<div class='ui-loader ui-body-a ui-corner-all'><span class='ui-icon ui-icon-loading spin'></span><h1></h1></div>");
+a.extend(a.mobile,{showPageLoadingMsg:function(){if(a.mobile.loadingMessage){var b=a("."+a.mobile.activeBtnClass).first();c.find("h1").text(a.mobile.loadingMessage).end().appendTo(a.mobile.pageContainer).css({top:a.support.scrollTop&&f.scrollTop()+f.height()/2||b.length&&b.offset().top||100})}d.addClass("ui-loading")},hidePageLoadingMsg:function(){d.removeClass("ui-loading")},initializePage:function(){var b=a(":jqmData(role='page')");b.length||(b=a("body").wrapInner("<div data-"+a.mobile.ns+"role='page'></div>").children(0));
+b.add(":jqmData(role='dialog')").each(function(){var b=a(this);b.jqmData("url")||b.attr("data-"+a.mobile.ns+"url",b.attr("id")||location.pathname+location.search)});a.mobile.firstPage=b.first();a.mobile.pageContainer=b.first().parent().addClass("ui-mobile-viewport");f.trigger("pagecontainercreate");a.mobile.showPageLoadingMsg();!a.mobile.hashListeningEnabled||!a.mobile.path.stripHash(location.hash)?a.mobile.changePage(a.mobile.firstPage,{transition:"none",reverse:true,changeHash:false,fromHashChange:true}):
+f.trigger("hashchange",[true])}});a.support.touchOverflow&&a.mobile.touchOverflowEnabled&&!a.mobile.touchOverflowZoomEnabled&&b();a.mobile._registerInternalEvents();a(function(){e.scrollTo(0,1);a.mobile.defaultHomeScroll=!a.support.scrollTop||a(e).scrollTop()===1?0:1;a.mobile.autoInitializePage&&a.mobile.initializePage();f.load(a.mobile.silentScroll)})}})(jQuery,this);
diff --git a/res/Map/map.html b/res/Map/map.html
new file mode 100644 (file)
index 0000000..f3683cd
--- /dev/null
@@ -0,0 +1,44 @@
+<!--\r
+  * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.\r
+  *\r
+  * This program is licensed under the terms and conditions of the\r
+  * Apache License, version 2.0.  The full text of the Apache License is at\r
+  * http://www.apache.org/licenses/LICENSE-2.0\r
+  *\r
+-->\r
+\r
+<!DOCTYPE html>\r
+<html lang="ja">\r
+       <head>\r
+               <meta charset="UTF-8">\r
+               <meta name="viewport" content="initial-scale=1.0, user-scalable=no">\r
+               <link rel="stylesheet" href="./css/jquery.mobile-1.0.min.css">\r
+               <link rel="stylesheet" href="./css/navi.css">\r
+               <script src="http://maps.google.com/maps/api/js?sensor=false"></script>\r
+               <script type="text/javascript" src="./lib/jquery-1.6.4.min.js"></script>\r
+               <script type="text/javascript" src="./lib/jquery.mobile-1.0.min.js"></script>\r
+               <script type="text/javascript" src="./lib/CarInfoKeydef.js"></script>\r
+               <script type="text/javascript" src="./js/navi_defines.js"></script>\r
+               <script type="text/javascript" src="./js/navi_route.js"></script>\r
+               <script type="text/javascript" src="./js/nativeapp_accessor.js"></script>\r
+               <script type="text/javascript" src="./js/navi.js"></script>\r
+               <script>\r
+                       var map;\r
+                       \r
+                       function initialize() {\r
+                               map = new Navigation();\r
+                               map.initialize();\r
+                       }\r
+                       \r
+                       function finalize() {\r
+                               map.finalize();\r
+                       }\r
+               </script>\r
+       </head>\r
+       <body onload="initialize()" unload="finalize()">\r
+               <div data-role="content" class="base"  data-theme="a" style="margin:0px; padding:0px">\r
+                       <!-- Map Area -->\r
+                       <div class="map_area" id="map_canvas"></div>\r
+               </div>\r
+       </body>\r
+</html>\r
diff --git a/res/config.txt b/res/config.txt
new file mode 100644 (file)
index 0000000..e9a0a61
--- /dev/null
@@ -0,0 +1,9 @@
+#Name           Path Name                                   Interface Name               Property Name
+#----------------------------------------------------------------------------------------------------------
+# Latitude       /org/automotive/runningstatus/location      org.automotive.location      Latitude
+# Longitude      /org/automotive/runningstatus/location      org.automotive.location      Longitude
+# Direction      /org/automotive/runningstatus/location      org.automotive.location      Direction
+ VehicleSpeed   /org/automotive/runningstatus/vehicleSpeed  org.automotive.vehicleSpeed  VehicleSpeed
+ Latitude       /org/automotive/custom/Latitude             org.automotive.Latitude      Latitude 
+ Longitude      /org/automotive/custom/Longitude            org.automotive.Longitude     Longitude 
+ Direction      /org/automotive/custom/Direction            org.automotive.Direction     Direction
diff --git a/res/icons/default/small/org.tizen.ico.app-samplenavi.png b/res/icons/default/small/org.tizen.ico.app-samplenavi.png
new file mode 100644 (file)
index 0000000..d55b69f
Binary files /dev/null and b/res/icons/default/small/org.tizen.ico.app-samplenavi.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_0c.png b/res/images/Meter/Meters_SpeedNum_0c.png
new file mode 100755 (executable)
index 0000000..68d08b1
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_0c.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_0r.png b/res/images/Meter/Meters_SpeedNum_0r.png
new file mode 100755 (executable)
index 0000000..c9664ab
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_0r.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_1c.png b/res/images/Meter/Meters_SpeedNum_1c.png
new file mode 100755 (executable)
index 0000000..350b17e
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_1c.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_1l.png b/res/images/Meter/Meters_SpeedNum_1l.png
new file mode 100755 (executable)
index 0000000..76541f1
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_1l.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_1r.png b/res/images/Meter/Meters_SpeedNum_1r.png
new file mode 100755 (executable)
index 0000000..93229d6
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_1r.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_2c.png b/res/images/Meter/Meters_SpeedNum_2c.png
new file mode 100755 (executable)
index 0000000..21bcd3e
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_2c.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_2r.png b/res/images/Meter/Meters_SpeedNum_2r.png
new file mode 100755 (executable)
index 0000000..ac7b482
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_2r.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_3c.png b/res/images/Meter/Meters_SpeedNum_3c.png
new file mode 100755 (executable)
index 0000000..aa5b73f
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_3c.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_3r.png b/res/images/Meter/Meters_SpeedNum_3r.png
new file mode 100755 (executable)
index 0000000..1bd6cf8
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_3r.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_4c.png b/res/images/Meter/Meters_SpeedNum_4c.png
new file mode 100755 (executable)
index 0000000..6332ed5
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_4c.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_4r.png b/res/images/Meter/Meters_SpeedNum_4r.png
new file mode 100755 (executable)
index 0000000..cd181d5
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_4r.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_5c.png b/res/images/Meter/Meters_SpeedNum_5c.png
new file mode 100755 (executable)
index 0000000..1cb0d53
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_5c.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_5r.png b/res/images/Meter/Meters_SpeedNum_5r.png
new file mode 100755 (executable)
index 0000000..2e31b1b
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_5r.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_6c.png b/res/images/Meter/Meters_SpeedNum_6c.png
new file mode 100755 (executable)
index 0000000..e36400b
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_6c.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_6r.png b/res/images/Meter/Meters_SpeedNum_6r.png
new file mode 100755 (executable)
index 0000000..60e524b
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_6r.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_7c.png b/res/images/Meter/Meters_SpeedNum_7c.png
new file mode 100755 (executable)
index 0000000..c127a74
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_7c.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_7r.png b/res/images/Meter/Meters_SpeedNum_7r.png
new file mode 100755 (executable)
index 0000000..db71521
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_7r.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_8c.png b/res/images/Meter/Meters_SpeedNum_8c.png
new file mode 100755 (executable)
index 0000000..19b8e50
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_8c.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_8r.png b/res/images/Meter/Meters_SpeedNum_8r.png
new file mode 100755 (executable)
index 0000000..710da56
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_8r.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_9c.png b/res/images/Meter/Meters_SpeedNum_9c.png
new file mode 100755 (executable)
index 0000000..b4d7482
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_9c.png differ
diff --git a/res/images/Meter/Meters_SpeedNum_9r.png b/res/images/Meter/Meters_SpeedNum_9r.png
new file mode 100755 (executable)
index 0000000..484162e
Binary files /dev/null and b/res/images/Meter/Meters_SpeedNum_9r.png differ
diff --git a/res/images/na_bt3_off.png b/res/images/na_bt3_off.png
new file mode 100644 (file)
index 0000000..700f86c
Binary files /dev/null and b/res/images/na_bt3_off.png differ
diff --git a/res/images/na_bt3_on.png b/res/images/na_bt3_on.png
new file mode 100644 (file)
index 0000000..b0831a3
Binary files /dev/null and b/res/images/na_bt3_on.png differ
diff --git a/res/images/na_goal.png b/res/images/na_goal.png
new file mode 100644 (file)
index 0000000..e3686ee
Binary files /dev/null and b/res/images/na_goal.png differ
diff --git a/res/images/na_goal_text.png b/res/images/na_goal_text.png
new file mode 100644 (file)
index 0000000..0771757
Binary files /dev/null and b/res/images/na_goal_text.png differ
diff --git a/res/images/na_pa_01.png b/res/images/na_pa_01.png
new file mode 100644 (file)
index 0000000..4f6771b
Binary files /dev/null and b/res/images/na_pa_01.png differ
diff --git a/res/images/na_pa_02.png b/res/images/na_pa_02.png
new file mode 100644 (file)
index 0000000..4b9c279
Binary files /dev/null and b/res/images/na_pa_02.png differ
diff --git a/res/images/na_pa_03.png b/res/images/na_pa_03.png
new file mode 100644 (file)
index 0000000..9f4c862
Binary files /dev/null and b/res/images/na_pa_03.png differ
diff --git a/res/images/na_pa_04.png b/res/images/na_pa_04.png
new file mode 100644 (file)
index 0000000..feb69a9
Binary files /dev/null and b/res/images/na_pa_04.png differ
diff --git a/res/images/nai_01_off.png b/res/images/nai_01_off.png
new file mode 100644 (file)
index 0000000..0a001bf
Binary files /dev/null and b/res/images/nai_01_off.png differ
diff --git a/res/images/nai_01_on.png b/res/images/nai_01_on.png
new file mode 100644 (file)
index 0000000..8fd5485
Binary files /dev/null and b/res/images/nai_01_on.png differ
diff --git a/res/images/nai_02_off.png b/res/images/nai_02_off.png
new file mode 100644 (file)
index 0000000..9cad8fc
Binary files /dev/null and b/res/images/nai_02_off.png differ
diff --git a/res/images/nai_03_off.png b/res/images/nai_03_off.png
new file mode 100644 (file)
index 0000000..cc3aadb
Binary files /dev/null and b/res/images/nai_03_off.png differ
diff --git a/res/images/nai_04_off.png b/res/images/nai_04_off.png
new file mode 100644 (file)
index 0000000..74a483f
Binary files /dev/null and b/res/images/nai_04_off.png differ
diff --git a/res/images/nai_05_off.png b/res/images/nai_05_off.png
new file mode 100644 (file)
index 0000000..e8a3406
Binary files /dev/null and b/res/images/nai_05_off.png differ
diff --git a/res/images/nai_06_off.png b/res/images/nai_06_off.png
new file mode 100644 (file)
index 0000000..15d532b
Binary files /dev/null and b/res/images/nai_06_off.png differ
diff --git a/res/images/nai_07_off.png b/res/images/nai_07_off.png
new file mode 100644 (file)
index 0000000..b04fa8b
Binary files /dev/null and b/res/images/nai_07_off.png differ
diff --git a/res/images/nai_08_off.png b/res/images/nai_08_off.png
new file mode 100644 (file)
index 0000000..799a091
Binary files /dev/null and b/res/images/nai_08_off.png differ
diff --git a/res/images/nai_09_off.png b/res/images/nai_09_off.png
new file mode 100644 (file)
index 0000000..3f85505
Binary files /dev/null and b/res/images/nai_09_off.png differ
diff --git a/res/images/nai_10_off.png b/res/images/nai_10_off.png
new file mode 100644 (file)
index 0000000..298cb1e
Binary files /dev/null and b/res/images/nai_10_off.png differ
diff --git a/res/images/nai_11_off.png b/res/images/nai_11_off.png
new file mode 100644 (file)
index 0000000..4af7e96
Binary files /dev/null and b/res/images/nai_11_off.png differ
diff --git a/res/images/nai_12_off.png b/res/images/nai_12_off.png
new file mode 100644 (file)
index 0000000..1a3cb12
Binary files /dev/null and b/res/images/nai_12_off.png differ
diff --git a/res/images/nai_12_on.png b/res/images/nai_12_on.png
new file mode 100644 (file)
index 0000000..29bc1b5
Binary files /dev/null and b/res/images/nai_12_on.png differ
diff --git a/res/images/sg_l_01.png b/res/images/sg_l_01.png
new file mode 100644 (file)
index 0000000..aff54fa
Binary files /dev/null and b/res/images/sg_l_01.png differ
diff --git a/res/images/sg_l_02.png b/res/images/sg_l_02.png
new file mode 100644 (file)
index 0000000..4b98d33
Binary files /dev/null and b/res/images/sg_l_02.png differ
diff --git a/res/images/sg_l_03.png b/res/images/sg_l_03.png
new file mode 100644 (file)
index 0000000..395dae8
Binary files /dev/null and b/res/images/sg_l_03.png differ
diff --git a/res/images/sg_l_04.png b/res/images/sg_l_04.png
new file mode 100644 (file)
index 0000000..395dae8
Binary files /dev/null and b/res/images/sg_l_04.png differ
diff --git a/res/images/sg_l_05.png b/res/images/sg_l_05.png
new file mode 100644 (file)
index 0000000..55fa616
Binary files /dev/null and b/res/images/sg_l_05.png differ
diff --git a/res/images/sg_l_06.png b/res/images/sg_l_06.png
new file mode 100644 (file)
index 0000000..0cd50bc
Binary files /dev/null and b/res/images/sg_l_06.png differ
diff --git a/res/images/sg_l_07.png b/res/images/sg_l_07.png
new file mode 100644 (file)
index 0000000..aff54fa
Binary files /dev/null and b/res/images/sg_l_07.png differ
diff --git a/res/images/sg_l_08.png b/res/images/sg_l_08.png
new file mode 100644 (file)
index 0000000..58c5300
Binary files /dev/null and b/res/images/sg_l_08.png differ
diff --git a/res/images/sg_m_01.png b/res/images/sg_m_01.png
new file mode 100644 (file)
index 0000000..ef5f61f
Binary files /dev/null and b/res/images/sg_m_01.png differ
diff --git a/res/images/sg_m_02.png b/res/images/sg_m_02.png
new file mode 100644 (file)
index 0000000..f7f2d1c
Binary files /dev/null and b/res/images/sg_m_02.png differ
diff --git a/res/images/sg_m_03.png b/res/images/sg_m_03.png
new file mode 100644 (file)
index 0000000..6f206a6
Binary files /dev/null and b/res/images/sg_m_03.png differ
diff --git a/res/images/sg_m_04.png b/res/images/sg_m_04.png
new file mode 100644 (file)
index 0000000..6f206a6
Binary files /dev/null and b/res/images/sg_m_04.png differ
diff --git a/res/images/sg_m_05.png b/res/images/sg_m_05.png
new file mode 100644 (file)
index 0000000..fcf127a
Binary files /dev/null and b/res/images/sg_m_05.png differ
diff --git a/res/images/sg_m_06.png b/res/images/sg_m_06.png
new file mode 100644 (file)
index 0000000..9137892
Binary files /dev/null and b/res/images/sg_m_06.png differ
diff --git a/res/images/sg_m_07.png b/res/images/sg_m_07.png
new file mode 100644 (file)
index 0000000..ef5f61f
Binary files /dev/null and b/res/images/sg_m_07.png differ
diff --git a/res/images/sg_m_08.png b/res/images/sg_m_08.png
new file mode 100644 (file)
index 0000000..b115bb9
Binary files /dev/null and b/res/images/sg_m_08.png differ
diff --git a/res/images/test_cameraview.png b/res/images/test_cameraview.png
new file mode 100644 (file)
index 0000000..cc58721
Binary files /dev/null and b/res/images/test_cameraview.png differ
diff --git a/res/images/test_map2.png b/res/images/test_map2.png
new file mode 100644 (file)
index 0000000..1f97a57
Binary files /dev/null and b/res/images/test_map2.png differ
diff --git a/res/landmark.csv b/res/landmark.csv
new file mode 100644 (file)
index 0000000..f4254c9
--- /dev/null
@@ -0,0 +1,196 @@
+139.400453,35.479734,0
+139.400134,35.479849,1
+139.40004,35.480306,2
+139.399847,35.480227,3
+139.399785,35.480044,4
+139.399724,35.480221,5
+139.399606,35.480247,6
+139.399522,35.480258,7
+139.399488,35.480094,8
+139.39938,35.480122,9
+139.399235,35.480116,10
+139.399085,35.480188,11
+139.399133,35.480399,12
+139.399152,35.480461,13
+139.399305,35.480561,14
+139.39912,35.480662,15
+139.39902663230896,35.48200723745556,12
+139.39897298812866,35.48231301325423,8
+139.39918756484985,35.482985715916755,13
+139.3991982936859,35.4836846218105,8
+139.3987262248993,35.483964182466345,4
+139.39776062965393,35.48384187479905,8
+139.3966555595398,35.48436604920551,9
+139.3962264060974,35.48459319038668,9
+139.39759969711304,35.48612200855856,0
+139.3989086151123,35.48717032421105,7
+139.39924120903015,35.4883933418556,8
+139.40138697624207,35.49182642763903,2
+139.4017732143402,35.492446638689685,7
+139.4022023677826,35.493957837120924,13
+139.4025456905365,35.49470032304644,14
+139.40430521965027,35.49658707993647,3
+139.40493822097778,35.49720725423784,15
+139.40645098686218,35.49774007622237,11
+139.40677285194397,35.49877077101455,12
+139.40750241279602,35.498779505659655,3
+139.4086503982544,35.49989753239346,3
+139.40882205963135,35.50025564704112,13
+139.40823197364807,35.500482743307515,10
+139.40868258476257,35.5006137600922,8
+139.4096803665161,35.50083212092516,4
+139.40945506095886,35.50160074633476,12
+139.40995931625366,35.50191518188235,0
+139.41017389297485,35.50236936438911,10
+139.41080689430237,35.50372316239306,8
+139.41116094589233,35.504194802789456,3
+139.41083908081055,35.504500494159615,3
+139.41104292869568,35.50477124840149,7
+139.41147208213806,35.504456824035096,15
+139.4112253189087,35.50518174502718,9
+139.41240549087524,35.50579311909074,15
+139.41189050674438,35.505906659475826,15
+139.41272735595703,35.50693724947592,2
+139.4138216972351,35.5080638962925,3
+139.41536664962769,35.50894598858126,14
+139.4156563282013,35.50968833596895,3
+139.41603183746338,35.50995033929075,4
+139.41660046577454,35.50984553806462,8
+139.4167721271515,35.510718877436176,3
+139.41699743270874,35.5109983440289,3
+139.41805958747864,35.51115554355984,4
+139.41787719726562,35.51174067244238,3
+139.41838145256042,35.511618407058144,6
+139.4189178943634,35.51212493386643,10
+139.41840291023254,35.51223846529889,1
+139.41916465759277,35.51233453023172,4
+139.41895008087158,35.51278865381274,12
+139.41964745521545,35.5128497856371,5
+139.41944360733032,35.51313797789646,8
+139.42015171051025,35.513207842530804,14
+139.4202160835266,35.51383662150421,8
+139.42139625549316,35.51460512245079,5
+139.42252278327942,35.51691058115202,1
+139.42275881767273,35.517460737647866,3
+139.42339181900024,35.518700759097264,0
+139.42314505577087,35.5191810439487,11
+139.42339181900024,35.51976611433961,11
+139.42434668540955,35.520517093964465,7
+139.42397117614746,35.521023564627896,4
+139.42463636398315,35.5223071914777,5
+139.42479729652405,35.52168721100457,3
+139.42517280578613,35.522429440583196,14
+139.42564487457275,35.52447271949424,1
+139.42583799362183,35.52384402383153,3
+139.42604184150696,35.52509267844978,9
+139.42640662193298,35.5256253154176,10
+139.42678213119507,35.52617541218159,10
+139.4278872013092,35.52801777229219,9
+139.4272005558014,35.52744149358103,5
+139.4292175769806,35.529266361968546,13
+139.42955017089844,35.52958942046918,1
+139.43032264709473,35.53038396422107,11
+139.4315779209137,35.53021807112056,14
+139.4326937198639,35.53163251707745,1
+139.4330906867981,35.53087291031153,15
+139.4347858428955,35.53252308136877,15
+139.43576216697693,35.53319536355055,11
+139.43470001220703,35.53337871225879,6
+139.43406701087952,35.53371921589094,9
+139.4367492198944,35.534635949255815,9
+139.43809032440186,35.534042256462456,13
+139.43675994873047,35.53410337209993,2
+139.43715691566467,35.53576220733455,3
+139.43562269210815,35.53623365950984,5
+139.43554759025574,35.53735989515744,7
+139.4351077079773,35.5376916514805,13
+139.43374514579773,35.538337699329844,4
+139.4342815876007,35.53862580007154,5
+139.43340182304382,35.538651990996755,10
+139.4335949420929,35.53927184039707,13
+139.4330906867981,35.53983057377969,7
+139.43243622779846,35.539699620992344,6
+139.4320821762085,35.54021470072249,0
+139.43214654922485,35.54083453804631,2
+139.43132042884827,35.54084326811527,8
+139.429829120636,35.543095594153826,0
+139.4296145439148,35.54236228564389,6
+139.43122386932373,35.541794839933374,12
+139.431631565094,35.54155040054392,5
+139.43076252937317,35.54223133699012,15
+139.43090200424194,35.54288607812087,9
+139.43189978599548,35.544824080540316,5
+139.43243622779846,35.544509813059236,8
+139.4335412979126,35.54577560512609,4
+139.43312287330627,35.54558355520169,3
+139.43679213523865,35.54725961176013,14
+139.4371461868286,35.547713537715914,0
+139.4374680519104,35.54830712931927,5
+139.43679213523865,35.548298400062805,4
+139.4382405281067,35.54979981819631,7
+139.43893790245056,35.55096950818843,3
+139.43886280059814,35.5515979912856,3
+139.44035410881042,35.55193841757284,12
+139.43942070007324,35.552287571237635,11
+139.44077253341675,35.55281129888372,5
+139.44196343421936,35.55299460275155,3
+139.44316506385803,35.553684170690815,3
+139.44249987602234,35.553221549816755,15
+139.44286465644836,35.554129331652966,12
+139.44348692893982,35.554478475775916,1
+139.44398045539856,35.55474906142526,15
+139.44478511810303,35.5554037003475,14
+139.44716691970825,35.55672169049401,5
+139.44899082183838,35.55690498542044,1
+139.44923758506775,35.5575246937343,4
+139.4480574131012,35.55728903057388,6
+139.44862604141235,35.55923541294279,6
+139.44812178611755,35.55963690297704,1
+139.448561668396,35.56024786221378,13
+139.44752097129822,35.56054461216262,5
+139.4472312927246,35.561094469457814,1
+139.44583654403687,35.5619585232998,9
+139.44590091705322,35.56256946483868,2
+139.44514989852905,35.56246473233421,3
+139.4444739818573,35.56339859233485,13
+139.44438815116882,35.56386988203512,2
+139.4448173046112,35.56393097494148,15
+139.44507479667664,35.56365169270362,8
+139.44477438926697,35.56544955507477,9
+139.4446349143982,35.566269925472874,1
+139.44262862205505,35.56944659969592,13
+139.44254279136658,35.57010111857132,5
+139.44257497787476,35.57072945166124,13
+139.4426393508911,35.57121815176875,0
+139.44333672523499,35.57131414608242,1
+139.44332599639893,35.57006621103294,2
+139.4437873363495,35.572448615622804,6
+139.44347620010376,35.57304202405987,7
+139.44972038269043,35.575808296558876,10
+139.44907665252686,35.58498779706591,4
+139.449645280838,35.58492672021657,0
+139.45004224777222,35.5862093242696,4
+139.44939851760864,35.58619187401218,13
+139.4502353668213,35.58600864607965,9
+139.45084691047668,35.58810265460802,12
+139.4502353668213,35.58832077734695,6
+139.44799304008484,35.5949863216774,15
+139.44831490516663,35.59542252905111,14
+139.44798231124878,35.59581511365497,3
+139.44734930992126,35.59678348077855,6
+139.44701671600342,35.597394156724555,15
+139.44650173187256,35.59857187574825,0
+139.4462764263153,35.59915636690306,14
+139.44594383239746,35.599575104210366,7
+139.44606184959412,35.60099704996407,4
+139.4451928138733,35.6017559922643,7
+139.44514989852905,35.60236663026901,0
+139.4457185268402,35.60281152073829,10
+139.4454288482666,35.603867035289475,14
+139.4445812702179,35.604495103456486,7
+139.44390535354614,35.60634438665354,2
+139.4442915916443,35.60664968873113,8
+139.4437336921692,35.608115122487156,1
+139.4428539276123,35.608996114385846,15
+139.44376587867737,35.61185709047331,12
+139.44612622261047,35.61216237151433,11
diff --git a/res/landmark1.csv b/res/landmark1.csv
new file mode 100644 (file)
index 0000000..f4254c9
--- /dev/null
@@ -0,0 +1,196 @@
+139.400453,35.479734,0
+139.400134,35.479849,1
+139.40004,35.480306,2
+139.399847,35.480227,3
+139.399785,35.480044,4
+139.399724,35.480221,5
+139.399606,35.480247,6
+139.399522,35.480258,7
+139.399488,35.480094,8
+139.39938,35.480122,9
+139.399235,35.480116,10
+139.399085,35.480188,11
+139.399133,35.480399,12
+139.399152,35.480461,13
+139.399305,35.480561,14
+139.39912,35.480662,15
+139.39902663230896,35.48200723745556,12
+139.39897298812866,35.48231301325423,8
+139.39918756484985,35.482985715916755,13
+139.3991982936859,35.4836846218105,8
+139.3987262248993,35.483964182466345,4
+139.39776062965393,35.48384187479905,8
+139.3966555595398,35.48436604920551,9
+139.3962264060974,35.48459319038668,9
+139.39759969711304,35.48612200855856,0
+139.3989086151123,35.48717032421105,7
+139.39924120903015,35.4883933418556,8
+139.40138697624207,35.49182642763903,2
+139.4017732143402,35.492446638689685,7
+139.4022023677826,35.493957837120924,13
+139.4025456905365,35.49470032304644,14
+139.40430521965027,35.49658707993647,3
+139.40493822097778,35.49720725423784,15
+139.40645098686218,35.49774007622237,11
+139.40677285194397,35.49877077101455,12
+139.40750241279602,35.498779505659655,3
+139.4086503982544,35.49989753239346,3
+139.40882205963135,35.50025564704112,13
+139.40823197364807,35.500482743307515,10
+139.40868258476257,35.5006137600922,8
+139.4096803665161,35.50083212092516,4
+139.40945506095886,35.50160074633476,12
+139.40995931625366,35.50191518188235,0
+139.41017389297485,35.50236936438911,10
+139.41080689430237,35.50372316239306,8
+139.41116094589233,35.504194802789456,3
+139.41083908081055,35.504500494159615,3
+139.41104292869568,35.50477124840149,7
+139.41147208213806,35.504456824035096,15
+139.4112253189087,35.50518174502718,9
+139.41240549087524,35.50579311909074,15
+139.41189050674438,35.505906659475826,15
+139.41272735595703,35.50693724947592,2
+139.4138216972351,35.5080638962925,3
+139.41536664962769,35.50894598858126,14
+139.4156563282013,35.50968833596895,3
+139.41603183746338,35.50995033929075,4
+139.41660046577454,35.50984553806462,8
+139.4167721271515,35.510718877436176,3
+139.41699743270874,35.5109983440289,3
+139.41805958747864,35.51115554355984,4
+139.41787719726562,35.51174067244238,3
+139.41838145256042,35.511618407058144,6
+139.4189178943634,35.51212493386643,10
+139.41840291023254,35.51223846529889,1
+139.41916465759277,35.51233453023172,4
+139.41895008087158,35.51278865381274,12
+139.41964745521545,35.5128497856371,5
+139.41944360733032,35.51313797789646,8
+139.42015171051025,35.513207842530804,14
+139.4202160835266,35.51383662150421,8
+139.42139625549316,35.51460512245079,5
+139.42252278327942,35.51691058115202,1
+139.42275881767273,35.517460737647866,3
+139.42339181900024,35.518700759097264,0
+139.42314505577087,35.5191810439487,11
+139.42339181900024,35.51976611433961,11
+139.42434668540955,35.520517093964465,7
+139.42397117614746,35.521023564627896,4
+139.42463636398315,35.5223071914777,5
+139.42479729652405,35.52168721100457,3
+139.42517280578613,35.522429440583196,14
+139.42564487457275,35.52447271949424,1
+139.42583799362183,35.52384402383153,3
+139.42604184150696,35.52509267844978,9
+139.42640662193298,35.5256253154176,10
+139.42678213119507,35.52617541218159,10
+139.4278872013092,35.52801777229219,9
+139.4272005558014,35.52744149358103,5
+139.4292175769806,35.529266361968546,13
+139.42955017089844,35.52958942046918,1
+139.43032264709473,35.53038396422107,11
+139.4315779209137,35.53021807112056,14
+139.4326937198639,35.53163251707745,1
+139.4330906867981,35.53087291031153,15
+139.4347858428955,35.53252308136877,15
+139.43576216697693,35.53319536355055,11
+139.43470001220703,35.53337871225879,6
+139.43406701087952,35.53371921589094,9
+139.4367492198944,35.534635949255815,9
+139.43809032440186,35.534042256462456,13
+139.43675994873047,35.53410337209993,2
+139.43715691566467,35.53576220733455,3
+139.43562269210815,35.53623365950984,5
+139.43554759025574,35.53735989515744,7
+139.4351077079773,35.5376916514805,13
+139.43374514579773,35.538337699329844,4
+139.4342815876007,35.53862580007154,5
+139.43340182304382,35.538651990996755,10
+139.4335949420929,35.53927184039707,13
+139.4330906867981,35.53983057377969,7
+139.43243622779846,35.539699620992344,6
+139.4320821762085,35.54021470072249,0
+139.43214654922485,35.54083453804631,2
+139.43132042884827,35.54084326811527,8
+139.429829120636,35.543095594153826,0
+139.4296145439148,35.54236228564389,6
+139.43122386932373,35.541794839933374,12
+139.431631565094,35.54155040054392,5
+139.43076252937317,35.54223133699012,15
+139.43090200424194,35.54288607812087,9
+139.43189978599548,35.544824080540316,5
+139.43243622779846,35.544509813059236,8
+139.4335412979126,35.54577560512609,4
+139.43312287330627,35.54558355520169,3
+139.43679213523865,35.54725961176013,14
+139.4371461868286,35.547713537715914,0
+139.4374680519104,35.54830712931927,5
+139.43679213523865,35.548298400062805,4
+139.4382405281067,35.54979981819631,7
+139.43893790245056,35.55096950818843,3
+139.43886280059814,35.5515979912856,3
+139.44035410881042,35.55193841757284,12
+139.43942070007324,35.552287571237635,11
+139.44077253341675,35.55281129888372,5
+139.44196343421936,35.55299460275155,3
+139.44316506385803,35.553684170690815,3
+139.44249987602234,35.553221549816755,15
+139.44286465644836,35.554129331652966,12
+139.44348692893982,35.554478475775916,1
+139.44398045539856,35.55474906142526,15
+139.44478511810303,35.5554037003475,14
+139.44716691970825,35.55672169049401,5
+139.44899082183838,35.55690498542044,1
+139.44923758506775,35.5575246937343,4
+139.4480574131012,35.55728903057388,6
+139.44862604141235,35.55923541294279,6
+139.44812178611755,35.55963690297704,1
+139.448561668396,35.56024786221378,13
+139.44752097129822,35.56054461216262,5
+139.4472312927246,35.561094469457814,1
+139.44583654403687,35.5619585232998,9
+139.44590091705322,35.56256946483868,2
+139.44514989852905,35.56246473233421,3
+139.4444739818573,35.56339859233485,13
+139.44438815116882,35.56386988203512,2
+139.4448173046112,35.56393097494148,15
+139.44507479667664,35.56365169270362,8
+139.44477438926697,35.56544955507477,9
+139.4446349143982,35.566269925472874,1
+139.44262862205505,35.56944659969592,13
+139.44254279136658,35.57010111857132,5
+139.44257497787476,35.57072945166124,13
+139.4426393508911,35.57121815176875,0
+139.44333672523499,35.57131414608242,1
+139.44332599639893,35.57006621103294,2
+139.4437873363495,35.572448615622804,6
+139.44347620010376,35.57304202405987,7
+139.44972038269043,35.575808296558876,10
+139.44907665252686,35.58498779706591,4
+139.449645280838,35.58492672021657,0
+139.45004224777222,35.5862093242696,4
+139.44939851760864,35.58619187401218,13
+139.4502353668213,35.58600864607965,9
+139.45084691047668,35.58810265460802,12
+139.4502353668213,35.58832077734695,6
+139.44799304008484,35.5949863216774,15
+139.44831490516663,35.59542252905111,14
+139.44798231124878,35.59581511365497,3
+139.44734930992126,35.59678348077855,6
+139.44701671600342,35.597394156724555,15
+139.44650173187256,35.59857187574825,0
+139.4462764263153,35.59915636690306,14
+139.44594383239746,35.599575104210366,7
+139.44606184959412,35.60099704996407,4
+139.4451928138733,35.6017559922643,7
+139.44514989852905,35.60236663026901,0
+139.4457185268402,35.60281152073829,10
+139.4454288482666,35.603867035289475,14
+139.4445812702179,35.604495103456486,7
+139.44390535354614,35.60634438665354,2
+139.4442915916443,35.60664968873113,8
+139.4437336921692,35.608115122487156,1
+139.4428539276123,35.608996114385846,15
+139.44376587867737,35.61185709047331,12
+139.44612622261047,35.61216237151433,11
diff --git a/res/landmark2.csv b/res/landmark2.csv
new file mode 100644 (file)
index 0000000..f4254c9
--- /dev/null
@@ -0,0 +1,196 @@
+139.400453,35.479734,0
+139.400134,35.479849,1
+139.40004,35.480306,2
+139.399847,35.480227,3
+139.399785,35.480044,4
+139.399724,35.480221,5
+139.399606,35.480247,6
+139.399522,35.480258,7
+139.399488,35.480094,8
+139.39938,35.480122,9
+139.399235,35.480116,10
+139.399085,35.480188,11
+139.399133,35.480399,12
+139.399152,35.480461,13
+139.399305,35.480561,14
+139.39912,35.480662,15
+139.39902663230896,35.48200723745556,12
+139.39897298812866,35.48231301325423,8
+139.39918756484985,35.482985715916755,13
+139.3991982936859,35.4836846218105,8
+139.3987262248993,35.483964182466345,4
+139.39776062965393,35.48384187479905,8
+139.3966555595398,35.48436604920551,9
+139.3962264060974,35.48459319038668,9
+139.39759969711304,35.48612200855856,0
+139.3989086151123,35.48717032421105,7
+139.39924120903015,35.4883933418556,8
+139.40138697624207,35.49182642763903,2
+139.4017732143402,35.492446638689685,7
+139.4022023677826,35.493957837120924,13
+139.4025456905365,35.49470032304644,14
+139.40430521965027,35.49658707993647,3
+139.40493822097778,35.49720725423784,15
+139.40645098686218,35.49774007622237,11
+139.40677285194397,35.49877077101455,12
+139.40750241279602,35.498779505659655,3
+139.4086503982544,35.49989753239346,3
+139.40882205963135,35.50025564704112,13
+139.40823197364807,35.500482743307515,10
+139.40868258476257,35.5006137600922,8
+139.4096803665161,35.50083212092516,4
+139.40945506095886,35.50160074633476,12
+139.40995931625366,35.50191518188235,0
+139.41017389297485,35.50236936438911,10
+139.41080689430237,35.50372316239306,8
+139.41116094589233,35.504194802789456,3
+139.41083908081055,35.504500494159615,3
+139.41104292869568,35.50477124840149,7
+139.41147208213806,35.504456824035096,15
+139.4112253189087,35.50518174502718,9
+139.41240549087524,35.50579311909074,15
+139.41189050674438,35.505906659475826,15
+139.41272735595703,35.50693724947592,2
+139.4138216972351,35.5080638962925,3
+139.41536664962769,35.50894598858126,14
+139.4156563282013,35.50968833596895,3
+139.41603183746338,35.50995033929075,4
+139.41660046577454,35.50984553806462,8
+139.4167721271515,35.510718877436176,3
+139.41699743270874,35.5109983440289,3
+139.41805958747864,35.51115554355984,4
+139.41787719726562,35.51174067244238,3
+139.41838145256042,35.511618407058144,6
+139.4189178943634,35.51212493386643,10
+139.41840291023254,35.51223846529889,1
+139.41916465759277,35.51233453023172,4
+139.41895008087158,35.51278865381274,12
+139.41964745521545,35.5128497856371,5
+139.41944360733032,35.51313797789646,8
+139.42015171051025,35.513207842530804,14
+139.4202160835266,35.51383662150421,8
+139.42139625549316,35.51460512245079,5
+139.42252278327942,35.51691058115202,1
+139.42275881767273,35.517460737647866,3
+139.42339181900024,35.518700759097264,0
+139.42314505577087,35.5191810439487,11
+139.42339181900024,35.51976611433961,11
+139.42434668540955,35.520517093964465,7
+139.42397117614746,35.521023564627896,4
+139.42463636398315,35.5223071914777,5
+139.42479729652405,35.52168721100457,3
+139.42517280578613,35.522429440583196,14
+139.42564487457275,35.52447271949424,1
+139.42583799362183,35.52384402383153,3
+139.42604184150696,35.52509267844978,9
+139.42640662193298,35.5256253154176,10
+139.42678213119507,35.52617541218159,10
+139.4278872013092,35.52801777229219,9
+139.4272005558014,35.52744149358103,5
+139.4292175769806,35.529266361968546,13
+139.42955017089844,35.52958942046918,1
+139.43032264709473,35.53038396422107,11
+139.4315779209137,35.53021807112056,14
+139.4326937198639,35.53163251707745,1
+139.4330906867981,35.53087291031153,15
+139.4347858428955,35.53252308136877,15
+139.43576216697693,35.53319536355055,11
+139.43470001220703,35.53337871225879,6
+139.43406701087952,35.53371921589094,9
+139.4367492198944,35.534635949255815,9
+139.43809032440186,35.534042256462456,13
+139.43675994873047,35.53410337209993,2
+139.43715691566467,35.53576220733455,3
+139.43562269210815,35.53623365950984,5
+139.43554759025574,35.53735989515744,7
+139.4351077079773,35.5376916514805,13
+139.43374514579773,35.538337699329844,4
+139.4342815876007,35.53862580007154,5
+139.43340182304382,35.538651990996755,10
+139.4335949420929,35.53927184039707,13
+139.4330906867981,35.53983057377969,7
+139.43243622779846,35.539699620992344,6
+139.4320821762085,35.54021470072249,0
+139.43214654922485,35.54083453804631,2
+139.43132042884827,35.54084326811527,8
+139.429829120636,35.543095594153826,0
+139.4296145439148,35.54236228564389,6
+139.43122386932373,35.541794839933374,12
+139.431631565094,35.54155040054392,5
+139.43076252937317,35.54223133699012,15
+139.43090200424194,35.54288607812087,9
+139.43189978599548,35.544824080540316,5
+139.43243622779846,35.544509813059236,8
+139.4335412979126,35.54577560512609,4
+139.43312287330627,35.54558355520169,3
+139.43679213523865,35.54725961176013,14
+139.4371461868286,35.547713537715914,0
+139.4374680519104,35.54830712931927,5
+139.43679213523865,35.548298400062805,4
+139.4382405281067,35.54979981819631,7
+139.43893790245056,35.55096950818843,3
+139.43886280059814,35.5515979912856,3
+139.44035410881042,35.55193841757284,12
+139.43942070007324,35.552287571237635,11
+139.44077253341675,35.55281129888372,5
+139.44196343421936,35.55299460275155,3
+139.44316506385803,35.553684170690815,3
+139.44249987602234,35.553221549816755,15
+139.44286465644836,35.554129331652966,12
+139.44348692893982,35.554478475775916,1
+139.44398045539856,35.55474906142526,15
+139.44478511810303,35.5554037003475,14
+139.44716691970825,35.55672169049401,5
+139.44899082183838,35.55690498542044,1
+139.44923758506775,35.5575246937343,4
+139.4480574131012,35.55728903057388,6
+139.44862604141235,35.55923541294279,6
+139.44812178611755,35.55963690297704,1
+139.448561668396,35.56024786221378,13
+139.44752097129822,35.56054461216262,5
+139.4472312927246,35.561094469457814,1
+139.44583654403687,35.5619585232998,9
+139.44590091705322,35.56256946483868,2
+139.44514989852905,35.56246473233421,3
+139.4444739818573,35.56339859233485,13
+139.44438815116882,35.56386988203512,2
+139.4448173046112,35.56393097494148,15
+139.44507479667664,35.56365169270362,8
+139.44477438926697,35.56544955507477,9
+139.4446349143982,35.566269925472874,1
+139.44262862205505,35.56944659969592,13
+139.44254279136658,35.57010111857132,5
+139.44257497787476,35.57072945166124,13
+139.4426393508911,35.57121815176875,0
+139.44333672523499,35.57131414608242,1
+139.44332599639893,35.57006621103294,2
+139.4437873363495,35.572448615622804,6
+139.44347620010376,35.57304202405987,7
+139.44972038269043,35.575808296558876,10
+139.44907665252686,35.58498779706591,4
+139.449645280838,35.58492672021657,0
+139.45004224777222,35.5862093242696,4
+139.44939851760864,35.58619187401218,13
+139.4502353668213,35.58600864607965,9
+139.45084691047668,35.58810265460802,12
+139.4502353668213,35.58832077734695,6
+139.44799304008484,35.5949863216774,15
+139.44831490516663,35.59542252905111,14
+139.44798231124878,35.59581511365497,3
+139.44734930992126,35.59678348077855,6
+139.44701671600342,35.597394156724555,15
+139.44650173187256,35.59857187574825,0
+139.4462764263153,35.59915636690306,14
+139.44594383239746,35.599575104210366,7
+139.44606184959412,35.60099704996407,4
+139.4451928138733,35.6017559922643,7
+139.44514989852905,35.60236663026901,0
+139.4457185268402,35.60281152073829,10
+139.4454288482666,35.603867035289475,14
+139.4445812702179,35.604495103456486,7
+139.44390535354614,35.60634438665354,2
+139.4442915916443,35.60664968873113,8
+139.4437336921692,35.608115122487156,1
+139.4428539276123,35.608996114385846,15
+139.44376587867737,35.61185709047331,12
+139.44612622261047,35.61216237151433,11
diff --git a/res/landmark3.csv b/res/landmark3.csv
new file mode 100644 (file)
index 0000000..f05779c
--- /dev/null
@@ -0,0 +1,111 @@
+139.40035700798035,35.47984493254008,0
+139.40014779567719,35.47982309077956,6
+139.39997613430023,35.47984493254008,1
+139.3999707698822,35.48007208649779,0
+139.40014779567719,35.48007208649779,10
+139.40036237239838,35.48007208649779,15
+139.40056085586548,35.4798711426449,5
+139.40055549144745,35.480085191514235,0
+139.40070569515228,35.4798798793446,7
+139.4007110595703,35.48011140154069,8
+139.39983129501343,35.48014197989409,6
+139.3998098373413,35.47985803759355,11
+139.39984738826752,35.48036039636587,0
+139.3999868631363,35.480312344792985,15
+139.40016388893127,35.48032108144475,11
+139.40031945705414,35.48032544977027,6
+139.4005286693573,35.480316713118995,2
+139.40071642398834,35.48035165971838,5
+139.40072178840637,35.480578812244154,10
+139.4005286693573,35.480657441815055,7
+139.40039992332458,35.480583180555655,9
+139.4002068042755,35.480600653799335,11
+139.40005660057068,35.48061812703922,10
+139.3998795747757,35.480639968583716,2
+139.4008880853653,35.480430289511496,3
+139.40085589885712,35.48069675657165,5
+139.39969718456268,35.480692388266334,15
+139.3997186422348,35.48041718455131,1
+139.39969718456268,35.480888961771626,13
+139.39989030361176,35.48084527881199,11
+139.4000780582428,35.480801595828616,4
+139.40022826194763,35.4807928592291,9
+139.40038919448853,35.48078849092899,12
+139.40050721168518,35.480836542217226,6
+139.4006896018982,35.48081906902482,0
+139.4008719921112,35.480888961771626,1
+139.4008505344391,35.48108553479622,7
+139.40071642398834,35.48106369337276,7
+139.40049648284912,35.481059325087365,0
+139.40036237239838,35.48107679822756,3
+139.4002068042755,35.48107242994285,2
+139.4000780582428,35.481089903080196,6
+139.39992785453796,35.481094271363915,12
+139.3997722864151,35.481094271363915,1
+139.39979374408722,35.48128647561338,6
+139.39994394779205,35.48128210734007,4
+139.40010488033295,35.481295212159246,1
+139.4002389907837,35.481295212159246,1
+139.40039455890656,35.481317053519774,12
+139.40053403377533,35.481299580431816,10
+139.40066277980804,35.48130831697628,9
+139.40081298351288,35.48128647561338,5
+139.401016831398,35.48108116651199,4
+139.40103828907013,35.480950117875224,4
+139.40102756023407,35.48076228112329,12
+139.40100073814392,35.48130831697628,9
+139.39964354038239,35.481303948704166,2
+139.39960598945618,35.48110737621372,2
+139.39956843852997,35.48091953982924,13
+139.39955234527588,35.4807185980948,9
+139.40117239952087,35.48097632761967,10
+139.40115094184875,35.48121658321221,6
+139.40111875534058,35.48141315543558,15
+139.3994504213333,35.481369472760825,3
+139.3994826078415,35.4811903735461,15
+139.39947187900543,35.48096759103915,1
+139.39948797225952,35.481557308093876,1
+139.39963281154633,35.481517993758175,7
+139.39981520175934,35.481517993758175,6
+139.39996540546417,35.48150925723651,9
+139.4001317024231,35.48150488897531,6
+139.4002765417099,35.48150488897531,14
+139.40043210983276,35.48152236201864,11
+139.40055549144745,35.48153109853888,6
+139.40069496631622,35.48154857157651,10
+139.40086662769318,35.48154420331745,14
+139.39934313297272,35.481089903080196,9
+139.3993592262268,35.48131268524814,8
+139.3993377685547,35.4815747811258,0
+139.4011026620865,35.481627200198794,13
+139.40130650997162,35.481566044610325,6
+139.40127968788147,35.48141752370175,5
+139.40129041671753,35.48124279286974,2
+139.40127432346344,35.481037483656806,0
+139.39931094646454,35.48182813966185,14
+139.39946115016937,35.481736406491024,9
+139.39963817596436,35.48174077473965,10
+139.39979374408722,35.481736406491024,1
+139.3999868631363,35.481732038242185,13
+139.40014243125916,35.481749511236124,2
+139.40030336380005,35.48175824773168,12
+139.40043210983276,35.481736406491024,10
+139.40057158470154,35.48175387948402,13
+139.4007110595703,35.481766984226276,2
+139.40088272094727,35.48178445721261,8
+139.40109193325043,35.481801930195154,10
+139.4013011455536,35.48176261597909,7
+139.39933240413666,35.482037815087764,6
+139.3994826078415,35.481985396282575,9
+139.3996810913086,35.481998500987075,14
+139.39984738826752,35.48200286922143,10
+139.39999222755432,35.48200723745556,4
+139.40016388893127,35.48200286922143,12
+139.40028190612793,35.481998500987075,12
+139.40044283866882,35.48198976451765,9
+139.40055549144745,35.48198976451765,11
+139.40067887306213,35.48199413275249,15
+139.40088272094727,35.482037815087764,2
+139.40100610256195,35.482015973923104,12
+139.4012153148651,35.48200286922143,9
+139.40136015415192,35.482015973923104,7
diff --git a/res/samplenavi.conf b/res/samplenavi.conf
new file mode 100644 (file)
index 0000000..aae3af4
--- /dev/null
@@ -0,0 +1,6 @@
+USBCAMERAID=0
+LANDMARKPOSITION=-80
+LANDMARKROTATION=180
+WEBSOCKETPORT=50414
+IPADDR=127.0.0.1
+#PROXYURI=
diff --git a/soundsample_config.txt b/soundsample_config.txt
new file mode 100644 (file)
index 0000000..4e4f14b
--- /dev/null
@@ -0,0 +1,11 @@
+## audioTP Config File
+##     /opt/apps/org.tizen.ico.ico-app-soundsample/res/soundsample_config.txt
+
+[data]
+wavfile_path=/opt/apps/org.tizen.ico.app-soundsample/sounds/musicbox.wav
+server_ip=127.0.0.1
+device_name=0
+volume1=30000
+volume2=30000
+app_name=SampleSound
+stream_name=sample_sound
diff --git a/src/.deps/ico_app_soundsample-soundsample.Po b/src/.deps/ico_app_soundsample-soundsample.Po
new file mode 100644 (file)
index 0000000..f04dfa7
--- /dev/null
@@ -0,0 +1,732 @@
+ico_app_soundsample-soundsample.o: soundsample.c ../config.h \
+ /usr/include/ecore-1/Ecore.h /usr/include/eina-1/Eina.h \
+ /usr/include/eina-1/eina_config.h /usr/include/eina-1/eina/eina_types.h \
+ /usr/include/eina-1/eina_config.h /usr/include/eina-1/eina/eina_main.h \
+ /usr/include/eina-1/eina/eina_types.h /usr/include/eina-1/eina/eina_fp.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdint.h \
+ /usr/include/stdint.h /usr/include/features.h \
+ /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \
+ /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
+ /usr/include/gnu/stubs-32.h /usr/include/bits/wchar.h \
+ /usr/include/eina-1/eina/eina_inline_f32p32.x /usr/include/stdlib.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stddef.h \
+ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
+ /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/bits/byteswap.h /usr/include/sys/types.h \
+ /usr/include/bits/types.h /usr/include/bits/typesizes.h \
+ /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \
+ /usr/include/bits/sigset.h /usr/include/bits/time.h \
+ /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
+ /usr/include/alloca.h /usr/include/eina-1/eina/eina_inline_f16p16.x \
+ /usr/include/eina-1/eina/eina_inline_f8p24.x \
+ /usr/include/eina-1/eina/eina_inline_fp.x \
+ /usr/include/eina-1/eina/eina_rectangle.h \
+ /usr/include/eina-1/eina/eina_inline_rectangle.x \
+ /usr/include/eina-1/eina/eina_clist.h \
+ /usr/include/eina-1/eina/eina_inline_clist.x \
+ /usr/include/eina-1/eina/eina_inlist.h \
+ /usr/include/eina-1/eina/eina_iterator.h \
+ /usr/include/eina-1/eina/eina_magic.h \
+ /usr/include/eina-1/eina/eina_error.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdarg.h \
+ /usr/include/eina-1/eina/eina_accessor.h \
+ /usr/include/eina-1/eina/eina_file.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/limits.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/xlocale.h \
+ /usr/include/sys/stat.h /usr/include/bits/stat.h \
+ /usr/include/eina-1/eina/eina_array.h \
+ /usr/include/eina-1/eina/eina_inline_array.x /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
+ /usr/include/bits/stdio.h /usr/include/eina-1/eina/eina_list.h \
+ /usr/include/eina-1/eina/eina_inline_list.x \
+ /usr/include/eina-1/eina/eina_hash.h \
+ /usr/include/eina-1/eina/eina_inline_hash.x \
+ /usr/include/eina-1/eina/eina_trash.h \
+ /usr/include/eina-1/eina/eina_inline_trash.x \
+ /usr/include/eina-1/eina/eina_lalloc.h \
+ /usr/include/eina-1/eina/eina_module.h \
+ /usr/include/eina-1/eina/eina_mempool.h \
+ /usr/include/eina-1/eina/eina_module.h \
+ /usr/include/eina-1/eina/eina_inline_mempool.x /usr/include/string.h \
+ /usr/include/bits/string.h /usr/include/bits/string2.h \
+ /usr/include/eina-1/eina/eina_error.h \
+ /usr/include/eina-1/eina/eina_log.h \
+ /usr/include/eina-1/eina/eina_inline_log.x \
+ /usr/include/eina-1/eina/eina_inarray.h \
+ /usr/include/eina-1/eina/eina_array.h \
+ /usr/include/eina-1/eina/eina_binshare.h \
+ /usr/include/eina-1/eina/eina_stringshare.h \
+ /usr/include/eina-1/eina/eina_inline_stringshare.x \
+ /usr/include/eina-1/eina/eina_stringshare.h \
+ /usr/include/eina-1/eina/eina_ustringshare.h \
+ /usr/include/eina-1/eina/eina_unicode.h \
+ /usr/include/eina-1/eina/eina_inline_ustringshare.x \
+ /usr/include/eina-1/eina/eina_ustringshare.h \
+ /usr/include/eina-1/eina/eina_magic.h \
+ /usr/include/eina-1/eina/eina_counter.h \
+ /usr/include/eina-1/eina/eina_rbtree.h \
+ /usr/include/eina-1/eina/eina_inline_rbtree.x \
+ /usr/include/eina-1/eina/eina_accessor.h \
+ /usr/include/eina-1/eina/eina_iterator.h \
+ /usr/include/eina-1/eina/eina_benchmark.h \
+ /usr/include/eina-1/eina/eina_convert.h \
+ /usr/include/eina-1/eina/eina_fp.h /usr/include/eina-1/eina/eina_cpu.h \
+ /usr/include/eina-1/eina/eina_sched.h \
+ /usr/include/eina-1/eina/eina_tiler.h \
+ /usr/include/eina-1/eina/eina_rectangle.h \
+ /usr/include/eina-1/eina/eina_inline_tiler.x \
+ /usr/include/eina-1/eina/eina_safety_checks.h \
+ /usr/include/eina-1/eina/eina_log.h \
+ /usr/include/eina-1/eina/eina_hamster.h \
+ /usr/include/eina-1/eina/eina_matrixsparse.h \
+ /usr/include/eina-1/eina/eina_str.h \
+ /usr/include/eina-1/eina/eina_inline_str.x \
+ /usr/include/eina-1/eina/eina_strbuf.h \
+ /usr/include/eina-1/eina/eina_binbuf.h \
+ /usr/include/eina-1/eina/eina_ustrbuf.h \
+ /usr/include/eina-1/eina/eina_unicode.h \
+ /usr/include/eina-1/eina/eina_quadtree.h \
+ /usr/include/eina-1/eina/eina_inlist.h \
+ /usr/include/eina-1/eina/eina_simple_xml_parser.h \
+ /usr/include/eina-1/eina/eina_lock.h \
+ /usr/include/eina-1/eina/eina_inline_lock_posix.x /usr/include/errno.h \
+ /usr/include/bits/errno.h /usr/include/linux/errno.h \
+ /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \
+ /usr/include/asm-generic/errno-base.h /usr/include/pthread.h \
+ /usr/include/sched.h /usr/include/bits/sched.h \
+ /usr/include/bits/setjmp.h /usr/include/semaphore.h \
+ /usr/include/bits/semaphore.h /usr/include/sys/time.h \
+ /usr/include/eina-1/eina/eina_prefix.h \
+ /usr/include/eina-1/eina/eina_refcount.h \
+ /usr/include/eina-1/eina/eina_mmap.h \
+ /usr/include/eina-1/eina/eina_xattr.h \
+ /usr/include/eina-1/eina/eina_value.h \
+ /usr/include/eina-1/eina/eina_inarray.h \
+ /usr/include/eina-1/eina/eina_list.h \
+ /usr/include/eina-1/eina/eina_hash.h \
+ /usr/include/eina-1/eina/eina_inline_value.x /usr/include/signal.h \
+ /usr/include/bits/signum.h /usr/include/bits/siginfo.h \
+ /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h \
+ /usr/include/asm/sigcontext.h /usr/include/linux/types.h \
+ /usr/include/asm/types.h /usr/include/asm-generic/types.h \
+ /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \
+ /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \
+ /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \
+ /usr/include/asm/posix_types_32.h /usr/include/asm-generic/posix_types.h \
+ /usr/include/bits/sigstack.h /usr/include/sys/ucontext.h \
+ /usr/include/bits/sigthread.h /usr/include/ecore-1/Ecore_Evas.h \
+ /usr/include/evas-1/Evas.h /usr/include/ecore-1/Ecore_Getopt.h \
+ /usr/include/ecore-1/Ecore_Input.h /usr/include/inttypes.h \
+ /usr/include/unistd.h /usr/include/bits/posix_opt.h \
+ /usr/include/bits/environments.h /usr/include/bits/confname.h \
+ /usr/include/getopt.h /usr/include/glib-2.0/glib.h \
+ /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \
+ /usr/lib/glib-2.0/include/glibconfig.h \
+ /usr/include/glib-2.0/glib/gmacros.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/float.h \
+ /usr/include/glib-2.0/glib/gversionmacros.h \
+ /usr/include/glib-2.0/glib/garray.h \
+ /usr/include/glib-2.0/glib/gasyncqueue.h \
+ /usr/include/glib-2.0/glib/gthread.h \
+ /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \
+ /usr/include/glib-2.0/glib/gquark.h \
+ /usr/include/glib-2.0/glib/gbacktrace.h \
+ /usr/include/glib-2.0/glib/gbase64.h \
+ /usr/include/glib-2.0/glib/gbitlock.h \
+ /usr/include/glib-2.0/glib/gbookmarkfile.h \
+ /usr/include/glib-2.0/glib/gbytes.h \
+ /usr/include/glib-2.0/glib/gcharset.h \
+ /usr/include/glib-2.0/glib/gchecksum.h \
+ /usr/include/glib-2.0/glib/gconvert.h \
+ /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \
+ /usr/include/glib-2.0/glib/gdatetime.h \
+ /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \
+ /usr/include/glib-2.0/glib/genviron.h \
+ /usr/include/glib-2.0/glib/gfileutils.h \
+ /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \
+ /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \
+ /usr/include/glib-2.0/glib/ghmac.h \
+ /usr/include/glib-2.0/glib/gchecksum.h \
+ /usr/include/glib-2.0/glib/ghook.h \
+ /usr/include/glib-2.0/glib/ghostutils.h \
+ /usr/include/glib-2.0/glib/giochannel.h \
+ /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \
+ /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \
+ /usr/include/glib-2.0/glib/gunicode.h \
+ /usr/include/glib-2.0/glib/gutils.h \
+ /usr/include/glib-2.0/glib/gkeyfile.h \
+ /usr/include/glib-2.0/glib/gmappedfile.h \
+ /usr/include/glib-2.0/glib/gmarkup.h \
+ /usr/include/glib-2.0/glib/gmessages.h \
+ /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/goption.h \
+ /usr/include/glib-2.0/glib/gpattern.h \
+ /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \
+ /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \
+ /usr/include/glib-2.0/glib/gregex.h \
+ /usr/include/glib-2.0/glib/gscanner.h \
+ /usr/include/glib-2.0/glib/gsequence.h \
+ /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \
+ /usr/include/glib-2.0/glib/gspawn.h \
+ /usr/include/glib-2.0/glib/gstrfuncs.h \
+ /usr/include/glib-2.0/glib/gstringchunk.h \
+ /usr/include/glib-2.0/glib/gtestutils.h \
+ /usr/include/glib-2.0/glib/gthreadpool.h \
+ /usr/include/glib-2.0/glib/gtimer.h \
+ /usr/include/glib-2.0/glib/gtrashstack.h \
+ /usr/include/glib-2.0/glib/gtree.h \
+ /usr/include/glib-2.0/glib/gurifuncs.h \
+ /usr/include/glib-2.0/glib/gvarianttype.h \
+ /usr/include/glib-2.0/glib/gvariant.h \
+ /usr/include/glib-2.0/glib/gversion.h \
+ /usr/include/glib-2.0/glib/deprecated/gallocator.h \
+ /usr/include/glib-2.0/glib/deprecated/gcache.h \
+ /usr/include/glib-2.0/glib/deprecated/gcompletion.h \
+ /usr/include/glib-2.0/glib/deprecated/gmain.h \
+ /usr/include/glib-2.0/glib/deprecated/grel.h \
+ /usr/include/glib-2.0/glib/deprecated/gthread.h app_log.h \
+ /usr/include/ico-appfw/ico_apf_log.h /usr/include/ico-appfw/ico_apf.h \
+ /usr/include/ico-appfw/ico_apf_resource_control.h \
+ /usr/include/ico-appfw/ico_uxf_sysdef.h \
+ /usr/include/ico-appfw/ico_apf_error.h /usr/include/tizen.h \
+ /usr/include/tizen_type.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdbool.h \
+ /usr/include/tizen_error.h /usr/include/ico-appfw/ico_apf_ecore.h \
+ soundsample.h
+
+../config.h:
+
+/usr/include/ecore-1/Ecore.h:
+
+/usr/include/eina-1/Eina.h:
+
+/usr/include/eina-1/eina_config.h:
+
+/usr/include/eina-1/eina/eina_types.h:
+
+/usr/include/eina-1/eina_config.h:
+
+/usr/include/eina-1/eina/eina_main.h:
+
+/usr/include/eina-1/eina/eina_types.h:
+
+/usr/include/eina-1/eina/eina_fp.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdint.h:
+
+/usr/include/stdint.h:
+
+/usr/include/features.h:
+
+/usr/include/bits/predefs.h:
+
+/usr/include/sys/cdefs.h:
+
+/usr/include/bits/wordsize.h:
+
+/usr/include/gnu/stubs.h:
+
+/usr/include/gnu/stubs-32.h:
+
+/usr/include/bits/wchar.h:
+
+/usr/include/eina-1/eina/eina_inline_f32p32.x:
+
+/usr/include/stdlib.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stddef.h:
+
+/usr/include/bits/waitflags.h:
+
+/usr/include/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/bits/endian.h:
+
+/usr/include/bits/byteswap.h:
+
+/usr/include/sys/types.h:
+
+/usr/include/bits/types.h:
+
+/usr/include/bits/typesizes.h:
+
+/usr/include/time.h:
+
+/usr/include/sys/select.h:
+
+/usr/include/bits/select.h:
+
+/usr/include/bits/sigset.h:
+
+/usr/include/bits/time.h:
+
+/usr/include/sys/sysmacros.h:
+
+/usr/include/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/eina-1/eina/eina_inline_f16p16.x:
+
+/usr/include/eina-1/eina/eina_inline_f8p24.x:
+
+/usr/include/eina-1/eina/eina_inline_fp.x:
+
+/usr/include/eina-1/eina/eina_rectangle.h:
+
+/usr/include/eina-1/eina/eina_inline_rectangle.x:
+
+/usr/include/eina-1/eina/eina_clist.h:
+
+/usr/include/eina-1/eina/eina_inline_clist.x:
+
+/usr/include/eina-1/eina/eina_inlist.h:
+
+/usr/include/eina-1/eina/eina_iterator.h:
+
+/usr/include/eina-1/eina/eina_magic.h:
+
+/usr/include/eina-1/eina/eina_error.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdarg.h:
+
+/usr/include/eina-1/eina/eina_accessor.h:
+
+/usr/include/eina-1/eina/eina_file.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/limits.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/bits/posix1_lim.h:
+
+/usr/include/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/bits/posix2_lim.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/sys/stat.h:
+
+/usr/include/bits/stat.h:
+
+/usr/include/eina-1/eina/eina_array.h:
+
+/usr/include/eina-1/eina/eina_inline_array.x:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/include/bits/stdio_lim.h:
+
+/usr/include/bits/sys_errlist.h:
+
+/usr/include/bits/stdio.h:
+
+/usr/include/eina-1/eina/eina_list.h:
+
+/usr/include/eina-1/eina/eina_inline_list.x:
+
+/usr/include/eina-1/eina/eina_hash.h:
+
+/usr/include/eina-1/eina/eina_inline_hash.x:
+
+/usr/include/eina-1/eina/eina_trash.h:
+
+/usr/include/eina-1/eina/eina_inline_trash.x:
+
+/usr/include/eina-1/eina/eina_lalloc.h:
+
+/usr/include/eina-1/eina/eina_module.h:
+
+/usr/include/eina-1/eina/eina_mempool.h:
+
+/usr/include/eina-1/eina/eina_module.h:
+
+/usr/include/eina-1/eina/eina_inline_mempool.x:
+
+/usr/include/string.h:
+
+/usr/include/bits/string.h:
+
+/usr/include/bits/string2.h:
+
+/usr/include/eina-1/eina/eina_error.h:
+
+/usr/include/eina-1/eina/eina_log.h:
+
+/usr/include/eina-1/eina/eina_inline_log.x:
+
+/usr/include/eina-1/eina/eina_inarray.h:
+
+/usr/include/eina-1/eina/eina_array.h:
+
+/usr/include/eina-1/eina/eina_binshare.h:
+
+/usr/include/eina-1/eina/eina_stringshare.h:
+
+/usr/include/eina-1/eina/eina_inline_stringshare.x:
+
+/usr/include/eina-1/eina/eina_stringshare.h:
+
+/usr/include/eina-1/eina/eina_ustringshare.h:
+
+/usr/include/eina-1/eina/eina_unicode.h:
+
+/usr/include/eina-1/eina/eina_inline_ustringshare.x:
+
+/usr/include/eina-1/eina/eina_ustringshare.h:
+
+/usr/include/eina-1/eina/eina_magic.h:
+
+/usr/include/eina-1/eina/eina_counter.h:
+
+/usr/include/eina-1/eina/eina_rbtree.h:
+
+/usr/include/eina-1/eina/eina_inline_rbtree.x:
+
+/usr/include/eina-1/eina/eina_accessor.h:
+
+/usr/include/eina-1/eina/eina_iterator.h:
+
+/usr/include/eina-1/eina/eina_benchmark.h:
+
+/usr/include/eina-1/eina/eina_convert.h:
+
+/usr/include/eina-1/eina/eina_fp.h:
+
+/usr/include/eina-1/eina/eina_cpu.h:
+
+/usr/include/eina-1/eina/eina_sched.h:
+
+/usr/include/eina-1/eina/eina_tiler.h:
+
+/usr/include/eina-1/eina/eina_rectangle.h:
+
+/usr/include/eina-1/eina/eina_inline_tiler.x:
+
+/usr/include/eina-1/eina/eina_safety_checks.h:
+
+/usr/include/eina-1/eina/eina_log.h:
+
+/usr/include/eina-1/eina/eina_hamster.h:
+
+/usr/include/eina-1/eina/eina_matrixsparse.h:
+
+/usr/include/eina-1/eina/eina_str.h:
+
+/usr/include/eina-1/eina/eina_inline_str.x:
+
+/usr/include/eina-1/eina/eina_strbuf.h:
+
+/usr/include/eina-1/eina/eina_binbuf.h:
+
+/usr/include/eina-1/eina/eina_ustrbuf.h:
+
+/usr/include/eina-1/eina/eina_unicode.h:
+
+/usr/include/eina-1/eina/eina_quadtree.h:
+
+/usr/include/eina-1/eina/eina_inlist.h:
+
+/usr/include/eina-1/eina/eina_simple_xml_parser.h:
+
+/usr/include/eina-1/eina/eina_lock.h:
+
+/usr/include/eina-1/eina/eina_inline_lock_posix.x:
+
+/usr/include/errno.h:
+
+/usr/include/bits/errno.h:
+
+/usr/include/linux/errno.h:
+
+/usr/include/asm/errno.h:
+
+/usr/include/asm-generic/errno.h:
+
+/usr/include/asm-generic/errno-base.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/bits/sched.h:
+
+/usr/include/bits/setjmp.h:
+
+/usr/include/semaphore.h:
+
+/usr/include/bits/semaphore.h:
+
+/usr/include/sys/time.h:
+
+/usr/include/eina-1/eina/eina_prefix.h:
+
+/usr/include/eina-1/eina/eina_refcount.h:
+
+/usr/include/eina-1/eina/eina_mmap.h:
+
+/usr/include/eina-1/eina/eina_xattr.h:
+
+/usr/include/eina-1/eina/eina_value.h:
+
+/usr/include/eina-1/eina/eina_inarray.h:
+
+/usr/include/eina-1/eina/eina_list.h:
+
+/usr/include/eina-1/eina/eina_hash.h:
+
+/usr/include/eina-1/eina/eina_inline_value.x:
+
+/usr/include/signal.h:
+
+/usr/include/bits/signum.h:
+
+/usr/include/bits/siginfo.h:
+
+/usr/include/bits/sigaction.h:
+
+/usr/include/bits/sigcontext.h:
+
+/usr/include/asm/sigcontext.h:
+
+/usr/include/linux/types.h:
+
+/usr/include/asm/types.h:
+
+/usr/include/asm-generic/types.h:
+
+/usr/include/asm-generic/int-ll64.h:
+
+/usr/include/asm/bitsperlong.h:
+
+/usr/include/asm-generic/bitsperlong.h:
+
+/usr/include/linux/posix_types.h:
+
+/usr/include/linux/stddef.h:
+
+/usr/include/asm/posix_types.h:
+
+/usr/include/asm/posix_types_32.h:
+
+/usr/include/asm-generic/posix_types.h:
+
+/usr/include/bits/sigstack.h:
+
+/usr/include/sys/ucontext.h:
+
+/usr/include/bits/sigthread.h:
+
+/usr/include/ecore-1/Ecore_Evas.h:
+
+/usr/include/evas-1/Evas.h:
+
+/usr/include/ecore-1/Ecore_Getopt.h:
+
+/usr/include/ecore-1/Ecore_Input.h:
+
+/usr/include/inttypes.h:
+
+/usr/include/unistd.h:
+
+/usr/include/bits/posix_opt.h:
+
+/usr/include/bits/environments.h:
+
+/usr/include/bits/confname.h:
+
+/usr/include/getopt.h:
+
+/usr/include/glib-2.0/glib.h:
+
+/usr/include/glib-2.0/glib/galloca.h:
+
+/usr/include/glib-2.0/glib/gtypes.h:
+
+/usr/lib/glib-2.0/include/glibconfig.h:
+
+/usr/include/glib-2.0/glib/gmacros.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/float.h:
+
+/usr/include/glib-2.0/glib/gversionmacros.h:
+
+/usr/include/glib-2.0/glib/garray.h:
+
+/usr/include/glib-2.0/glib/gasyncqueue.h:
+
+/usr/include/glib-2.0/glib/gthread.h:
+
+/usr/include/glib-2.0/glib/gatomic.h:
+
+/usr/include/glib-2.0/glib/gerror.h:
+
+/usr/include/glib-2.0/glib/gquark.h:
+
+/usr/include/glib-2.0/glib/gbacktrace.h:
+
+/usr/include/glib-2.0/glib/gbase64.h:
+
+/usr/include/glib-2.0/glib/gbitlock.h:
+
+/usr/include/glib-2.0/glib/gbookmarkfile.h:
+
+/usr/include/glib-2.0/glib/gbytes.h:
+
+/usr/include/glib-2.0/glib/gcharset.h:
+
+/usr/include/glib-2.0/glib/gchecksum.h:
+
+/usr/include/glib-2.0/glib/gconvert.h:
+
+/usr/include/glib-2.0/glib/gdataset.h:
+
+/usr/include/glib-2.0/glib/gdate.h:
+
+/usr/include/glib-2.0/glib/gdatetime.h:
+
+/usr/include/glib-2.0/glib/gtimezone.h:
+
+/usr/include/glib-2.0/glib/gdir.h:
+
+/usr/include/glib-2.0/glib/genviron.h:
+
+/usr/include/glib-2.0/glib/gfileutils.h:
+
+/usr/include/glib-2.0/glib/ggettext.h:
+
+/usr/include/glib-2.0/glib/ghash.h:
+
+/usr/include/glib-2.0/glib/glist.h:
+
+/usr/include/glib-2.0/glib/gmem.h:
+
+/usr/include/glib-2.0/glib/ghmac.h:
+
+/usr/include/glib-2.0/glib/gchecksum.h:
+
+/usr/include/glib-2.0/glib/ghook.h:
+
+/usr/include/glib-2.0/glib/ghostutils.h:
+
+/usr/include/glib-2.0/glib/giochannel.h:
+
+/usr/include/glib-2.0/glib/gmain.h:
+
+/usr/include/glib-2.0/glib/gpoll.h:
+
+/usr/include/glib-2.0/glib/gslist.h:
+
+/usr/include/glib-2.0/glib/gstring.h:
+
+/usr/include/glib-2.0/glib/gunicode.h:
+
+/usr/include/glib-2.0/glib/gutils.h:
+
+/usr/include/glib-2.0/glib/gkeyfile.h:
+
+/usr/include/glib-2.0/glib/gmappedfile.h:
+
+/usr/include/glib-2.0/glib/gmarkup.h:
+
+/usr/include/glib-2.0/glib/gmessages.h:
+
+/usr/include/glib-2.0/glib/gnode.h:
+
+/usr/include/glib-2.0/glib/goption.h:
+
+/usr/include/glib-2.0/glib/gpattern.h:
+
+/usr/include/glib-2.0/glib/gprimes.h:
+
+/usr/include/glib-2.0/glib/gqsort.h:
+
+/usr/include/glib-2.0/glib/gqueue.h:
+
+/usr/include/glib-2.0/glib/grand.h:
+
+/usr/include/glib-2.0/glib/gregex.h:
+
+/usr/include/glib-2.0/glib/gscanner.h:
+
+/usr/include/glib-2.0/glib/gsequence.h:
+
+/usr/include/glib-2.0/glib/gshell.h:
+
+/usr/include/glib-2.0/glib/gslice.h:
+
+/usr/include/glib-2.0/glib/gspawn.h:
+
+/usr/include/glib-2.0/glib/gstrfuncs.h:
+
+/usr/include/glib-2.0/glib/gstringchunk.h:
+
+/usr/include/glib-2.0/glib/gtestutils.h:
+
+/usr/include/glib-2.0/glib/gthreadpool.h:
+
+/usr/include/glib-2.0/glib/gtimer.h:
+
+/usr/include/glib-2.0/glib/gtrashstack.h:
+
+/usr/include/glib-2.0/glib/gtree.h:
+
+/usr/include/glib-2.0/glib/gurifuncs.h:
+
+/usr/include/glib-2.0/glib/gvarianttype.h:
+
+/usr/include/glib-2.0/glib/gvariant.h:
+
+/usr/include/glib-2.0/glib/gversion.h:
+
+/usr/include/glib-2.0/glib/deprecated/gallocator.h:
+
+/usr/include/glib-2.0/glib/deprecated/gcache.h:
+
+/usr/include/glib-2.0/glib/deprecated/gcompletion.h:
+
+/usr/include/glib-2.0/glib/deprecated/gmain.h:
+
+/usr/include/glib-2.0/glib/deprecated/grel.h:
+
+/usr/include/glib-2.0/glib/deprecated/gthread.h:
+
+app_log.h:
+
+/usr/include/ico-appfw/ico_apf_log.h:
+
+/usr/include/ico-appfw/ico_apf.h:
+
+/usr/include/ico-appfw/ico_apf_resource_control.h:
+
+/usr/include/ico-appfw/ico_uxf_sysdef.h:
+
+/usr/include/ico-appfw/ico_apf_error.h:
+
+/usr/include/tizen.h:
+
+/usr/include/tizen_type.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdbool.h:
+
+/usr/include/tizen_error.h:
+
+/usr/include/ico-appfw/ico_apf_ecore.h:
+
+soundsample.h:
diff --git a/src/.deps/ico_app_soundsample-soundsample_pulse_async_test.Po b/src/.deps/ico_app_soundsample-soundsample_pulse_async_test.Po
new file mode 100644 (file)
index 0000000..cb4b709
--- /dev/null
@@ -0,0 +1,190 @@
+ico_app_soundsample-soundsample_pulse_async_test.o: \
+ soundsample_pulse_async_test.cpp /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/bits/predefs.h \
+ /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
+ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stddef.h \
+ /usr/include/bits/types.h /usr/include/bits/typesizes.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdarg.h \
+ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
+ /usr/include/bits/stdio.h /usr/include/stdlib.h \
+ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
+ /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/bits/byteswap.h /usr/include/xlocale.h \
+ /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \
+ /usr/include/bits/select.h /usr/include/bits/sigset.h \
+ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \
+ /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/unistd.h /usr/include/bits/posix_opt.h \
+ /usr/include/bits/environments.h /usr/include/bits/confname.h \
+ /usr/include/getopt.h /usr/include/string.h \
+ /usr/include/pulse/mainloop.h /usr/include/pulse/mainloop-api.h \
+ /usr/include/sys/time.h /usr/include/pulse/cdecl.h \
+ /usr/include/pulse/version.h /usr/include/pulse/context.h \
+ /usr/include/pulse/sample.h /usr/include/inttypes.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdint.h \
+ /usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/sys/param.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/limits.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
+ /usr/include/linux/param.h /usr/include/asm/param.h \
+ /usr/include/asm-generic/param.h /usr/include/pulse/gccmacro.h \
+ /usr/include/pulse/def.h /usr/include/pulse/operation.h \
+ /usr/include/pulse/proplist.h /usr/include/pulse/stream.h \
+ /usr/include/pulse/format.h /usr/include/pulse/channelmap.h \
+ /usr/include/pulse/volume.h /usr/include/pulse/error.h \
+ soundsample_yswavfile.h app_log.h /usr/include/ico-appfw/ico_apf_log.h \
+ soundsample.h
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/bits/predefs.h:
+
+/usr/include/sys/cdefs.h:
+
+/usr/include/bits/wordsize.h:
+
+/usr/include/gnu/stubs.h:
+
+/usr/include/gnu/stubs-32.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stddef.h:
+
+/usr/include/bits/types.h:
+
+/usr/include/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdarg.h:
+
+/usr/include/bits/stdio_lim.h:
+
+/usr/include/bits/sys_errlist.h:
+
+/usr/include/bits/stdio.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/bits/waitflags.h:
+
+/usr/include/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/bits/endian.h:
+
+/usr/include/bits/byteswap.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/sys/select.h:
+
+/usr/include/bits/select.h:
+
+/usr/include/bits/sigset.h:
+
+/usr/include/bits/time.h:
+
+/usr/include/sys/sysmacros.h:
+
+/usr/include/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/unistd.h:
+
+/usr/include/bits/posix_opt.h:
+
+/usr/include/bits/environments.h:
+
+/usr/include/bits/confname.h:
+
+/usr/include/getopt.h:
+
+/usr/include/string.h:
+
+/usr/include/pulse/mainloop.h:
+
+/usr/include/pulse/mainloop-api.h:
+
+/usr/include/sys/time.h:
+
+/usr/include/pulse/cdecl.h:
+
+/usr/include/pulse/version.h:
+
+/usr/include/pulse/context.h:
+
+/usr/include/pulse/sample.h:
+
+/usr/include/inttypes.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdint.h:
+
+/usr/include/stdint.h:
+
+/usr/include/bits/wchar.h:
+
+/usr/include/sys/param.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/limits.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/bits/posix1_lim.h:
+
+/usr/include/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/bits/posix2_lim.h:
+
+/usr/include/bits/xopen_lim.h:
+
+/usr/include/linux/param.h:
+
+/usr/include/asm/param.h:
+
+/usr/include/asm-generic/param.h:
+
+/usr/include/pulse/gccmacro.h:
+
+/usr/include/pulse/def.h:
+
+/usr/include/pulse/operation.h:
+
+/usr/include/pulse/proplist.h:
+
+/usr/include/pulse/stream.h:
+
+/usr/include/pulse/format.h:
+
+/usr/include/pulse/channelmap.h:
+
+/usr/include/pulse/volume.h:
+
+/usr/include/pulse/error.h:
+
+soundsample_yswavfile.h:
+
+app_log.h:
+
+/usr/include/ico-appfw/ico_apf_log.h:
+
+soundsample.h:
diff --git a/src/.deps/ico_app_soundsample-soundsample_yswavfile.Po b/src/.deps/ico_app_soundsample-soundsample_yswavfile.Po
new file mode 100644 (file)
index 0000000..497a86b
--- /dev/null
@@ -0,0 +1,78 @@
+ico_app_soundsample-soundsample_yswavfile.o: soundsample_yswavfile.cpp \
+ /usr/include/stdio.h /usr/include/features.h /usr/include/bits/predefs.h \
+ /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
+ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stddef.h \
+ /usr/include/bits/types.h /usr/include/bits/typesizes.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdarg.h \
+ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
+ /usr/include/bits/stdio.h /usr/include/string.h /usr/include/xlocale.h \
+ /usr/include/math.h /usr/include/bits/huge_val.h \
+ /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \
+ /usr/include/bits/inf.h /usr/include/bits/nan.h \
+ /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \
+ /usr/include/bits/mathinline.h soundsample_yswavfile.h app_log.h \
+ /usr/include/ico-appfw/ico_apf_log.h
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/bits/predefs.h:
+
+/usr/include/sys/cdefs.h:
+
+/usr/include/bits/wordsize.h:
+
+/usr/include/gnu/stubs.h:
+
+/usr/include/gnu/stubs-32.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stddef.h:
+
+/usr/include/bits/types.h:
+
+/usr/include/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdarg.h:
+
+/usr/include/bits/stdio_lim.h:
+
+/usr/include/bits/sys_errlist.h:
+
+/usr/include/bits/stdio.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/math.h:
+
+/usr/include/bits/huge_val.h:
+
+/usr/include/bits/huge_valf.h:
+
+/usr/include/bits/huge_vall.h:
+
+/usr/include/bits/inf.h:
+
+/usr/include/bits/nan.h:
+
+/usr/include/bits/mathdef.h:
+
+/usr/include/bits/mathcalls.h:
+
+/usr/include/bits/mathinline.h:
+
+soundsample_yswavfile.h:
+
+app_log.h:
+
+/usr/include/ico-appfw/ico_apf_log.h:
diff --git a/src/.deps/ico_app_vicsample-vicsample.Po b/src/.deps/ico_app_vicsample-vicsample.Po
new file mode 100644 (file)
index 0000000..57307b0
--- /dev/null
@@ -0,0 +1,549 @@
+ico_app_vicsample-vicsample.o: vicsample.c ../config.h \
+ /usr/include/ecore-1/Ecore.h /usr/include/eina-1/Eina.h \
+ /usr/include/eina-1/eina_config.h /usr/include/eina-1/eina/eina_types.h \
+ /usr/include/eina-1/eina_config.h /usr/include/eina-1/eina/eina_main.h \
+ /usr/include/eina-1/eina/eina_types.h /usr/include/eina-1/eina/eina_fp.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdint.h \
+ /usr/include/stdint.h /usr/include/features.h \
+ /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \
+ /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
+ /usr/include/gnu/stubs-32.h /usr/include/bits/wchar.h \
+ /usr/include/eina-1/eina/eina_inline_f32p32.x /usr/include/stdlib.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stddef.h \
+ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
+ /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/bits/byteswap.h /usr/include/sys/types.h \
+ /usr/include/bits/types.h /usr/include/bits/typesizes.h \
+ /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \
+ /usr/include/bits/sigset.h /usr/include/bits/time.h \
+ /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
+ /usr/include/alloca.h /usr/include/eina-1/eina/eina_inline_f16p16.x \
+ /usr/include/eina-1/eina/eina_inline_f8p24.x \
+ /usr/include/eina-1/eina/eina_inline_fp.x \
+ /usr/include/eina-1/eina/eina_rectangle.h \
+ /usr/include/eina-1/eina/eina_inline_rectangle.x \
+ /usr/include/eina-1/eina/eina_clist.h \
+ /usr/include/eina-1/eina/eina_inline_clist.x \
+ /usr/include/eina-1/eina/eina_inlist.h \
+ /usr/include/eina-1/eina/eina_iterator.h \
+ /usr/include/eina-1/eina/eina_magic.h \
+ /usr/include/eina-1/eina/eina_error.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdarg.h \
+ /usr/include/eina-1/eina/eina_accessor.h \
+ /usr/include/eina-1/eina/eina_file.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/limits.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/xlocale.h \
+ /usr/include/sys/stat.h /usr/include/bits/stat.h \
+ /usr/include/eina-1/eina/eina_array.h \
+ /usr/include/eina-1/eina/eina_inline_array.x /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
+ /usr/include/bits/stdio.h /usr/include/eina-1/eina/eina_list.h \
+ /usr/include/eina-1/eina/eina_inline_list.x \
+ /usr/include/eina-1/eina/eina_hash.h \
+ /usr/include/eina-1/eina/eina_inline_hash.x \
+ /usr/include/eina-1/eina/eina_trash.h \
+ /usr/include/eina-1/eina/eina_inline_trash.x \
+ /usr/include/eina-1/eina/eina_lalloc.h \
+ /usr/include/eina-1/eina/eina_module.h \
+ /usr/include/eina-1/eina/eina_mempool.h \
+ /usr/include/eina-1/eina/eina_module.h \
+ /usr/include/eina-1/eina/eina_inline_mempool.x /usr/include/string.h \
+ /usr/include/bits/string.h /usr/include/bits/string2.h \
+ /usr/include/eina-1/eina/eina_error.h \
+ /usr/include/eina-1/eina/eina_log.h \
+ /usr/include/eina-1/eina/eina_inline_log.x \
+ /usr/include/eina-1/eina/eina_inarray.h \
+ /usr/include/eina-1/eina/eina_array.h \
+ /usr/include/eina-1/eina/eina_binshare.h \
+ /usr/include/eina-1/eina/eina_stringshare.h \
+ /usr/include/eina-1/eina/eina_inline_stringshare.x \
+ /usr/include/eina-1/eina/eina_stringshare.h \
+ /usr/include/eina-1/eina/eina_ustringshare.h \
+ /usr/include/eina-1/eina/eina_unicode.h \
+ /usr/include/eina-1/eina/eina_inline_ustringshare.x \
+ /usr/include/eina-1/eina/eina_ustringshare.h \
+ /usr/include/eina-1/eina/eina_magic.h \
+ /usr/include/eina-1/eina/eina_counter.h \
+ /usr/include/eina-1/eina/eina_rbtree.h \
+ /usr/include/eina-1/eina/eina_inline_rbtree.x \
+ /usr/include/eina-1/eina/eina_accessor.h \
+ /usr/include/eina-1/eina/eina_iterator.h \
+ /usr/include/eina-1/eina/eina_benchmark.h \
+ /usr/include/eina-1/eina/eina_convert.h \
+ /usr/include/eina-1/eina/eina_fp.h /usr/include/eina-1/eina/eina_cpu.h \
+ /usr/include/eina-1/eina/eina_sched.h \
+ /usr/include/eina-1/eina/eina_tiler.h \
+ /usr/include/eina-1/eina/eina_rectangle.h \
+ /usr/include/eina-1/eina/eina_inline_tiler.x \
+ /usr/include/eina-1/eina/eina_safety_checks.h \
+ /usr/include/eina-1/eina/eina_log.h \
+ /usr/include/eina-1/eina/eina_hamster.h \
+ /usr/include/eina-1/eina/eina_matrixsparse.h \
+ /usr/include/eina-1/eina/eina_str.h \
+ /usr/include/eina-1/eina/eina_inline_str.x \
+ /usr/include/eina-1/eina/eina_strbuf.h \
+ /usr/include/eina-1/eina/eina_binbuf.h \
+ /usr/include/eina-1/eina/eina_ustrbuf.h \
+ /usr/include/eina-1/eina/eina_unicode.h \
+ /usr/include/eina-1/eina/eina_quadtree.h \
+ /usr/include/eina-1/eina/eina_inlist.h \
+ /usr/include/eina-1/eina/eina_simple_xml_parser.h \
+ /usr/include/eina-1/eina/eina_lock.h \
+ /usr/include/eina-1/eina/eina_inline_lock_posix.x /usr/include/errno.h \
+ /usr/include/bits/errno.h /usr/include/linux/errno.h \
+ /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \
+ /usr/include/asm-generic/errno-base.h /usr/include/pthread.h \
+ /usr/include/sched.h /usr/include/bits/sched.h \
+ /usr/include/bits/setjmp.h /usr/include/semaphore.h \
+ /usr/include/bits/semaphore.h /usr/include/sys/time.h \
+ /usr/include/eina-1/eina/eina_prefix.h \
+ /usr/include/eina-1/eina/eina_refcount.h \
+ /usr/include/eina-1/eina/eina_mmap.h \
+ /usr/include/eina-1/eina/eina_xattr.h \
+ /usr/include/eina-1/eina/eina_value.h \
+ /usr/include/eina-1/eina/eina_inarray.h \
+ /usr/include/eina-1/eina/eina_list.h \
+ /usr/include/eina-1/eina/eina_hash.h \
+ /usr/include/eina-1/eina/eina_inline_value.x /usr/include/signal.h \
+ /usr/include/bits/signum.h /usr/include/bits/siginfo.h \
+ /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h \
+ /usr/include/asm/sigcontext.h /usr/include/linux/types.h \
+ /usr/include/asm/types.h /usr/include/asm-generic/types.h \
+ /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \
+ /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \
+ /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \
+ /usr/include/asm/posix_types_32.h /usr/include/asm-generic/posix_types.h \
+ /usr/include/bits/sigstack.h /usr/include/sys/ucontext.h \
+ /usr/include/bits/sigthread.h /usr/include/ecore-1/Ecore_Evas.h \
+ /usr/include/evas-1/Evas.h /usr/include/ecore-1/Ecore_Getopt.h \
+ /usr/include/ecore-1/Ecore_Input.h /usr/include/inttypes.h \
+ /usr/include/dbus-1.0/dbus/dbus.h \
+ /usr/lib/dbus-1.0/include/dbus/dbus-arch-deps.h \
+ /usr/include/dbus-1.0/dbus/dbus-macros.h \
+ /usr/include/dbus-1.0/dbus/dbus-address.h \
+ /usr/include/dbus-1.0/dbus/dbus-types.h \
+ /usr/include/dbus-1.0/dbus/dbus-errors.h \
+ /usr/include/dbus-1.0/dbus/dbus-protocol.h \
+ /usr/include/dbus-1.0/dbus/dbus-bus.h \
+ /usr/include/dbus-1.0/dbus/dbus-connection.h \
+ /usr/include/dbus-1.0/dbus/dbus-memory.h \
+ /usr/include/dbus-1.0/dbus/dbus-message.h \
+ /usr/include/dbus-1.0/dbus/dbus-shared.h \
+ /usr/include/dbus-1.0/dbus/dbus-misc.h \
+ /usr/include/dbus-1.0/dbus/dbus-pending-call.h \
+ /usr/include/dbus-1.0/dbus/dbus-server.h \
+ /usr/include/dbus-1.0/dbus/dbus-signature.h \
+ /usr/include/dbus-1.0/dbus/dbus-threads.h \
+ /usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdbool.h app_log.h \
+ /usr/include/ico-appfw/ico_apf_log.h /usr/include/ico-appfw/ico_apf.h \
+ /usr/include/ico-appfw/ico_apf_resource_control.h \
+ /usr/include/ico-appfw/ico_uxf_sysdef.h \
+ /usr/include/ico-appfw/ico_apf_error.h /usr/include/tizen.h \
+ /usr/include/tizen_type.h /usr/include/tizen_error.h \
+ /usr/include/ico-appfw/ico_apf_ecore.h
+
+../config.h:
+
+/usr/include/ecore-1/Ecore.h:
+
+/usr/include/eina-1/Eina.h:
+
+/usr/include/eina-1/eina_config.h:
+
+/usr/include/eina-1/eina/eina_types.h:
+
+/usr/include/eina-1/eina_config.h:
+
+/usr/include/eina-1/eina/eina_main.h:
+
+/usr/include/eina-1/eina/eina_types.h:
+
+/usr/include/eina-1/eina/eina_fp.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdint.h:
+
+/usr/include/stdint.h:
+
+/usr/include/features.h:
+
+/usr/include/bits/predefs.h:
+
+/usr/include/sys/cdefs.h:
+
+/usr/include/bits/wordsize.h:
+
+/usr/include/gnu/stubs.h:
+
+/usr/include/gnu/stubs-32.h:
+
+/usr/include/bits/wchar.h:
+
+/usr/include/eina-1/eina/eina_inline_f32p32.x:
+
+/usr/include/stdlib.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stddef.h:
+
+/usr/include/bits/waitflags.h:
+
+/usr/include/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/bits/endian.h:
+
+/usr/include/bits/byteswap.h:
+
+/usr/include/sys/types.h:
+
+/usr/include/bits/types.h:
+
+/usr/include/bits/typesizes.h:
+
+/usr/include/time.h:
+
+/usr/include/sys/select.h:
+
+/usr/include/bits/select.h:
+
+/usr/include/bits/sigset.h:
+
+/usr/include/bits/time.h:
+
+/usr/include/sys/sysmacros.h:
+
+/usr/include/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/eina-1/eina/eina_inline_f16p16.x:
+
+/usr/include/eina-1/eina/eina_inline_f8p24.x:
+
+/usr/include/eina-1/eina/eina_inline_fp.x:
+
+/usr/include/eina-1/eina/eina_rectangle.h:
+
+/usr/include/eina-1/eina/eina_inline_rectangle.x:
+
+/usr/include/eina-1/eina/eina_clist.h:
+
+/usr/include/eina-1/eina/eina_inline_clist.x:
+
+/usr/include/eina-1/eina/eina_inlist.h:
+
+/usr/include/eina-1/eina/eina_iterator.h:
+
+/usr/include/eina-1/eina/eina_magic.h:
+
+/usr/include/eina-1/eina/eina_error.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdarg.h:
+
+/usr/include/eina-1/eina/eina_accessor.h:
+
+/usr/include/eina-1/eina/eina_file.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/limits.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/bits/posix1_lim.h:
+
+/usr/include/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/bits/posix2_lim.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/sys/stat.h:
+
+/usr/include/bits/stat.h:
+
+/usr/include/eina-1/eina/eina_array.h:
+
+/usr/include/eina-1/eina/eina_inline_array.x:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/include/bits/stdio_lim.h:
+
+/usr/include/bits/sys_errlist.h:
+
+/usr/include/bits/stdio.h:
+
+/usr/include/eina-1/eina/eina_list.h:
+
+/usr/include/eina-1/eina/eina_inline_list.x:
+
+/usr/include/eina-1/eina/eina_hash.h:
+
+/usr/include/eina-1/eina/eina_inline_hash.x:
+
+/usr/include/eina-1/eina/eina_trash.h:
+
+/usr/include/eina-1/eina/eina_inline_trash.x:
+
+/usr/include/eina-1/eina/eina_lalloc.h:
+
+/usr/include/eina-1/eina/eina_module.h:
+
+/usr/include/eina-1/eina/eina_mempool.h:
+
+/usr/include/eina-1/eina/eina_module.h:
+
+/usr/include/eina-1/eina/eina_inline_mempool.x:
+
+/usr/include/string.h:
+
+/usr/include/bits/string.h:
+
+/usr/include/bits/string2.h:
+
+/usr/include/eina-1/eina/eina_error.h:
+
+/usr/include/eina-1/eina/eina_log.h:
+
+/usr/include/eina-1/eina/eina_inline_log.x:
+
+/usr/include/eina-1/eina/eina_inarray.h:
+
+/usr/include/eina-1/eina/eina_array.h:
+
+/usr/include/eina-1/eina/eina_binshare.h:
+
+/usr/include/eina-1/eina/eina_stringshare.h:
+
+/usr/include/eina-1/eina/eina_inline_stringshare.x:
+
+/usr/include/eina-1/eina/eina_stringshare.h:
+
+/usr/include/eina-1/eina/eina_ustringshare.h:
+
+/usr/include/eina-1/eina/eina_unicode.h:
+
+/usr/include/eina-1/eina/eina_inline_ustringshare.x:
+
+/usr/include/eina-1/eina/eina_ustringshare.h:
+
+/usr/include/eina-1/eina/eina_magic.h:
+
+/usr/include/eina-1/eina/eina_counter.h:
+
+/usr/include/eina-1/eina/eina_rbtree.h:
+
+/usr/include/eina-1/eina/eina_inline_rbtree.x:
+
+/usr/include/eina-1/eina/eina_accessor.h:
+
+/usr/include/eina-1/eina/eina_iterator.h:
+
+/usr/include/eina-1/eina/eina_benchmark.h:
+
+/usr/include/eina-1/eina/eina_convert.h:
+
+/usr/include/eina-1/eina/eina_fp.h:
+
+/usr/include/eina-1/eina/eina_cpu.h:
+
+/usr/include/eina-1/eina/eina_sched.h:
+
+/usr/include/eina-1/eina/eina_tiler.h:
+
+/usr/include/eina-1/eina/eina_rectangle.h:
+
+/usr/include/eina-1/eina/eina_inline_tiler.x:
+
+/usr/include/eina-1/eina/eina_safety_checks.h:
+
+/usr/include/eina-1/eina/eina_log.h:
+
+/usr/include/eina-1/eina/eina_hamster.h:
+
+/usr/include/eina-1/eina/eina_matrixsparse.h:
+
+/usr/include/eina-1/eina/eina_str.h:
+
+/usr/include/eina-1/eina/eina_inline_str.x:
+
+/usr/include/eina-1/eina/eina_strbuf.h:
+
+/usr/include/eina-1/eina/eina_binbuf.h:
+
+/usr/include/eina-1/eina/eina_ustrbuf.h:
+
+/usr/include/eina-1/eina/eina_unicode.h:
+
+/usr/include/eina-1/eina/eina_quadtree.h:
+
+/usr/include/eina-1/eina/eina_inlist.h:
+
+/usr/include/eina-1/eina/eina_simple_xml_parser.h:
+
+/usr/include/eina-1/eina/eina_lock.h:
+
+/usr/include/eina-1/eina/eina_inline_lock_posix.x:
+
+/usr/include/errno.h:
+
+/usr/include/bits/errno.h:
+
+/usr/include/linux/errno.h:
+
+/usr/include/asm/errno.h:
+
+/usr/include/asm-generic/errno.h:
+
+/usr/include/asm-generic/errno-base.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/bits/sched.h:
+
+/usr/include/bits/setjmp.h:
+
+/usr/include/semaphore.h:
+
+/usr/include/bits/semaphore.h:
+
+/usr/include/sys/time.h:
+
+/usr/include/eina-1/eina/eina_prefix.h:
+
+/usr/include/eina-1/eina/eina_refcount.h:
+
+/usr/include/eina-1/eina/eina_mmap.h:
+
+/usr/include/eina-1/eina/eina_xattr.h:
+
+/usr/include/eina-1/eina/eina_value.h:
+
+/usr/include/eina-1/eina/eina_inarray.h:
+
+/usr/include/eina-1/eina/eina_list.h:
+
+/usr/include/eina-1/eina/eina_hash.h:
+
+/usr/include/eina-1/eina/eina_inline_value.x:
+
+/usr/include/signal.h:
+
+/usr/include/bits/signum.h:
+
+/usr/include/bits/siginfo.h:
+
+/usr/include/bits/sigaction.h:
+
+/usr/include/bits/sigcontext.h:
+
+/usr/include/asm/sigcontext.h:
+
+/usr/include/linux/types.h:
+
+/usr/include/asm/types.h:
+
+/usr/include/asm-generic/types.h:
+
+/usr/include/asm-generic/int-ll64.h:
+
+/usr/include/asm/bitsperlong.h:
+
+/usr/include/asm-generic/bitsperlong.h:
+
+/usr/include/linux/posix_types.h:
+
+/usr/include/linux/stddef.h:
+
+/usr/include/asm/posix_types.h:
+
+/usr/include/asm/posix_types_32.h:
+
+/usr/include/asm-generic/posix_types.h:
+
+/usr/include/bits/sigstack.h:
+
+/usr/include/sys/ucontext.h:
+
+/usr/include/bits/sigthread.h:
+
+/usr/include/ecore-1/Ecore_Evas.h:
+
+/usr/include/evas-1/Evas.h:
+
+/usr/include/ecore-1/Ecore_Getopt.h:
+
+/usr/include/ecore-1/Ecore_Input.h:
+
+/usr/include/inttypes.h:
+
+/usr/include/dbus-1.0/dbus/dbus.h:
+
+/usr/lib/dbus-1.0/include/dbus/dbus-arch-deps.h:
+
+/usr/include/dbus-1.0/dbus/dbus-macros.h:
+
+/usr/include/dbus-1.0/dbus/dbus-address.h:
+
+/usr/include/dbus-1.0/dbus/dbus-types.h:
+
+/usr/include/dbus-1.0/dbus/dbus-errors.h:
+
+/usr/include/dbus-1.0/dbus/dbus-protocol.h:
+
+/usr/include/dbus-1.0/dbus/dbus-bus.h:
+
+/usr/include/dbus-1.0/dbus/dbus-connection.h:
+
+/usr/include/dbus-1.0/dbus/dbus-memory.h:
+
+/usr/include/dbus-1.0/dbus/dbus-message.h:
+
+/usr/include/dbus-1.0/dbus/dbus-shared.h:
+
+/usr/include/dbus-1.0/dbus/dbus-misc.h:
+
+/usr/include/dbus-1.0/dbus/dbus-pending-call.h:
+
+/usr/include/dbus-1.0/dbus/dbus-server.h:
+
+/usr/include/dbus-1.0/dbus/dbus-signature.h:
+
+/usr/include/dbus-1.0/dbus/dbus-threads.h:
+
+/usr/lib/gcc/i586-tizen-linux/4.5.3/include/stdbool.h:
+
+app_log.h:
+
+/usr/include/ico-appfw/ico_apf_log.h:
+
+/usr/include/ico-appfw/ico_apf.h:
+
+/usr/include/ico-appfw/ico_apf_resource_control.h:
+
+/usr/include/ico-appfw/ico_uxf_sysdef.h:
+
+/usr/include/ico-appfw/ico_apf_error.h:
+
+/usr/include/tizen.h:
+
+/usr/include/tizen_type.h:
+
+/usr/include/tizen_error.h:
+
+/usr/include/ico-appfw/ico_apf_ecore.h:
diff --git a/src/.deps/ico_app_vicsample-vicsample_sample.Po b/src/.deps/ico_app_vicsample-vicsample_sample.Po
new file mode 100644 (file)
index 0000000..9ce06a8
--- /dev/null
@@ -0,0 +1 @@
+# dummy
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644 (file)
index 0000000..cf57def
--- /dev/null
@@ -0,0 +1,31 @@
+##ico-app-soundsample
+app_soundsample_bindir = /opt/apps/org.tizen.ico.app-soundsample/bin
+app_soundsample_bin_PROGRAMS = ico-app-soundsample
+ico_app_soundsample_SOURCES = soundsample.c soundsample.h soundsample_pulse_async_test.cpp soundsample_yswavfile.cpp soundsample_yswavfile.h
+ico_app_soundsample_LDADD = -L/usr/lib -lico-app-fw-efl -lico-uxf-weston-plugin -lico-app-fw -lwebsockets -laul -lecore_evas -lecore -leina -levas -leina -lrt -lecore_wayland -lelementary -lm -leet -levas -lrt -lecore -leina -lecore_evas -lecore_file -ledje  -lethumb_client -lecore_imf -lecore_con -lpulse -lglib-2.0
+ico_app_soundsample_CFLAGS = -Wall -I. -I/usr/include/ico-appfw -I/usr/include/eina-1 -I/usr/include/eina-1/eina/ -I/usr/include/ecore-1 -I/usr/include/evas-1 -I/usr/include/elementary-1 -I/usr/include/ -D_REENTRANT -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+ico_app_soundsample_CPPFLAGS = -Wall -I. -I/usr/include/ico-appfw -I/usr/include/eina-1 -I/usr/include/eina-1/eina/ -I/usr/include/ecore-1 -I/usr/include/evas-1 -I/usr/include/elementary-1 -I/usr/include/ -D_REENTRANT -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+
+
+##ico-app-vicsample
+app_vicsample_bindir = /opt/apps/org.tizen.ico.app-vicsample/bin
+app_vicsample_bin_PROGRAMS = ico-app-vicsample
+ico_app_vicsample_SOURCES = vicsample.c 
+ico_app_vicsample_LDADD = -L/usr/lib -lico-app-fw-efl -lico-uxf-weston-plugin -lico-app-fw -laul -lwebsockets -lecore_evas -lecore -leina -levas -leina -lrt -lecore_wayland -lelementary -lm -leet -levas -lrt -lecore -leina -lecore_evas -lecore_file -ledje  -lethumb_client -lecore_imf -lecore_con -ldbus-1 -lpthread -lrt
+ico_app_vicsample_CFLAGS = -Wall -I. -I/usr/include/ico-appfw -I/usr/include/eina-1 -I/usr/include/eina-1/eina/ -I/usr/include/ecore-1 -I/usr/include/evas-1 -I/usr/include/elementary-1 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I~/HomeScreen/include
+
+
+##ico-app-samplenavi
+app_samplenavi_bindir = /opt/apps/org.tizen.ico.app-samplenavi/bin
+app_samplenavi_bin_PROGRAMS = ico-app-samplenavi
+ico_app_samplenavi_SOURCES = samplenavi.c samplenavi.h e3d.c e3d.h define.h
+ico_app_samplenavi_LDADD = -L/usr/lib -lico-app-fw-efl -lico-uxf-weston-plugin -lico-app-fw -ldbus-1 -lpthread -lrt -lwebsockets -laul -lecore_evas -lecore -leina -levas -lecore_wayland -lelementary -lm -leet -lecore_file -ledje -lethumb_client -lecore_imf -lecore_con -lglib-2.0 -lwayland-client -lwayland-cursor -lwayland-egl -lwayland-server -lewebkit2 -lcairo -lGLESv2 -lEGL -lpangocairo-1.0 -lpangoft2-1.0 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgdk_pixbuf-2.0 -lgthread-2.0
+
+ico_app_samplenavi_CFLAGS = -Wall -I. -I/usr/include/ico-appfw -I/usr/include/ecore-1 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/eina-1 -I/usr/include/eina-1/eina -I/usr/include/evas-1 -I/usr/include/eet-1 -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libdrm -I/usr/include/elementary-1 -I/usr/include/ethumb-1 -I/usr/include/efreet-1 -I/usr/include/e_dbus-1 -I/usr/include/emotion-1 -I/usr/include/edje-1 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/embryo-1 -I/usr/include/ewebkit2-0 -I/usr/include/ewebkit2-0/WebKit2 -I/usr/include/ewebkit2-0/NPAPI -I/usr/include/cairo -I/usr/include/libpng12 -I/usr/include/pango-1.0 -I/usr/include/gdk-pixbuf-2.0
+
+#ico_app_samplenavi_LDADD = -L/usr/lib -lico-app-fw-efl -lico-uxf-weston-plugin -lico-app-fw -ldbus-1 -lpthread -lrt /usr/lib/libopencv_calib3d.so /usr/lib/libopencv_contrib.so /usr/lib/libopencv_core.so /usr/lib/libopencv_features2d.so /usr/lib/libopencv_flann.so /usr/lib/libopencv_gpu.so /usr/lib/libopencv_highgui.so /usr/lib/libopencv_imgproc.so /usr/lib/libopencv_legacy.so /usr/lib/libopencv_ml.so /usr/lib/libopencv_nonfree.so /usr/lib/libopencv_objdetect.so /usr/lib/libopencv_photo.so /usr/lib/libopencv_stitching.so /usr/lib/libopencv_ts.so /usr/lib/libopencv_video.so /usr/lib/libopencv_videostab.so -lwebsockets -laul -lecore_evas -lecore -leina -levas -lecore_wayland -lelementary -lm -leet -lecore_file -ledje -lethumb_client -lecore_imf -lecore_con -lglib-2.0 -lwayland-client -lwayland-cursor -lwayland-egl -lwayland-server -lewebkit2 -lcairo -lGLESv2 -lEGL -lpangocairo-1.0 -lpangoft2-1.0 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgdk_pixbuf-2.0 -lgthread-2.0
+
+#ico_app_samplenavi_CFLAGS = -Wall -I. -I/usr/include/opencv -I/usr/include/ico-appfw -I/usr/include/ecore-1 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/eina-1 -I/usr/include/eina-1/eina -I/usr/include/evas-1 -I/usr/include/eet-1 -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libdrm -I/usr/include/elementary-1 -I/usr/include/ethumb-1 -I/usr/include/efreet-1 -I/usr/include/e_dbus-1 -I/usr/include/emotion-1 -I/usr/include/edje-1 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/embryo-1 -I/usr/include/ewebkit2-0 -I/usr/include/ewebkit2-0/WebKit2 -I/usr/include/ewebkit2-0/NPAPI -I/usr/include/cairo -I/usr/include/libpng12 -I/usr/include/pango-1.0 -I/usr/include/gdk-pixbuf-2.0
diff --git a/src/define.h b/src/define.h
new file mode 100644 (file)
index 0000000..8a18a07
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the 
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+/**
+ * @brief   definition header file for sample navigation application
+ *
+ * @date    Apr-25-2013
+ */
+
+#ifndef SAMPLENAVI_DEFINE_H_
+#define SAMPLENAVI_DEFINE_H_
+
+/* FUNCTION SELECT */
+//#define _USE_CAMERA_
+//#define _USE_OPENCV_  //USE
+//#define _E3D_H_OUTPUT_PRINT_
+
+#define _SHOW_FPS_
+#define _USE_Z_LIMIT_FIX_
+
+
+/* Default data (for samplenavi.conf) */
+#define DEF_USB_CAMERA_ID                              (0)
+#define DEF_LANDMARK_POSITION                  (-80)
+#define DEF_LANDMARK_ROTATION                  (90)
+
+
+/* for 3D Layer */
+#define ROUTE_PLANE_HEIGHT                     (-190)
+#define ROUTE_PLANE_WIDTH                      (100)
+
+#define FRONT_SIDE_Z                           (-190)
+#define Z0_POSITION                                    (0)
+#define FOCUS_LENGTH                           (512)
+
+#define Z_LIMIT                                                (-150)
+#define COORD_CONVERT_COEFFICIENT      (20)
+
+#define CULLING_LENGTH_LANDMARKS       (5000)
+#define CULLING_LENGTH_ROUTE           (20000)
+
+#define GOAL_MESSAGE_LENGTH                    (3500)
+
+
+/* For route point */
+#define MAX_DRAW_ROUTE_POINTS          (500)
+#define ROUTE_DIVISION_NUMBER          (10)
+#define BOX_FIXED_LENGTH                       (150)
+
+/* For Landmarks */
+#define MAX_LANDMARK_POINTS                    (1000)
+#define LANDMARK_WIDTH                         (100)
+
+/* Timers */
+#define TIME_INTERVAL_CAMERA           (0.10)
+//#define TIME_INTERVAL_AR                     (0.05)
+//#define TIME_INTERVAL_AR                     (0.033)
+#define TIME_INTERVAL_AR                       (0.066)
+#define TIME_INTERVAL_MAP                      (1.0)
+
+
+/* Window Size */
+#define W_WIDTH                                                (1920) 
+#define W_HEIGHT                                       (1080-64) // StatusBar window height:64
+
+#define W_NAVI_HEIGHT                          (480)
+#define W_MAP_HEIGHT                           (536)
+
+#define W_NAVI_ORIGINE_X                       (0)
+#define W_NAVI_ORIGINE_Y                       (0)
+
+#define W_MAP_ORIGINE_X                                (0)
+#define W_MAP_ORIGINE_Y                                (480)
+
+#define W_TEXTAREA_X                           (0)
+#define W_TEXTAREA_Y                           (416)
+#define W_TEXTAREA_HEIGHT                      (64)
+#define W_TEXTAREA_WIDTH                       (W_WIDTH)
+
+#define W_NAVIBUTTON_HEIGHT                    (44)
+#define W_NAVIBUTTON_WIDTH                     (146)
+#define W_NAVIBUTTON_X                         (W_WIDTH - 10 - W_NAVIBUTTON_WIDTH)
+#define W_NAVIBUTTON_Y                         (W_TEXTAREA_Y + 10)
+
+#define W_GOALMESSAGE_HEIGHT           (50)
+#define W_GOALMESSAGE_WIDTH                    (478)
+#define W_GOALMESSAGE_X                                (150)
+#define W_GOALMESSAGE_Y                                (283)
+
+#define W_ADDRESS_HEIGHT                       (50)
+#define W_ADDRESS_WIDTH                                (570)
+#define W_ADDRESS_X                                    (32)
+#define W_ADDRESS_Y                                    (437)
+
+#define MAX_ROUTE_POINTS                       (500)
+#define LON_CONVERT                                    (90550.8)
+#define LAT_CONVERT                                    (111240)
+
+/* Directory */
+#define RESOURCE_DIR                           "/opt/apps/org.tizen.ico.app-samplenavi/res"
+#define IMAGES_DIR                                     "/opt/apps/org.tizen.ico.app-samplenavi/res/images"
+
+/* Common */
+#define TRUE                                           (1)
+#define FALSE                                          (0)
+
+/* Layer */
+#define LAYER_CAMERA                           (0)
+#define LAYER_ROUTE                                    (5)
+#define LAYER_LANDMARK                         (10)
+#define LAYER_MAP                                      (30)
+#define LAYER_UI                                       (30)
+
+/* Resources */
+static const char *config_path = RESOURCE_DIR "/samplenavi.conf";
+
+static const char *setting_button_path = IMAGES_DIR "/na_bt3_off.png";
+
+static const char *goal_img_path = IMAGES_DIR "/na_goal.png";
+static const char *goal_text_img_path = IMAGES_DIR "/na_goal_text.png";
+
+static const char *landmark_img_path_0 = IMAGES_DIR "/sg_m_01.png";
+static const char *landmark_img_path_1 = IMAGES_DIR "/sg_m_02.png";
+static const char *landmark_img_path_2 = IMAGES_DIR "/sg_m_03.png";
+static const char *landmark_img_path_3 = IMAGES_DIR "/sg_m_04.png";
+static const char *landmark_img_path_4 = IMAGES_DIR "/sg_m_05.png";
+static const char *landmark_img_path_5 = IMAGES_DIR "/sg_m_06.png";
+static const char *landmark_img_path_6 = IMAGES_DIR "/sg_m_07.png";
+static const char *landmark_img_path_7 = IMAGES_DIR "/sg_m_08.png";
+static const char *landmark_img_path_8 = IMAGES_DIR "/sg_l_01.png";
+static const char *landmark_img_path_9 = IMAGES_DIR "/sg_l_02.png";
+static const char *landmark_img_path_10 = IMAGES_DIR "/sg_l_03.png";
+static const char *landmark_img_path_11 = IMAGES_DIR "/sg_l_04.png";
+static const char *landmark_img_path_12 = IMAGES_DIR "/sg_l_05.png";
+static const char *landmark_img_path_13 = IMAGES_DIR "/sg_l_06.png";
+static const char *landmark_img_path_14 = IMAGES_DIR "/sg_l_07.png";
+static const char *landmark_img_path_15 = IMAGES_DIR "/sg_l_08.png";
+static const char *csv_landmark_path = RESOURCE_DIR "/landmark.csv";
+
+static const char *default_url = "file:///opt/apps/org.tizen.ico.app-samplenavi/res/Map/map.html";
+
+#endif /* SAMPLENAVI_DEFINE_H_ */
+
diff --git a/src/e3d.c b/src/e3d.c
new file mode 100644 (file)
index 0000000..6e8ace2
--- /dev/null
+++ b/src/e3d.c
@@ -0,0 +1,1367 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the 
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+/**
+ * @brief   library which displays 3D field of view
+ *
+ * @date    Apr-25-2013
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include "samplenavi.h"
+#include "e3d.h"
+#include "ico_apf_log.h"
+
+/*============================================================================*/
+/* Define fixed parameters                                                    */
+/*============================================================================*/
+/* Get route from websocket */
+#define ROUTE_START_TAG "<route>"
+#define ROUTE_END_TAG   "</route>"
+#define BR_TAG          "<BR>"
+
+/*============================================================================*/
+/* Define data types                                                          */
+/*============================================================================*/
+/* Landmark Points and Cubes */
+typedef struct _PointLength {
+    int index;
+    double length;
+    int drawable;
+} PointLength;
+
+/*============================================================================*/
+/* Function prototype for static(internal) functions                          */
+/*============================================================================*/
+static void load_route_from_websocket(char *p_in, size_t len);
+
+/* Local Functions for Route. */
+static void calc_route_coord_from_lonlat();
+
+/* Local Functions for Landmark. */
+static void load_landmarks_from_csv();
+static void calc_landmarks_coord_from_lonlat();
+
+void init_e3d(Evas *e3d, void *p_in, size_t len);
+
+/* Landmark Points and Cubes */
+static const char *landmark_img_path(int i);
+
+void e3d_cleanup();
+void calc_route_distance_to_camera();
+void check_route_drawable_by_distance_to_camera();
+double calc_square_length(Point p0, Point p1);
+int length_comp(const void *pl0, const void *pl1);
+
+/* Local Functions for Drawing on Evas */
+Plane *_plane_new(Evas *e3d, Evas_Coord w, Evas_Coord d, Evas_Coord h);
+void _plane_draw(Plane *plane);
+void _plane_free(Plane *plane);
+Cube *_cube_new(Evas *e3d, Evas_Coord w, Evas_Coord h, Evas_Coord d, const char *img_path);
+void _cube_draw(Cube *c, Evas_Coord x, Evas_Coord y, Evas_Coord z, double dx, double dy, double dz);
+void _cube_free(Cube *c);
+void goal_object_new(Evas *e3d);
+void goal_object_draw();
+void goal_object_free();
+
+/* Local Functions for Route. */
+void calc_route_coord_by_camera();
+void check_route_darawable_by_z_limit_fix();
+void draw_route(Evas *e3d);
+double calc_length(Point p0, Point p1);
+void calc_route_distance();
+void rotate_xz(Point src, Point *dist, double angle);
+void calc_base_box_points(int routenum);
+void calc_base_box_points_all();
+void calc_intersection(Point p0, Point p1, Point p2, Point p3, Point *point);
+void calc_bezier_points(Point p0, Point p1, Point p2, Point *points);
+void draw_curve(int routenum);
+Point calc_fix_point(int routenum, int point_index);
+void calc_fixed_box_points(int routenum);
+void calc_fixed_box_points_all();
+
+/* Local Functions for Landmark. */
+void calc_landmarks_coord_by_camera();
+void draw_landmark(Evas *e3d);
+
+/*============================================================================*/
+/* Tables and Valiables                                                       */
+/*============================================================================*/
+Camera camera;
+CameraGeocode camera_geocode;
+MapPos map_pos;
+char set_route;
+char enable_navi;
+#ifdef _SHOW_FPS_
+int polygon_count;
+#endif
+
+/* Route Points and Planes*/
+int route_data_count;
+CsvRoute csv_route[MAX_ROUTE_POINTS];
+Point route_raw[MAX_DRAW_ROUTE_POINTS];
+Point route[MAX_DRAW_ROUTE_POINTS];
+double route_square_length_camera[MAX_DRAW_ROUTE_POINTS];
+#ifdef _USE_Z_LIMIT_FIX_
+Point route_pre_fix[MAX_DRAW_ROUTE_POINTS];
+#endif
+Plane *base_plane[MAX_DRAW_ROUTE_POINTS - 1];
+Plane *fixed_plane[MAX_DRAW_ROUTE_POINTS - 1];
+Plane *division_plane[MAX_DRAW_ROUTE_POINTS - 2][ROUTE_DIVISION_NUMBER];
+int route_draw_num;
+double route_distance[MAX_DRAW_ROUTE_POINTS - 1];
+Evas_Object *goal_object;
+
+/* Landmark Points and Cubes */
+int landmark_data_count;
+CsvLandmark csv_landmark[MAX_LANDMARK_POINTS];
+Point landmark_raw[MAX_LANDMARK_POINTS];
+Point landmark[MAX_LANDMARK_POINTS];
+Cube *landmark_cube[MAX_LANDMARK_POINTS];
+
+/*============================================================================*/
+/* functions                                                                  */
+/*============================================================================*/
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   load_route_from_websocket
+ *          route information acquisition.
+ *
+ * @param[in]   p_in              receive message
+ * @param[in]   len               message size[BYTE]
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+load_route_from_websocket(char *p_in, size_t len)
+{
+    /* Local variable */
+    size_t  index = 0;
+    char    str[256];
+    route_data_count = 0;
+    
+    /* Get string */
+    while( index < len ) {
+        /* Get start tag */
+        if( ( strlen( &p_in[index] ) >= strlen( ROUTE_START_TAG ) ) && 
+            ( strncmp( &p_in[index], ROUTE_START_TAG, strlen( ROUTE_START_TAG ) ) == 0 ) ) 
+        {
+            index += strlen( ROUTE_START_TAG );
+        }
+        /* Get end tag */
+        else if( ( strlen( &p_in[index] ) >= strlen( ROUTE_END_TAG ) ) && 
+                 ( strncmp( &p_in[index], ROUTE_START_TAG, strlen( ROUTE_END_TAG ) ) == 0 ) ) 
+        {
+            break;
+        }
+        /* Get br tag */
+        else if( ( strlen( &p_in[index] ) >= strlen( BR_TAG ) ) && 
+                 ( strncmp( &p_in[index], BR_TAG, strlen( BR_TAG ) ) == 0 ) ) 
+        {
+            index += strlen( BR_TAG );
+        }
+        /* Get parameter */
+        else {
+            /* Get lng */
+            memset( str, 0, sizeof( str ) );
+            while( ( p_in[index] != ',' ) && ( index < len ) ) {
+                str[strlen( str )] = p_in[index];
+                index++;
+            }
+            csv_route[route_data_count].lon = atof( str );
+            index++;
+            
+            /* Get lat */
+            memset( str, 0, sizeof( str ) );
+            while( ( p_in[index] != '<' ) && ( index < len ) ) {
+                str[strlen( str )] = p_in[index];
+                index++;
+            }
+            csv_route[route_data_count].lat = atof( str );
+            route_data_count++;
+        }
+    }
+    if(route_data_count > 0){
+        route_data_count--;
+    }
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   calc_route_coord_from_lonlat
+ *          The coordinates of a route are calculated from 
+ *          latitude and longitude.
+ *
+ * @param     none
+ * @return    none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+calc_route_coord_from_lonlat()
+{
+    int i;
+
+    for (i = 0; i < route_data_count; i++) {
+        double x = (csv_route[i].lon - csv_route[0].lon) * LON_CONVERT * COORD_CONVERT_COEFFICIENT;
+        double z = (csv_route[i].lat - csv_route[0].lat) * LAT_CONVERT * COORD_CONVERT_COEFFICIENT;
+        POINT(route_raw[i], x, ROUTE_PLANE_HEIGHT, z, 0, 0);
+    }
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   load_landmarks_from_csv
+ *          The information on a landmark is loaded from a CSV file.
+ *
+ * @param     none
+ * @return    none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+load_landmarks_from_csv()
+{
+    FILE *fp;
+    int i;
+
+    if ((fp = fopen(csv_landmark_path, "r")) == NULL) {
+        fprintf(stderr, "%s\n", "Error : can't open file.(landmark.csv)\n");
+        landmark_data_count = 0;
+        return;
+    }
+
+    i = 0;
+    while(fscanf(fp, "%lf,%lf,%hhd",
+                &csv_landmark[i].lon, &csv_landmark[i].lat, &csv_landmark[i].id) != EOF) {
+        i++;
+    }
+    landmark_data_count = i;
+
+    fclose(fp);
+
+    // for test
+    for (i = 0; i < landmark_data_count; i++) {
+        uim_debug("landmark data %d : %.4f, %.4f, %d\n",
+                i, csv_landmark[i].lon, csv_landmark[i].lat, csv_landmark[i].id);
+    }
+
+    uim_debug("landmark data read. count = %d\n", landmark_data_count);
+
+    return;
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   calc_landmarks_coord_from_lonlat
+ *          The coordinates of a landmark are calculated from
+ *          latitude and longitude.
+ *
+ * @param     none
+ * @return    none
+ */
+/*--------------------------------------------------------------------------*/
+static void calc_landmarks_coord_from_lonlat()
+{
+    int i;
+
+    for (i = 0; i < landmark_data_count; i++) {
+        double x = (csv_landmark[i].lon - csv_route[0].lon) * LON_CONVERT * COORD_CONVERT_COEFFICIENT;
+        double z = (csv_landmark[i].lat - csv_route[0].lat) * LAT_CONVERT * COORD_CONVERT_COEFFICIENT;
+        POINT(landmark_raw[i], x, conf_data[LANDMARK_POSITION], z, 0, 0);
+    }
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   load_route_from_websocket
+ *          route information acquisition.
+ *
+ * @param[in]   e3d               3D view Evas object
+ * @param[in]   p_in              receive message
+ * @param[in]   len               message size[BYTE]
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+void
+init_e3d( Evas *e3d, void *p_in, size_t len )
+{
+    int i, j;
+
+    goal_square_length = 1000000000000000.0;
+
+    /***********************
+     * Route Initialize *
+     ***********************/
+
+    /* load route data */
+    load_route_from_websocket( (char *)p_in, len );
+
+    calc_route_coord_from_lonlat();
+    route_draw_num = route_data_count;
+
+    for (i = 0; i < route_draw_num - 1; i++) {
+        base_plane[i] = _plane_new(e3d, 100, 400, 170);
+        fixed_plane[i] = _plane_new(e3d, 100, 400, 170);
+    }
+    for (i = 0; i < route_draw_num - 2; i++) {
+        for (j = 0; j < ROUTE_DIVISION_NUMBER; j++) {
+            division_plane[i][j] = _plane_new(e3d, 10, 10, 10);
+        }
+    }
+
+    goal_object_new(e3d);
+
+#ifndef _USE_Z_LIMIT_FIX_
+    calc_route_distance();
+#endif
+
+    calc_route_coord_by_camera();
+    calc_base_box_points_all();
+    calc_fixed_box_points_all();
+
+#ifdef _E3D_H_OUTPUT_PRINT_
+    uim_debug("Base Plane point0 = %f, %f, %f \n", base_plane[0]->pt[0].x,
+      base_plane[0]->pt[0].y, base_plane[0]->pt[0].z);
+    uim_debug("Base Plane point1 = %f, %f, %f \n", base_plane[0]->pt[1].x,
+      base_plane[0]->pt[1].y, base_plane[0]->pt[1].z);
+    uim_debug("Base Plane point2 = %f, %f, %f \n", base_plane[0]->pt[2].x,
+      base_plane[0]->pt[2].y, base_plane[0]->pt[2].z);
+    uim_debug("Base Plane point3 = %f, %f, %f \n", base_plane[0]->pt[3].x,
+      base_plane[0]->pt[3].y, base_plane[0]->pt[3].z);
+#endif
+
+    /***********************
+     * Landmark Initialize *
+     ***********************/
+
+    /* load landmark data */
+    load_landmarks_from_csv();
+    calc_landmarks_coord_from_lonlat();
+
+    for (i = 0; i < landmark_data_count; i++) {
+        landmark_cube[i] = _cube_new(e3d, LANDMARK_WIDTH, (LANDMARK_WIDTH / 3) * 4, LANDMARK_WIDTH,
+                landmark_img_path(csv_landmark[i].id));
+    }
+
+/*****************************************************************************/
+
+    // for test
+    uim_debug("Route CSV x = %f, z = %f\n", csv_route[1].lon, csv_route[1].lat);
+    uim_debug("Route x = %f, z = %f\n", route_raw[1].x, route_raw[1].z);
+    uim_debug("Landmark CSV x = %f, z = %f\n", csv_landmark[0].lon, csv_landmark[0].lat);
+    uim_debug("Landmark x = %f, z = %f\n", landmark_raw[0].x, landmark_raw[0].z);
+
+    /***********************
+     * Camera Initialize *
+     ***********************/
+    _camera_pos(0, 0, 0, 0);
+    camera_geocode.lon = csv_route[0].lon;
+    camera_geocode.lat = csv_route[0].lat;
+    camera_geocode.dir = 0;
+    calc_camera_coord();
+
+    /***********************
+     * Map present location Initialize *
+     ***********************/
+    map_pos.lon = csv_route[0].lon;
+    map_pos.lat = csv_route[0].lat;
+
+    /* draw e3d */
+    draw_route(e3d);
+    draw_landmark(e3d);
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   landmark_img_path
+ *          Image file path acquisition of a landmark.
+ *
+ * @param[in]   i     landmark image file path identifier 
+ * @return      file path address
+ * @retval       > 0      success
+ * @retval       NULL     error
+ */
+/*--------------------------------------------------------------------------*/
+static const char *
+landmark_img_path(int i)
+{
+    const char *img_path;
+    switch (i) {
+        case 0:
+            img_path = landmark_img_path_0;
+            break;
+        case 1:
+            img_path = landmark_img_path_1;
+            break;
+        case 2:
+            img_path = landmark_img_path_2;
+            break;
+        case 3:
+            img_path = landmark_img_path_3;
+            break;
+        case 4:
+            img_path = landmark_img_path_4;
+            break;
+        case 5:
+            img_path = landmark_img_path_5;
+            break;
+        case 6:
+            img_path = landmark_img_path_6;
+            break;
+        case 7:
+            img_path = landmark_img_path_7;
+            break;
+        case 8:
+            img_path = landmark_img_path_8;
+            break;
+        case 9:
+            img_path = landmark_img_path_9;
+            break;
+        case 10:
+            img_path = landmark_img_path_10;
+            break;
+        case 11:
+            img_path = landmark_img_path_11;
+            break;
+        case 12:
+            img_path = landmark_img_path_12;
+            break;
+        case 13:
+            img_path = landmark_img_path_13;
+            break;
+        case 14:
+            img_path = landmark_img_path_14;
+            break;
+        case 15:
+            img_path = landmark_img_path_15;
+            break;
+    }
+    return img_path;
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   e3d_cleanup
+ *          The information on a landmark is loaded from a CSV file.
+ *
+ * @param     none
+ * @return    none
+ */
+/*--------------------------------------------------------------------------*/
+void
+e3d_cleanup()
+{
+    int i, j;
+
+    for (i = 0; i < route_draw_num - 1; i++) {
+        _plane_free(base_plane[i]);
+        _plane_free(fixed_plane[i]);
+    }
+
+    for (i = 0; i < route_draw_num - 2; i++) {
+        for (j = 0; j < ROUTE_DIVISION_NUMBER; j++) {
+            _plane_free(division_plane[i][j]);
+        }
+    }
+
+    for (i = 0; i < landmark_data_count; i++) {
+        _cube_free(landmark_cube[i]);
+    }
+
+    goal_object_free();
+}
+
+void draw_route(Evas *e3d) {
+    int i;
+    int j;
+
+#ifdef _SHOW_FPS_
+    polygon_count = 0;
+#endif
+
+    calc_route_coord_by_camera();
+    calc_base_box_points_all();
+    calc_fixed_box_points_all();
+
+// ----------------------------------------------------------------------------
+
+    if (enable_navi == FALSE || set_route == FALSE) {
+        evas_object_hide(goal_object);
+        return;
+    }
+
+    for (i = 0; i < route_draw_num - 1; i++) {
+        if (fixed_plane[i]->drawable == TRUE) {
+            _plane_draw(fixed_plane[i]);
+        } else {
+            evas_object_hide(fixed_plane[i]->o);
+        }
+    }
+
+    /* curve draw */
+    for (i = 0; i < route_draw_num - 2; i++) {
+        if (fixed_plane[i]->drawable == TRUE) {
+            draw_curve(i);
+        } else {
+            for (j = 0; j < ROUTE_DIVISION_NUMBER; j++) {
+                evas_object_hide(division_plane[i][j]->o);
+            }
+        }
+#ifdef _E3D_H_OUTPUT_PRINT_
+        uim_debug("curve draw. \n");
+#endif
+    }
+
+#ifdef _E3D_H_OUTPUT_PRINT_
+    uim_debug("route draw comp.\n");
+#endif
+
+    goal_object_draw(fixed_plane[route_draw_num - 2]);
+
+}
+
+void draw_landmark(Evas *e3d) {
+    static unsigned long frame_count = 0;
+    PointLength draw_order[landmark_data_count];
+    int i, j, k;
+    Point camera_coord;
+    int landmark_angle;
+    double culling_length;
+
+    if (enable_navi == FALSE) {
+        for (i = 0; i < landmark_data_count; i++) {
+            for (j = 0; j < 6; j++) {
+                evas_object_hide(landmark_cube[i]->side[j].o);
+            }
+        }
+        return;
+    }
+    calc_landmarks_coord_by_camera();
+
+    camera_coord.x = camera.x;
+    camera_coord.z = camera.z;
+
+    /* calc landmark rotation */
+    landmark_angle = (int)((conf_data[LANDMARK_ROTATION] / (1.0 / TIME_INTERVAL_AR)) * frame_count) % 360;
+
+    culling_length = CULLING_LENGTH_LANDMARKS * CULLING_LENGTH_LANDMARKS;
+
+    /* In order to draw from distant landmark. */
+    for (i = 0; i < landmark_data_count; i++) {
+        draw_order[i].index = i;
+        draw_order[i].length = calc_square_length(landmark[i], camera_coord);
+
+        /* for culling */
+        if (culling_length < draw_order[i].length) {
+            draw_order[i].drawable = FALSE;
+        } else {
+            draw_order[i].drawable = TRUE;
+        }
+    }
+
+    qsort(draw_order, landmark_data_count, sizeof(PointLength), length_comp);
+
+    for (i = 0; i < landmark_data_count; i++) {
+        j = draw_order[i].index;
+        if (draw_order[i].drawable == TRUE) {
+            _cube_draw(landmark_cube[j], landmark[j].x, landmark[j].y, landmark[j].z, 
+                    0, landmark_angle, 0);
+        } else {
+            for (k = 0; k < 6; k++) {
+                evas_object_hide(landmark_cube[j]->side[k].o);
+            }
+        }
+    }
+
+    frame_count++;
+}
+
+void
+_camera_pos(Evas_Coord x, Evas_Coord y, Evas_Coord z, double angle)
+{
+    // uim_debug("camera_pos x:%d y:%d z:%d angle:%d", x, y, z, angle);
+    camera.x = x;
+    camera.y = y;
+    camera.z = z;
+    camera.angle = angle;
+}
+
+void _camera_move(double speed, double angle) {
+    double x, y, z;
+    double rad;
+
+    rad = (-angle) * M_PI / 180.0;
+
+    x = camera.x + speed * sin(rad);
+    y = camera.y;
+    z = camera.z + speed * cos(rad);
+
+    _camera_pos(x, y, z, angle);
+}
+
+void calc_camera_coord() {
+    double x, z;
+
+    x = (camera_geocode.lon - csv_route[0].lon) * LON_CONVERT * COORD_CONVERT_COEFFICIENT;
+    z = (camera_geocode.lat - csv_route[0].lat) * LAT_CONVERT * COORD_CONVERT_COEFFICIENT;
+
+    _camera_pos(x, camera.y, z, (360.0 - (double)camera_geocode.dir));
+
+}
+
+/******************************************************************************
+ * Functions for Drawing on Evas
+ ******************************************************************************/
+Plane* _plane_new(Evas *e3d, Evas_Coord w, Evas_Coord d, Evas_Coord h)
+{
+    Plane *plane;
+    Evas_Object *o;
+
+    plane = calloc(1, sizeof(Plane));
+
+    /* origin point */
+    w -= (w / 2);
+
+    o = evas_object_rectangle_add(e3d);
+    plane->o = o;
+
+    evas_object_resize(o, 256, 256);
+    evas_object_hide(o);
+
+    SIDE_POINT(0, -w, -h,  d,   0,   0);
+    SIDE_POINT(1,  w, -h,  d, 256,   0);
+    SIDE_POINT(2,  w, -h, -d, 256, 256);
+    SIDE_POINT(3, -w, -h, -d,   0, 256);
+
+    evas_object_layer_set(o, LAYER_ROUTE);
+
+    plane->drawable = TRUE;
+
+    return plane;
+}
+
+void _plane_draw(Plane *plane) {
+    static Evas_Map *m2 = NULL;
+    int i;
+
+    Evas_Coord fix_z[4];
+
+    if (!m2) m2 = evas_map_new(4);
+    evas_map_smooth_set(m2, 0);
+
+#ifdef _USE_Z_LIMIT_FIX_
+    if(plane->drawable == FALSE) {
+        evas_object_hide(plane->o);
+        return;
+    }
+#endif
+
+    evas_object_color_set(plane->o, 51, 178, 0, 179);
+
+    /* set points */
+    evas_map_point_coord_set(m2, 0, (Evas_Coord)(plane->pt[0].x + ((W_WIDTH) / 2)),
+            (Evas_Coord)(plane->pt[0].y + ((W_NAVI_HEIGHT) / 2)), (Evas_Coord)(plane->pt[0].z + FRONT_SIDE_Z));
+    evas_map_point_coord_set(m2, 1, (Evas_Coord)(plane->pt[1].x + ((W_WIDTH) / 2)),
+            (Evas_Coord)(plane->pt[1].y + ((W_NAVI_HEIGHT) / 2)), (Evas_Coord)(plane->pt[1].z + FRONT_SIDE_Z));
+    evas_map_point_coord_set(m2, 2, (Evas_Coord)(plane->pt[2].x + ((W_WIDTH) / 2)),
+            (Evas_Coord)(plane->pt[2].y + ((W_NAVI_HEIGHT) / 2)), (Evas_Coord)(plane->pt[2].z + FRONT_SIDE_Z));
+    evas_map_point_coord_set(m2, 3, (Evas_Coord)(plane->pt[3].x + ((W_WIDTH) / 2)),
+            (Evas_Coord)(plane->pt[3].y + ((W_NAVI_HEIGHT) / 2)), (Evas_Coord)(plane->pt[3].z + FRONT_SIDE_Z));
+
+    for (i = 0; i < 4; i++) {
+        evas_map_point_image_uv_set(m2, i, plane->pt[i].u, plane->pt[i].v);
+        evas_map_point_color_set(m2, i, 255, 255, 255, 255);
+    }
+    evas_map_util_3d_perspective(m2, (W_WIDTH / 2), (W_NAVI_HEIGHT / 2) - 100,
+            Z0_POSITION, FOCUS_LENGTH);
+
+    evas_object_map_enable_set(plane->o, 1);
+    evas_object_map_set(plane->o, m2);
+
+    evas_object_show(plane->o);
+
+#ifdef _SHOW_FPS_
+    polygon_count++;
+#endif
+
+}
+
+void _plane_free(Plane *plane) {
+    evas_object_del(plane->o);
+    free(plane);
+}
+
+Cube *_cube_new(Evas *e3d, Evas_Coord w, Evas_Coord h, Evas_Coord d, const char *img_path) {
+    Cube *c;
+    int i;
+
+    w -= (w / 2);
+    h -= (h / 2);
+    d -= (d / 2);
+    c = calloc(1, sizeof(Cube));
+    for (i = 0; i < 6; i++)
+    {
+        Evas_Object *o;
+        switch (i) {
+            case 0:
+            case 1:
+            case 2:
+            case 3:
+                o = evas_object_image_add(e3d);
+                c->side[i].o = o;
+                evas_object_image_file_set(o, img_path, NULL);
+                evas_object_image_fill_set(o, 0, 0, 256, 256);
+                evas_object_resize(o, 256, 256);
+                evas_object_image_smooth_scale_set(o, 0);
+                evas_object_show(o);
+                evas_object_layer_set(o, LAYER_LANDMARK);
+                break;
+            case 4:
+            case 5:
+                o = evas_object_rectangle_add(e3d);
+                c->side[i].o = o;
+                evas_object_color_set(o, 0, 34, 119, 255);
+                evas_object_resize(o, 256, 256);
+                evas_object_show(o);
+                evas_object_layer_set(o, LAYER_LANDMARK);
+                break;
+        }
+    }
+    // First Plane (Front)
+    CUBE_POINT(0, 0, -w, -h, -d,   0,   0);
+    CUBE_POINT(0, 1,  w, -h, -d, 600,   0);
+    CUBE_POINT(0, 2,  w,  h, -d, 600, 800);
+    CUBE_POINT(0, 3, -w,  h, -d,   0, 800);
+
+    // Second Plane (Right side)
+    CUBE_POINT(1, 0,  w, -h, -d,   0,   0);
+    CUBE_POINT(1, 1,  w, -h,  d, 600,   0);
+    CUBE_POINT(1, 2,  w,  h,  d, 600, 800);
+    CUBE_POINT(1, 3,  w,  h, -d,   0, 800);
+    
+    // Third Plane (Back)
+    CUBE_POINT(2, 0,  w, -h,  d,   0,   0);
+    CUBE_POINT(2, 1, -w, -h,  d, 600,   0);
+    CUBE_POINT(2, 2, -w,  h,  d, 600, 800);
+    CUBE_POINT(2, 3,  w,  h,  d,   0, 800);
+
+    // Fourth Plane (Left side)
+    CUBE_POINT(3, 0, -w, -h,  d,   0,   0);
+    CUBE_POINT(3, 1, -w, -h, -d, 600,   0);
+    CUBE_POINT(3, 2, -w,  h, -d, 600, 800);
+    CUBE_POINT(3, 3, -w,  h,  d,   0, 800);
+    
+    // Fifth Plane (Top side)
+    CUBE_POINT(4, 0, -w, -h,  d,   0,   0);
+    CUBE_POINT(4, 1,  w, -h,  d, 256,   0);
+    CUBE_POINT(4, 2,  w, -h, -d, 256, 256);
+    CUBE_POINT(4, 3, -w, -h, -d,   0, 256);
+    
+    // Sixth Plane (Under side)
+    CUBE_POINT(5, 0, -w,  h, -d,   0,   0);
+    CUBE_POINT(5, 1,  w,  h, -d, 256,   0);
+    CUBE_POINT(5, 2,  w,  h,  d, 256, 256);
+    CUBE_POINT(5, 3, -w,  h,  d,   0, 256);
+    
+    return c;
+}
+
+void _cube_draw(Cube *c, Evas_Coord x, Evas_Coord y, Evas_Coord z,
+        double dx, double dy, double dz)
+{
+    static Evas_Map *m = NULL;
+    int i, j, k, order[6], sorted, drawable, tmp_z;
+    Evas_Coord mz[6];
+
+    drawable = TRUE;
+
+       // only 4 point
+    if (!m) m = evas_map_new(4);
+    // smooth rendering disable
+    evas_map_smooth_set(m, 0);
+
+    for (i = 0; i < 6; i++)
+    {
+        Evas_Coord tz[4];
+        
+        for (j = 0; j < 4; j++)
+        {
+
+            evas_map_point_coord_set(m, j,
+                    c->side[i].pt[j].x + ((W_WIDTH) / 2) + x - camera.x, 
+                    c->side[i].pt[j].y + ((W_NAVI_HEIGHT) / 2) + y - camera.y, 
+                    c->side[i].pt[j].z + z - camera.z + FRONT_SIDE_Z);
+            if ( !(i == 4 || i == 5)) {
+                evas_map_point_image_uv_set(m, j,
+                        c->side[i].pt[j].u,
+                        c->side[i].pt[j].v);
+            }
+            evas_map_point_color_set(m, j, 255, 255, 255, 255);
+             }
+        evas_map_util_3d_rotate(m, dx, dy, dz,
+            (W_WIDTH / 2) + x - camera.x, (W_NAVI_HEIGHT / 2) + y - camera.y, z - camera.z + FRONT_SIDE_Z);
+
+        // for camera angle
+        evas_map_util_3d_rotate(m, 0, -camera.angle, 0,
+                (W_WIDTH / 2), (W_NAVI_HEIGHT / 2), FRONT_SIDE_Z);
+
+        evas_map_util_3d_perspective(m, (W_WIDTH / 2), (W_NAVI_HEIGHT / 2) , Z0_POSITION, FOCUS_LENGTH);
+
+#ifdef _USE_Z_LIMIT_FIX_
+        for (j = 0; j < 4; j++) {
+            evas_map_point_coord_get(m, j, NULL, NULL, &tmp_z);
+            if (tmp_z < (Z_LIMIT + FRONT_SIDE_Z)) {
+                drawable = FALSE;
+            }
+        }
+#endif
+        if (evas_map_util_clockwise_get(m))
+        {
+            evas_object_map_enable_set(c->side[i].o, 1);
+            evas_object_map_set(c->side[i].o, m);
+#ifdef _USE_Z_LIMIT_FIX_
+            if (drawable == TRUE) {
+#endif
+                evas_object_show(c->side[i].o);
+#ifdef _SHOW_FPS_
+                polygon_count++;
+#endif
+#ifdef _USE_Z_LIMIT_FIX_
+            } else {
+                evas_object_hide(c->side[i].o);
+            }
+#endif
+        }
+        else {
+            evas_object_hide(c->side[i].o);
+        }
+        
+        order[i] = i;
+
+        for (j = 0; j < 4; j++) {
+            evas_map_point_coord_get(m, j, NULL, NULL, &(tz[j]));
+        }
+
+        mz[i] = (tz[0] + tz[1] + tz[2] + tz[3]) / 4;
+
+        if (mz[i] < -512) {
+            evas_object_hide(c->side[i].o);
+        }
+    }
+
+    // sort by z
+    sorted = 0;
+    do
+    {
+        sorted = 1;
+        for (i = 0; i < 5; i++)
+        {
+            if (mz[order[i]] > mz[order[i + 1]])
+            {
+                j = order[i];
+                order[i] = order[i + 1];
+                order[i + 1] = j;
+                sorted = 0;
+            }
+        }
+    }
+    while (!sorted);
+
+    evas_object_raise(c->side[order[0]].o);
+
+    for (i = 1; i < 6; i++) {
+        evas_object_stack_below(c->side[order[i]].o, c->side[order[i - 1]].o);
+    }
+}
+
+void _cube_free(Cube *c)
+{
+    int i;
+    
+    for (i = 0; i < 6; i++) evas_object_del(c->side[i].o);
+    free(c);
+}
+
+void goal_object_new(Evas *e3d) {
+    goal_object = evas_object_image_add(e3d);
+    evas_object_image_file_set(goal_object, goal_img_path, NULL);
+    evas_object_image_fill_set(goal_object, 0, 0, 600, 600);
+
+    evas_object_resize(goal_object, 256, 256);
+    evas_object_image_smooth_scale_set(goal_object, 0);
+    evas_object_hide(goal_object);
+}
+
+void goal_object_draw(Plane *plane) {
+    static Evas_Map *m3 = NULL;
+    int i;
+
+    if (plane->drawable == FALSE) {
+        evas_object_hide(goal_object);
+        return;
+    }
+
+    if (!m3) m3 = evas_map_new(4);
+    evas_map_smooth_set(m3, 0);
+
+    evas_map_point_coord_set(m3, 0, (Evas_Coord)(plane->pt[0].x + ((W_WIDTH) / 2)),
+            (Evas_Coord)(plane->pt[0].y + ((W_NAVI_HEIGHT) / 2)), (Evas_Coord)(plane->pt[0].z + FRONT_SIDE_Z));
+    evas_map_point_coord_set(m3, 1, (Evas_Coord)(plane->pt[0].x + ((W_WIDTH) / 2)),
+            (Evas_Coord)((-1) * plane->pt[0].y + (W_NAVI_HEIGHT) / 2), (Evas_Coord)(plane->pt[0].z + FRONT_SIDE_Z));
+    evas_map_point_coord_set(m3, 2,(Evas_Coord)(plane->pt[3].x + ((W_WIDTH) / 2)),
+            (Evas_Coord)((-1) * plane->pt[3].y + (W_NAVI_HEIGHT) / 2), (Evas_Coord)(plane->pt[3].z + FRONT_SIDE_Z));
+    evas_map_point_coord_set(m3, 3, (Evas_Coord)(plane->pt[3].x + ((W_WIDTH) / 2)),
+            (Evas_Coord)(plane->pt[3].y + ((W_NAVI_HEIGHT) / 2)), (Evas_Coord)(plane->pt[3].z + FRONT_SIDE_Z));
+
+    evas_map_point_image_uv_set(m3, 0, 600,   0);
+    evas_map_point_image_uv_set(m3, 1, 600, 600);
+    evas_map_point_image_uv_set(m3, 2,   0, 600);
+    evas_map_point_image_uv_set(m3, 3,   0,   0);
+
+    evas_map_util_3d_perspective(m3, (W_WIDTH / 2), (W_NAVI_HEIGHT / 2) - 100,
+            Z0_POSITION, FOCUS_LENGTH);
+
+    evas_object_map_enable_set(goal_object, 1);
+    evas_object_map_set(goal_object, m3);
+    evas_object_show(goal_object);
+
+    evas_object_raise(goal_object);
+}
+
+void goal_object_free() {
+    evas_object_del(goal_object);
+}
+
+
+/******************************************************************************
+ * Functions for Calculate Route Points
+ ******************************************************************************/
+
+#ifdef _USE_Z_LIMIT_FIX_
+void check_route_darawable_by_z_limit_fix() {
+    int i;
+    Point limit_p0, limit_p1;
+
+    POINT(limit_p0, -100, ROUTE_PLANE_HEIGHT, Z_LIMIT, 0, 0);
+    POINT(limit_p1, 100, ROUTE_PLANE_HEIGHT, Z_LIMIT, 0, 0);
+
+    for (i = 0; i < route_draw_num - 1; i++) {
+        route[i].status = NONE;
+        route[i].enable_fix = TRUE;
+
+        if (route_pre_fix[i].z < Z_LIMIT) {
+            route[i].status = STARTING_POINT;
+            route[i].enable_fix = FALSE;
+            if (route_pre_fix[i+1].z >= Z_LIMIT) {
+                calc_intersection(limit_p0, limit_p1, route_pre_fix[i], route_pre_fix[i+1], &route[i]);
+            } else {
+                if (!(i > 0 && (route[i-1].status == ENDING_POINT))) {
+                    route[i].status = BOTH_POINT;
+                    route[i].x = route_pre_fix[i].x;
+                    route[i].z = route_pre_fix[i].z;
+                }
+            }
+        } else {
+            // don't fix
+            route[i].x = route_pre_fix[i].x;
+            route[i].z = route_pre_fix[i].z;
+
+            if (route_pre_fix[i].z < 0) {
+                if (i > 0 && (fixed_plane[i - 1]->drawable == FALSE)) {
+                    route[i].enable_fix = FALSE;
+                }
+            }
+        }
+
+        if (route_pre_fix[i+1].z < Z_LIMIT) {
+            if ((route[i].status == STARTING_POINT) || (route[i].status == BOTH_POINT)) {
+                route[i].status = BOTH_POINT;
+
+                if ((i+1) == route_draw_num - 1) {
+                    route[i+1].x = route_pre_fix[i+1].x;
+                    route[i+1].z = route_pre_fix[i+1].z;
+                } else {
+                    if (route_pre_fix[i+2].z >= Z_LIMIT) {
+                        calc_intersection(limit_p0, limit_p1, route_pre_fix[i+1], route_pre_fix[i+2], &route[i+1]);
+
+                    } else {
+                        route[i+1].x = route_pre_fix[i+1].x;
+                        route[i+1].z = route_pre_fix[i+1].z;
+                    }
+                }
+
+                if ((i < route_draw_num - 1) && (route_pre_fix[i+2].z > Z_LIMIT)) {
+                    calc_intersection(limit_p0, limit_p1, route_pre_fix[i+1], route_pre_fix[i+2], &route[i+1]);
+                } else {
+                    route[i+1].x = route_pre_fix[i+1].x;
+                    route[i+1].z = route_pre_fix[i+1].z;
+                }
+            } else {
+                if (route_pre_fix[i].z >= Z_LIMIT) {
+                    route[i].status = ENDING_POINT;
+                    calc_intersection(limit_p0, limit_p1, route_pre_fix[i], route_pre_fix[i+1], &route[i+1]);
+                } else {
+                    route[i].status = BOTH_POINT;
+                }
+            }
+        } else {
+            route[i+1].x = route_pre_fix[i+1].x;
+            route[i+1].z = route_pre_fix[i+1].z;
+        }
+
+        if (route[i].status == BOTH_POINT) {
+            fixed_plane[i]->drawable = FALSE;
+        } else {
+            fixed_plane[i]->drawable = TRUE;
+        }
+
+    }
+    
+
+}
+#endif
+
+void calc_route_coord_by_camera() {
+    int i;
+    Point orizin;
+
+    for (i = 0; i < route_draw_num; i++) {
+#ifdef _USE_Z_LIMIT_FIX_
+        route_pre_fix[i].x = route_raw[i].x - camera.x;
+        route_pre_fix[i].z = route_raw[i].z - camera.z;
+        rotate_xz(route_pre_fix[i], &route_pre_fix[i], camera.angle);
+
+#else
+        route[i].x = route_raw[i].x - camera.x;
+        route[i].z = route_raw[i].z - camera.z;
+        rotate_xz(route[i], &route[i], camera.angle);
+
+#endif
+    }
+
+    orizin.x = 0;
+    orizin.y = 0;
+#ifdef _USE_Z_LIMIT_FIX_
+    goal_square_length = calc_square_length(orizin, route_pre_fix[route_draw_num - 1]);
+#else
+    goal_square_length = calc_square_length(orizin, route[route_draw_num - 1]);
+#endif
+
+    for (i = 0; i < route_draw_num - 1; i++) {
+        fixed_plane[i]->drawable = TRUE;
+    }
+
+#ifdef _USE_Z_LIMIT_FIX_
+    check_route_darawable_by_z_limit_fix();
+#endif
+
+    calc_route_distance();
+    calc_route_distance_to_camera();
+    check_route_drawable_by_distance_to_camera();
+}
+
+void calc_route_distance_to_camera() {
+    int i;
+    Point origin;
+
+    origin.x = 0;
+    origin.z = 0;
+
+    for ( i = 0; i < route_draw_num; i++) {
+        route_square_length_camera[i] = calc_square_length(route[i], origin);
+    }
+
+}
+
+void check_route_drawable_by_distance_to_camera() {
+    int i, culling_route_count;
+    double culling_length;
+
+    culling_route_count = 0;
+    culling_length = CULLING_LENGTH_ROUTE * CULLING_LENGTH_ROUTE;
+
+    for ( i = 0; i < route_draw_num - 1; i++) {
+        if ((route_square_length_camera[i] > culling_length) && 
+                (route_square_length_camera[i+1] > culling_length)) {
+            fixed_plane[i]->drawable = FALSE;
+            culling_route_count++;
+        }
+    }
+
+}
+
+void calc_fixed_box_points_all() {
+    int i;
+    for (i = 0; i < route_draw_num - 1; i++) {
+        calc_fixed_box_points(i);
+    }
+}
+
+void calc_fixed_box_points(int routenum) {
+#ifdef _USE_Z_LIMIT_FIX_
+    if (routenum == 0 || route[routenum].enable_fix == FALSE) {
+#else
+    if (routenum == 0) {
+#endif
+        fixed_plane[routenum]->pt[1] = base_plane[routenum]->pt[1];
+        fixed_plane[routenum]->pt[2] = base_plane[routenum]->pt[2];
+    } else {
+        fixed_plane[routenum]->pt[1] = calc_fix_point(routenum, 1);
+        fixed_plane[routenum]->pt[2] = calc_fix_point(routenum, 2);
+    }
+
+#ifdef _USE_Z_LIMIT_FIX_
+    if (routenum == route_draw_num - 2 || (route[routenum].status == ENDING_POINT || route[routenum].status == BOTH_POINT)) {
+#else
+    if (routenum == route_draw_num - 2) {
+#endif
+        fixed_plane[routenum]->pt[0] = base_plane[routenum]->pt[0];
+        fixed_plane[routenum]->pt[3] = base_plane[routenum]->pt[3];
+    } else {
+        fixed_plane[routenum]->pt[0] = calc_fix_point(routenum, 0);
+        fixed_plane[routenum]->pt[3] = calc_fix_point(routenum, 3);
+    }
+}
+
+Point calc_fix_point(int routenum, int point_index) {
+    double m;
+    Point result, p0, p1;
+
+    if (route_distance[routenum] > (BOX_FIXED_LENGTH * 2)) {
+        m = (route_distance[routenum] - BOX_FIXED_LENGTH) / route_distance[routenum];
+    } else {
+        m = 0.5;
+    }
+
+
+    POINT(result, 0, ROUTE_PLANE_HEIGHT, 0, 0, 0);
+    POINT(p0, 0, ROUTE_PLANE_HEIGHT, 0, 0, 0);
+    POINT(p1, base_plane[routenum]->pt[point_index].x, ROUTE_PLANE_HEIGHT, base_plane[routenum]->pt[point_index].z, 0, 0);
+
+    if (point_index == 0) {
+        p0.x = base_plane[routenum]->pt[1].x;
+        p0.z = base_plane[routenum]->pt[1].z;
+    } else if (point_index == 1) {
+        p0.x = base_plane[routenum]->pt[0].x;
+        p0.z = base_plane[routenum]->pt[0].z;
+    } else if (point_index == 2) {
+        p0.x = base_plane[routenum]->pt[3].x;
+        p0.z = base_plane[routenum]->pt[3].z;
+    } else {
+        p0.x = base_plane[routenum]->pt[2].x;
+        p0.z = base_plane[routenum]->pt[2].z;
+    }
+
+    result.x = (m * (p1.x - p0.x)) + p0.x;
+    result.z = (m * (p1.z - p0.z)) + p0.z;
+
+    return result;
+}
+
+void draw_curve(int routenum) {
+    int i;
+
+    Point con_point1;
+    Point con_point2;
+    Point curve_point1[ROUTE_DIVISION_NUMBER+1];
+    Point curve_point2[ROUTE_DIVISION_NUMBER+1];
+
+    calc_intersection(base_plane[routenum]->pt[0], base_plane[routenum]->pt[1],
+                    base_plane[routenum+1]->pt[0], base_plane[routenum+1]->pt[1], &con_point1);
+    calc_intersection(base_plane[routenum]->pt[3], base_plane[routenum]->pt[2],
+                    base_plane[routenum+1]->pt[3], base_plane[routenum+1]->pt[2], &con_point2);
+
+#ifdef _E3D_H_OUTPUT_PRINT_
+    uim_debug("con_point1 x = %f, z = %f \n", con_point1.x, con_point1.z);
+    uim_debug("con_point2 x = %f, z = %f \n", con_point2.x, con_point2.z);
+#endif
+
+    calc_bezier_points(fixed_plane[routenum]->pt[0], con_point1, fixed_plane[routenum+1]->pt[1], curve_point1);
+    calc_bezier_points(fixed_plane[routenum]->pt[3], con_point2, fixed_plane[routenum+1]->pt[2], curve_point2);
+
+    for (i = 0; i < (ROUTE_DIVISION_NUMBER) + 1 ;i++) {
+        if (curve_point1[i].z < Z_LIMIT) {
+            curve_point1[i].z = Z_LIMIT;
+        }
+        if (curve_point2[i].z < Z_LIMIT) {
+            curve_point2[i].z = Z_LIMIT;
+        }
+    }
+
+    for (i = 0; i < ROUTE_DIVISION_NUMBER; i++) {
+        PLANE_POINT(division_plane[routenum][i], 0, curve_point1[i+1].x, ROUTE_PLANE_HEIGHT, curve_point1[i+1].z, 0, 0);
+        PLANE_POINT(division_plane[routenum][i], 1, curve_point1[i].x, ROUTE_PLANE_HEIGHT, curve_point1[i].z, 256, 0);
+        PLANE_POINT(division_plane[routenum][i], 2, curve_point2[i].x, ROUTE_PLANE_HEIGHT, curve_point2[i].z, 256, 256);
+        PLANE_POINT(division_plane[routenum][i], 3, curve_point2[i+1].x, ROUTE_PLANE_HEIGHT, curve_point2[i+1].z, 0, 256);
+
+        _plane_draw(division_plane[routenum][i]);
+
+#ifdef _E3D_H_OUTPUT_PRINT_
+        uim_debug("Division Plane %d : x0 = %f, z0 = %f, x1 = %f, z1 = %f, x2 = %f, z2 = %f, x3 = %f, z3 = %f\n",
+            routenum, division_plane[routenum][i]->pt[0].x, division_plane[routenum][i]->pt[0].z,
+               division_plane[routenum][i]->pt[1].x, division_plane[routenum][i]->pt[1].z,
+               division_plane[routenum][i]->pt[2].x, division_plane[routenum][i]->pt[2].z,
+               division_plane[routenum][i]->pt[3].x, division_plane[routenum][i]->pt[3].z);
+        uim_debug("Draw division plane.\n");
+#endif
+
+    }
+}
+
+
+void calc_bezier_points(Point p0, Point p1, Point p2, Point *points) {
+    int i;
+    double a, b, x, z;
+    Point p;
+
+    for(i = 0; i < ROUTE_DIVISION_NUMBER + 1; i++) {
+        b = (double)i / ROUTE_DIVISION_NUMBER;
+        a = 1 - b;
+
+        x = a * a * p0.x + 2 * a * b * p1.x + b * b * p2.x;
+        z = a * a * p0.z + 2 * a * b * p1.z + b * b * p2.z;
+
+        POINT(p, x, ROUTE_PLANE_HEIGHT, z, 0, 0);
+        points[i] = p;
+
+#ifdef _E3D_H_OUTPUT_PRINT_
+        uim_debug("bezier_points %d : x = %f, y = %f, z = %f\n", i, points[i].x, points[i].y, points[i].z);
+#endif
+    }
+}
+
+void calc_base_box_points_all() {
+    int i;
+    for (i = 0; i < route_draw_num - 1; i++) {
+        calc_base_box_points(i);
+    }
+
+}
+
+void calc_base_box_points(int routenum) {
+    /* Determine the angle. */
+    double th = atan2((route[routenum+1].z - route[routenum].z),
+                    (route[routenum+1].x - route[routenum].x));
+    /* Determine the distance. */
+    double dis = route_distance[routenum];
+
+#ifdef _E3D_H_OUTPUT_PRINT_
+    uim_debug("th = %f\n", (th*180/M_PI));
+#endif
+
+    PLANE_POINT(base_plane[routenum], 0,
+            (cos(th)*dis - sin(th)*(-ROUTE_PLANE_WIDTH)) + route[routenum].x,
+            ROUTE_PLANE_HEIGHT,
+            (sin(th)*dis + cos(th)*(-ROUTE_PLANE_WIDTH)) + route[routenum].z, 0, 0);
+
+    PLANE_POINT(base_plane[routenum], 1,
+            (cos(th)*0 - sin(th)*(-ROUTE_PLANE_WIDTH)) + route[routenum].x,
+            ROUTE_PLANE_HEIGHT,
+            (sin(th)*0 + cos(th)*(-ROUTE_PLANE_WIDTH)) + route[routenum].z, 256, 0);
+
+    PLANE_POINT(base_plane[routenum], 2,
+            (cos(th)*0 - sin(th)*(ROUTE_PLANE_WIDTH)) + route[routenum].x,
+            ROUTE_PLANE_HEIGHT,
+            (sin(th)*0 + cos(th)*(ROUTE_PLANE_WIDTH)) + route[routenum].z, 256, 256);
+
+    PLANE_POINT(base_plane[routenum], 3,
+            (cos(th)*dis - sin(th)*(ROUTE_PLANE_WIDTH)) + route[routenum].x,
+            ROUTE_PLANE_HEIGHT,
+            (sin(th)*dis + cos(th)*(ROUTE_PLANE_WIDTH)) + route[routenum].z, 0, 256);
+
+#ifdef _E3D_H_OUTPUT_PRINT_
+    uim_debug("Plane %d : x0 = %f, z0 = %f, x1 = %f, z1 = %f, x2 = %f, z2 = %f, x3 = %f, z3 = %f\n",
+            routenum, base_plane[routenum]->pt[0].x, base_plane[routenum]->pt[0].z,
+               base_plane[routenum]->pt[1].x, base_plane[routenum]->pt[1].z,
+               base_plane[routenum]->pt[2].x, base_plane[routenum]->pt[2].z,
+               base_plane[routenum]->pt[3].x, base_plane[routenum]->pt[3].z);
+#endif
+}
+
+/******************************************************************************
+ * Functions for Calculate Landmark Points
+ ******************************************************************************/
+void calc_landmarks_coord_by_camera() {
+    int i;
+
+    for (i = 0; i < landmark_data_count; i++) {
+        landmark[i].x = landmark_raw[i].x;
+        landmark[i].y = landmark_raw[i].y;
+        landmark[i].z = landmark_raw[i].z;
+    }
+
+}
+
+/******************************************************************************
+ * Functions for Calculate (Common)
+ ******************************************************************************/
+void calc_route_distance() {
+    int i;
+    for (i = 0; i < route_draw_num - 1; i++) {
+        route_distance[i] = calc_length(route[i], route[i+1]);
+    }
+}
+
+/** Calculate the distance between two points.(only x-z plane) */
+double calc_length(Point p0, Point p1) {
+    return sqrt( (p1.x - p0.x) * (p1.x - p0.x) + (p1.z - p0.z) * (p1.z - p0.z) );
+}
+
+/** Calculate the square of distance between two points.(only x-z plane) */
+double calc_square_length(Point p0, Point p1) {
+    return ((p1.x - p0.x) * (p1.x - p0.x) + (p1.z - p0.z) * (p1.z - p0.z));
+}
+
+/* rotate point (center is orizin, xz-plane) */
+void rotate_xz(Point src, Point *dist, double angle) {
+    double rx, rz, sine, cosine;
+    double rad;
+
+    rad = (-angle) * M_PI / 180.0;
+
+    sine = sin(rad);
+    cosine = cos(rad);
+
+    rx = cosine * src.x - sine * src.z;
+    rz = sine * src.x + cosine * src.z;
+
+    dist->x = rx;
+    dist->y = src.y;
+    dist->z = rz;
+    dist->u = src.u;
+    dist->v = src.v;
+}
+
+void calc_intersection(Point p0, Point p1, Point p2, Point p3, Point *point) {
+    double S1, S2, result_x, result_z;
+    S1 = ((p2.x - p3.x) * (p1.z - p3.z) - (p2.z - p3.z) * (p1.x - p3.x))/2;
+    S2 = ((p2.x - p3.x) * (p3.z - p0.z) - (p2.z - p3.z) * (p3.x - p0.x))/2;
+
+    result_x = (p1.x + (p0.x - p1.x) * S1 / (S1 + S2));
+    result_z = (p1.z + (p0.z - p1.z) * S1 / (S1 + S2));
+
+    point->x = result_x;
+    point->y = ROUTE_PLANE_HEIGHT;
+    point->z = result_z;
+    point->u = 0;
+    point->v = 0;
+}
+
+int length_comp(const void *pl0, const void *pl1) {
+    PointLength point_length0 = *(PointLength *)pl0;
+    PointLength point_length1 = *(PointLength *)pl1;
+
+    if (point_length0.length == point_length1.length) {
+        return 0;
+    } else if (point_length0.length < point_length1.length) {
+        return 1;
+    }
+    return -1;
+}
+
+
diff --git a/src/e3d.h b/src/e3d.h
new file mode 100644 (file)
index 0000000..bcb5875
--- /dev/null
+++ b/src/e3d.h
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the 
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+/**
+ * @brief   header file oflibrary which displays 3D field of view
+ *
+ * @date    Apr-25-2013
+ */
+
+#ifndef SAMPLENAVI_E3D_H_
+#define SAMPLENAVI_E3D_H_
+
+#include <Ecore_Evas.h>
+
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+
+#include "define.h"
+#include "samplenavi.h"
+
+double goal_square_length;
+
+/* Functions */
+void draw_route(Evas *e3d);
+void init_e3d( Evas *e3d, void *p_in, size_t len );
+void e3d_cleanup();
+
+void _camera_pos(Evas_Coord x, Evas_Coord y, Evas_Coord z, double angle);
+void _camera_move(double speed, double angle);
+void calc_camera_coord();
+
+#ifdef _USE_Z_LIMIT_FIX_
+enum Check_Route {
+       NONE,
+       STARTING_POINT,                         // FIXED Z_LIMIT START POINT
+       ENDING_POINT,                           // FIXED Z_LIMIT END POINT
+       BOTH_POINT                                      // FIXED Z_LIMIT START/END POINT
+};
+#endif
+
+/* Structs */
+typedef struct _CsvRoute {
+       double lon;
+       double lat;
+} CsvRoute;
+
+typedef struct _CsvLandmark {
+       double lon;
+       double lat;
+       char id;
+} CsvLandmark;
+
+typedef struct _Point
+{
+       double x, y, z, u, v;
+#ifdef _USE_Z_LIMIT_FIX_
+       enum Check_Route status;
+       char enable_fix;
+#endif
+} Point;
+
+typedef struct _Plane
+{
+       Evas_Object *o;
+       Point pt[4];
+       int drawable;
+} Plane;
+
+typedef struct _Cube
+{
+       Plane side[6];
+       double angle;
+} Cube;
+
+/* Camera Positions */
+typedef struct _Camera
+{
+       Evas_Coord x, y, z;
+       double angle;
+} Camera;
+
+typedef struct _CameraGeocode
+{
+       double lat, lon;
+       int dir;
+} CameraGeocode;
+
+typedef struct _MapPos
+{
+       double lat;
+       double lon;
+       int dir;
+} MapPos;
+
+/* Extern */
+extern Camera camera;
+extern CameraGeocode camera_geocode;
+extern MapPos map_pos;
+extern char set_route;
+extern char enable_navi;
+#ifdef _SHOW_FPS_
+extern int polygon_count;
+#endif
+
+/* Macros */
+#define POINT(point, xx, yy, zz, uu, vv) \
+       point.x = xx; \
+       point.y = yy; \
+       point.z = zz; \
+       point.u = uu; \
+       point.v = vv
+
+#define PLANE_POINT(plane, i, xx, yy, zz, uu, vv) \
+       plane->pt[i].x = xx; \
+       plane->pt[i].y = yy; \
+       plane->pt[i].z = zz; \
+       plane->pt[i].u = uu; \
+       plane->pt[i].v = vv
+
+#define SIDE_POINT(p, xx, yy, zz, uu, vv) \
+       plane->pt[p].x = xx; \
+       plane->pt[p].y = yy; \
+       plane->pt[p].z = zz; \
+       plane->pt[p].u = uu; \
+       plane->pt[p].v = vv
+
+#define CUBE_POINT(n, p, xx, yy, zz, uu, vv) \
+       c->side[n].pt[p].x = xx; \
+       c->side[n].pt[p].y = yy; \
+       c->side[n].pt[p].z = zz; \
+       c->side[n].pt[p].u = uu; \
+       c->side[n].pt[p].v = vv
+
+
+#endif /* SAMPLENAVI_E3D_H_ */
+
diff --git a/src/samplenavi.c b/src/samplenavi.c
new file mode 100644 (file)
index 0000000..93c305d
--- /dev/null
@@ -0,0 +1,1834 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the 
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+/**
+ * @brief   sample navigation application main
+ *
+ * @date    Apr-25-2013
+ */
+
+#include "define.h"
+#include <stdio.h>
+#include <stdbool.h>
+#include <time.h>
+#include <stddef.h>
+#include <getopt.h>
+#include <dbus/dbus.h>
+#include <libwebsockets.h>
+#include <EWebKit2.h>
+#include <Eina.h>
+#include <Ecore.h>
+#include <Ecore_Evas.h>
+#include <Elementary.h>
+#include "samplenavi.h"
+#include "e3d.h"
+#include "ico_apf.h"
+#include "ico_apf_ecore.h"
+#include "ico_apf_log.h"
+
+#ifdef _USE_OPENCV_
+#include <highgui.h>
+#endif
+
+
+/* DEBUG.s */
+//#define TEST_TIME 0.001
+//#define TEST_TIME 0.066
+#define TEST_TIME 0.5
+
+//#define DEBUG_METER_TEXT_DSP
+
+//#define DEBUG_VIC_INFO_SET
+#ifdef DEBUG_VIC_INFO_SET
+extern int route_data_count;
+extern CsvRoute csv_route[MAX_ROUTE_POINTS];
+static double test_lat = 35.47945;
+static double test_lon = 139.40026;
+static int test_cnt = 0;
+#endif
+/* DEBUG.e */
+
+/*============================================================================*/
+/* Define fixed parameters                                                    */
+/*============================================================================*/
+/* AMB */
+#define CONFIG_FILE    "/opt/apps/org.tizen.ico.app-samplenavi/res/config.txt"
+#define DBUS_SERVICE   "org.automotive.message.broker"
+#define DBUS_INTERFACE "org.freedesktop.DBus.Properties"
+#define DBUS_METHOD    "Get"
+#define MAX_PARA_NUM   4 /* Lat,Lon,Dir,VicSpeed */
+#define LATITUDE       0
+#define LONGITUDE      1
+#define DIRECTION      2
+#define VEHICLESPEED   3
+
+/* Setting screen */
+#define ICO_APP_BUF_SIZE    (1024)
+
+/*============================================================================*/
+/* Define data types                                                          */
+/*============================================================================*/
+/* AMB */
+union VicVal_t{
+    dbus_int32_t i32_val;
+    dbus_int32_t i16_val;
+    dbus_uint32_t u32_val;
+    dbus_uint16_t u16_val;
+    uint8_t byte_val;
+    dbus_bool_t b_val;
+    double d_val;
+    char *s_val;
+};
+
+struct vic_data_t{
+    int  property;
+    char name[32];
+    char path_name[64];
+    char interface_name[64];
+    char property_name[32];
+};
+
+struct vic_key_data_t{
+    int  id;
+    char name[32];
+};
+
+/*============================================================================*/
+/* Function prototype for static(internal) functions                          */
+/*============================================================================*/
+static double get_time();
+static void set_default_data();
+static void load_config_file();
+static void e_ui_draw();
+static void e_ui_init();
+static void e_map_init();
+static void e_map_draw();
+#ifdef _USE_OPENCV_
+static void convert_data_evas_cv(Evas_Object *eo, IplImage *iplimage);
+static void evas_object_image_from_cv(Evas_Object *eo, const char* filepath);
+#endif
+static Eina_Bool _time_interval_navi_cb(void *cam);
+static Eina_Bool _time_interval_map_renew_cb(void *data);
+static Eina_Bool callback_listener(void *data);
+static int callback_http(
+  struct libwebsocket_context *context, struct libwebsocket *wsi,
+  enum libwebsocket_callback_reasons reason, void *user, void *in, size_t len);
+static bool parse_elementary_value(
+  union VicVal_t *vic_val_p, DBusMessageIter *iter);
+static bool parse_value(union VicVal_t *vic_val_p, DBusMessageIter *iter);
+static int getAmbDbus(int key, union VicVal_t *vic_val_p);
+static void getLocationFromAmb();
+static int get_config();
+static char* edje_parse_str(void *in, int arg_num);
+static void event_message(struct libwebsocket *wsi, char *format, ...);
+static void _touch_up_edje(
+  void *data, Evas *evas , Evas_Object *obj, void *event_info);
+static int loading_edje_file(const char *edje_file);
+static void res_callback(
+  ico_apf_resource_notify_info_t* info, void *user_data);
+
+/*============================================================================*/
+/* Tables and Valiables                                                       */
+/*============================================================================*/
+int conf_data[CONF_DATA_MAX];
+
+/* Screen right */
+static char     sscrntype[32];
+
+/* Setting screen */
+static Evas *g_evas;
+static Eina_List *g_img_list = NULL;
+static Evas_Object *g_edje; /* loaded edje objects */
+static unsigned char edje_str[ICO_APP_BUF_SIZE];
+
+/* Meter Display */
+static int ui_vicspeed = 0;
+static Evas_Object *ui_vicspeed_text;
+static Evas_Object *ui_meter_l;
+static Evas_Object *ui_meter_c[10];
+static Evas_Object *ui_meter_r[10];
+static int fig_l = 0;
+static int fig_c = 0;
+static int fig_r = 0;
+
+const static char *meter_l_path = {
+IMAGES_DIR "/Meter/Meters_SpeedNum_1l.png"};
+
+const static char *meter_c_path[10] = {
+IMAGES_DIR "/Meter/Meters_SpeedNum_0c.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_1c.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_2c.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_3c.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_4c.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_5c.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_6c.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_7c.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_8c.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_9c.png"};
+
+const static char *meter_r_path[10] = {
+IMAGES_DIR "/Meter/Meters_SpeedNum_0r.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_1r.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_2r.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_3r.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_4r.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_5r.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_6r.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_7r.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_8r.png",
+IMAGES_DIR "/Meter/Meters_SpeedNum_9r.png"};
+
+/* AMB */
+static DBusConnection *g_connection = NULL; /* D-Bus Connection */
+static int property_num = 0;
+const static char Bus_name[] = DBUS_SERVICE;
+static struct vic_data_t vic_data[MAX_PARA_NUM];
+
+const struct vic_key_data_t vic_key_data[]={
+{ LATITUDE,     "Latitude"    },
+{ LONGITUDE,    "Longitude"   },
+{ DIRECTION,    "Direction"   },
+{ VEHICLESPEED, "VehicleSpeed"},
+{ -1,           "END"         }};
+
+/* BASE */
+static Ecore_Evas *window;
+static Evas *e_cam;
+static Evas *e_3d;
+static Evas *e_ui;
+static Evas *e_map;
+
+#ifdef _USE_OPENCV_
+IplImage *captureImage;
+static CvCapture *capture;
+#endif
+
+Evas_Object *cam;
+
+Evas_Object *ui_bg;
+Evas_Object *ui_btn;
+Evas_Object *ui_goal_text;
+Evas_Object *ui_address;
+
+#ifdef _SHOW_FPS_
+Evas_Object *ui_fps;
+Evas_Object *ui_fps_bg;
+Evas_Object *ui_polygon_count;
+Evas_Object *ui_polygon_count_bg;
+double fps;
+#endif
+
+Evas_Object *browser;
+
+/* CAMERA */
+static const char *test_map_path = IMAGES_DIR "/test_map2.png";
+static const char *test_camera_path = IMAGES_DIR "/test_cameraview.png";
+
+/* WEBSOCKET */
+static int event_type = 0;
+static int connected = 0;
+static struct libwebsocket *socket_val = NULL;
+static struct libwebsocket_context *context;
+static struct libwebsocket_protocols protocols[] = {
+    {
+        "http-only",                // name
+        callback_http,              // callback
+        0                           // per_session_data_size
+    },
+    {
+            NULL, NULL, 0
+    }
+};
+
+static int port = 50414;
+static char addr[16] = "127.0.0.1";
+static char proxy_uri[512] = "";
+
+/*============================================================================*/
+/* functions                                                                  */
+/*============================================================================*/
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   get_time
+ *          Time acquisition(second).
+ *
+ * @param       none
+ * @return      time(second)
+ */
+/*--------------------------------------------------------------------------*/
+static double
+get_time()
+{
+    struct timeval sec_timeofday;
+    gettimeofday(&sec_timeofday, NULL);
+    return ((sec_timeofday.tv_sec) + 
+      (sec_timeofday.tv_usec / 1000000.0));
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   set_default_data
+ *          Set Default data without define in conf file.
+ *
+ * @param       none
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+set_default_data()
+{
+    int i;
+
+    for (i = 0; i < CONF_DATA_MAX; i++) {
+        if (conf_data[i] == 0) {
+            switch (i) {
+                case USB_CAMERA_ID:
+                    conf_data[USB_CAMERA_ID] = DEF_USB_CAMERA_ID;
+                    break;
+                case LANDMARK_POSITION:
+                    conf_data[LANDMARK_POSITION] = DEF_LANDMARK_POSITION;
+                    break;
+                case LANDMARK_ROTATION:
+                    conf_data[LANDMARK_ROTATION] = DEF_LANDMARK_ROTATION;
+                    break;
+            }
+        }
+    }
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   load_config_file
+ *          A config file is loaded.
+ *
+ * @param       none
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+load_config_file()
+{
+    FILE *fp;
+    char str[512];
+    char *valuestr;
+    int i = 0;
+
+    for (i = 0; i < CONF_DATA_MAX; i++) {
+        conf_data[i] = 0;
+    }
+
+    if ((fp = fopen(config_path, "r")) == NULL) {
+        fprintf(stderr, "%s\n", "Error : can't open file.(samplenavi.conf)\n");
+        set_default_data();
+        // TODO for test
+        uim_debug("USB_CAMERA_ID = %d", conf_data[USB_CAMERA_ID]);
+        uim_debug("LANDMARK_POSITION = %d", conf_data[LANDMARK_POSITION]);
+        uim_debug("LANDMARK_ROTATION = %d", conf_data[LANDMARK_ROTATION]);
+        return;
+    }
+
+    while (fscanf(fp, "%s", str) != EOF) {
+        if (strncmp(str, "USBCAMERAID", 11) == 0) {
+            valuestr = strtok((char *)(str) + 12, "=");
+            if(valuestr != NULL)
+            {
+                conf_data[USB_CAMERA_ID] = atoi(valuestr);
+            }
+        } else if (strncmp(str, "LANDMARKPOSITION", 16) == 0) {
+            valuestr = strtok((char *)(str) + 17, "=");
+            if(valuestr != NULL)
+            {
+                conf_data[LANDMARK_POSITION] = atoi(valuestr);
+            }
+        } else if (strncmp(str, "LANDMARKROTATION", 16) == 0) {
+            valuestr = strtok((char *)(str) + 17, "=");
+            if(valuestr != NULL)
+            {
+                conf_data[LANDMARK_ROTATION] = atoi(valuestr);
+            }
+        } else if (strncmp(str, "WEBSOCKETPORT", 13) == 0) {
+            valuestr = strtok((char *)(str) + 14, "=");
+            if(valuestr != NULL)
+            {
+                port = atoi(valuestr);
+            }
+        } else if (strncmp(str, "IPADDR", 6) == 0) {
+            valuestr = strtok((char *)(str) + 7, "=");
+            if(valuestr != NULL)
+            {
+                strcpy( addr, valuestr);
+            }
+        } else if (strncmp(str, "PROXYURI", 8) == 0) {
+            valuestr = strtok((char *)(str) + 9, "=");
+            if(valuestr != NULL)
+            {
+                strcpy( proxy_uri, valuestr);
+            }
+        }
+    }
+
+    fclose(fp);
+
+    set_default_data();
+
+    // TODO for test
+    uim_debug("USB_CAMERA_ID = %d", conf_data[USB_CAMERA_ID]);
+    uim_debug("LANDMARK_POSITION = %d", conf_data[LANDMARK_POSITION]);
+    uim_debug("LANDMARK_ROTATION = %d", conf_data[LANDMARK_ROTATION]);
+    uim_debug("WEBSOKET_PORT  = %d", port);
+    uim_debug("IP_ADDR = %s", addr);
+    uim_debug("PROXY_URI = %s", proxy_uri);
+
+    return;
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   e_ui_draw
+ *          Draw UI Layer.
+ *
+ * @param       none
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+e_ui_draw()
+{
+#ifdef _SHOW_FPS_
+    char str[15];
+#endif
+
+/* Meter */
+    int value = 0;
+    int w_fig_r = 0;
+    int w_fig_c = 0;
+    int w_fig_l = 0;
+
+    evas_object_show(ui_bg);
+    evas_object_show(ui_btn);
+
+/* Meter */
+#ifdef DEBUG_METER_TEXT_DSP
+    sprintf(str, "[kph]  %d", ui_vicspeed);
+    evas_object_text_text_set(ui_vicspeed_text, str);
+    evas_object_show(ui_vicspeed_text);
+#else
+    evas_object_show(ui_vicspeed_text);
+    value = ui_vicspeed;
+    if(value > 199)
+    {
+        uim_debug("MAX SPEED OVER [%d]",value);
+        value = 199;
+    }
+
+    w_fig_r = (value % 10); value /= 10;
+    w_fig_c = (value % 10); value /= 10;
+    w_fig_l = (value % 10); value /= 10;
+
+    if(w_fig_r != fig_r)
+    {
+        evas_object_hide(ui_meter_r[fig_r]);
+        evas_object_show(ui_meter_r[w_fig_r]);
+        fig_r = w_fig_r;
+    }
+
+    if(w_fig_c != fig_c)
+    {
+        evas_object_hide(ui_meter_c[fig_c]);
+
+        if(w_fig_c != 0 ||  w_fig_l == 1)
+        {
+            evas_object_show(ui_meter_c[w_fig_c]);
+        }
+
+        fig_c = w_fig_c;
+    }
+
+    if(w_fig_l != fig_l)
+    {
+        evas_object_hide(ui_meter_l);
+
+        if(w_fig_l != 0)
+        {
+            evas_object_show(ui_meter_l);
+        }
+                
+        fig_l = w_fig_l;
+    }
+#endif
+    if (enable_navi == TRUE && set_route == TRUE) {
+        if (goal_square_length <= (GOAL_MESSAGE_LENGTH * GOAL_MESSAGE_LENGTH)) {
+            evas_object_show(ui_goal_text);
+        } else {
+            evas_object_hide(ui_goal_text);
+        }
+    }
+
+#ifdef _SHOW_FPS_
+    sprintf(str, "FPS : %.2f", fps);
+    evas_object_text_text_set(ui_fps, str);
+    sprintf(str, "Polygon : %d", polygon_count);
+    evas_object_text_text_set(ui_polygon_count, str);
+#endif
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   e_ui_init
+ *          Initialize UI Layer.
+ *
+ * @param       none
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+e_ui_init()
+{
+#ifdef _SHOW_FPS_
+    char str[15];
+#endif
+    int i = 0;
+
+    ui_bg = evas_object_rectangle_add(e_ui);
+    evas_object_color_set(ui_bg, 0, 34, 119, 255);
+    evas_object_move(ui_bg, W_TEXTAREA_X, W_TEXTAREA_Y);
+    evas_object_resize(ui_bg, W_TEXTAREA_WIDTH, W_TEXTAREA_HEIGHT);
+    evas_object_show(ui_bg);
+    evas_object_layer_set(ui_bg, LAYER_UI);
+
+    ui_btn = evas_object_image_add(e_ui);
+    evas_object_image_file_set(ui_btn, setting_button_path, NULL);
+    evas_object_image_fill_set(ui_btn, 0, 0, W_NAVIBUTTON_WIDTH, W_NAVIBUTTON_HEIGHT);
+    evas_object_move(ui_btn, W_NAVIBUTTON_X, W_NAVIBUTTON_Y);
+    evas_object_resize(ui_btn, W_NAVIBUTTON_WIDTH, W_NAVIBUTTON_HEIGHT);
+    evas_object_show(ui_btn);
+    evas_object_layer_set(ui_btn, LAYER_UI);
+
+    ui_goal_text = evas_object_image_add(e_ui);
+    evas_object_image_file_set(ui_goal_text, goal_text_img_path, NULL);
+    evas_object_image_fill_set(ui_goal_text, 0, 0, W_GOALMESSAGE_WIDTH, W_GOALMESSAGE_HEIGHT);
+    evas_object_move(ui_goal_text, W_GOALMESSAGE_X, W_GOALMESSAGE_Y);
+    evas_object_resize(ui_goal_text, W_GOALMESSAGE_WIDTH, W_GOALMESSAGE_HEIGHT);
+    evas_object_hide(ui_goal_text);
+    evas_object_layer_set(ui_goal_text, LAYER_UI);
+
+/* Meter */
+#ifdef DEBUG_METER_TEXT_DSP
+    ui_vicspeed_text = evas_object_text_add(e_ui);
+    evas_object_text_style_set(ui_vicspeed_text, EVAS_TEXT_STYLE_PLAIN);
+    evas_object_color_set(ui_vicspeed_text, 255, 255, 255, 255);
+    evas_object_text_font_set(ui_vicspeed_text, "Utopia", 28);
+    sprintf(str, "[kph]  %d", ui_vicspeed);
+    evas_object_text_text_set(ui_vicspeed_text, str);
+    evas_object_move(ui_vicspeed_text, 0, 430);
+    evas_object_resize(ui_vicspeed_text, W_GOALMESSAGE_WIDTH, W_GOALMESSAGE_HEIGHT);
+//    evas_object_hide(ui_vicspeed_text);
+    evas_object_show(ui_vicspeed_text);
+    evas_object_layer_set(ui_vicspeed_text, LAYER_UI);
+#else
+    ui_meter_l = evas_object_image_add(e_ui);
+    evas_object_image_file_set(ui_meter_l, meter_l_path, NULL);
+    evas_object_image_fill_set(ui_meter_l, 0, 0, 300, 320);
+    evas_object_move(ui_meter_l, 0, 300);
+    evas_object_resize(ui_meter_l, 300, 320);
+    evas_object_hide(ui_meter_l);
+    evas_object_layer_set(ui_meter_l, LAYER_UI);
+
+    for(i = 0; i < 10; i++)
+    {
+        ui_meter_c[i] = evas_object_image_add(e_ui);
+        evas_object_image_file_set(ui_meter_c[i], meter_c_path[i], NULL);
+        evas_object_image_fill_set(ui_meter_c[i], 0, 0, 300, 320);
+        evas_object_move(ui_meter_c[i], 0, 300);
+        evas_object_resize(ui_meter_c[i], 300, 320);
+        evas_object_hide(ui_meter_c[i]);
+        evas_object_layer_set(ui_meter_c[i], LAYER_UI);
+
+        ui_meter_r[i] = evas_object_image_add(e_ui);
+        evas_object_image_file_set(ui_meter_r[i], meter_r_path[i], NULL);
+        evas_object_image_fill_set(ui_meter_r[i], 0, 0, 300, 320);
+        evas_object_move(ui_meter_r[i], 0, 300);
+        evas_object_resize(ui_meter_r[i], 300, 320);
+        evas_object_hide(ui_meter_r[i]);
+        evas_object_layer_set(ui_meter_r[i], LAYER_UI);
+    }
+       evas_object_show(ui_meter_r[0]);
+
+    ui_vicspeed_text = evas_object_text_add(e_ui);
+    evas_object_text_style_set(ui_vicspeed_text, EVAS_TEXT_STYLE_PLAIN);
+    evas_object_color_set(ui_vicspeed_text, 255, 255, 255, 255);
+    evas_object_text_font_set(ui_vicspeed_text, "Utopia", 24);
+    evas_object_text_text_set(ui_vicspeed_text, "kph");
+    evas_object_move(ui_vicspeed_text, 180, 440);
+    evas_object_resize(ui_vicspeed_text, W_GOALMESSAGE_WIDTH, W_GOALMESSAGE_HEIGHT);
+//    evas_object_hide(ui_vicspeed_text);
+    evas_object_show(ui_vicspeed_text);
+    evas_object_layer_set(ui_vicspeed_text, LAYER_UI);
+#endif
+
+#ifdef _SHOW_FPS_
+    sprintf(str, "FPS : %.2f", fps);
+
+    ui_fps_bg = evas_object_rectangle_add(e_ui);
+    evas_object_color_set(ui_fps_bg, 255, 255, 255, 255);
+    evas_object_move(ui_fps_bg, 0, 0);
+    evas_object_resize(ui_fps_bg, 150, 20);
+    evas_object_show(ui_fps_bg);
+    evas_object_layer_set(ui_fps_bg, LAYER_UI);
+
+    ui_fps = evas_object_text_add(e_ui);
+    evas_object_text_style_set(ui_fps, EVAS_TEXT_STYLE_PLAIN);
+    evas_object_color_set(ui_fps, 0, 0, 0, 255);
+    evas_object_text_font_set(ui_fps, "Utopia", 14);
+    evas_object_text_text_set(ui_fps, str);
+    evas_object_move(ui_fps, 0, 0);
+    evas_object_resize(ui_fps, 250, 250);
+    evas_object_show(ui_fps);
+    evas_object_layer_set(ui_fps, LAYER_UI);
+
+    sprintf(str, "Polygon : %d", polygon_count);
+
+    ui_polygon_count_bg = evas_object_rectangle_add(e_ui);
+    evas_object_color_set(ui_polygon_count_bg, 255, 255, 255, 255);
+    evas_object_move(ui_polygon_count_bg, 0, 20);
+    evas_object_resize(ui_polygon_count_bg, 150, 20);
+    evas_object_show(ui_polygon_count_bg);
+    evas_object_layer_set(ui_polygon_count_bg, LAYER_UI);
+
+    ui_polygon_count = evas_object_text_add(e_ui);
+    evas_object_text_style_set(ui_polygon_count, EVAS_TEXT_STYLE_PLAIN);
+    evas_object_color_set(ui_polygon_count, 0, 0, 0, 255);
+    evas_object_text_font_set(ui_polygon_count, "Utopia", 14);
+    evas_object_text_text_set(ui_polygon_count, str);
+    evas_object_move(ui_polygon_count, 0, 20);
+    evas_object_resize(ui_polygon_count, 250, 250);
+    evas_object_show(ui_polygon_count);
+    evas_object_layer_set(ui_polygon_count, LAYER_UI);
+#endif
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   e_map_init
+ *          Initialize MAP Layer.
+ *
+ * @param       none
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+e_map_init()
+{
+    e_map = ecore_evas_get(window);
+    browser = ewk_view_add(e_map);
+    ewk_context_proxy_uri_set(ewk_view_context_get(browser), proxy_uri);
+    evas_object_move(browser, W_MAP_ORIGINE_X, W_MAP_ORIGINE_Y);
+    evas_object_resize(browser, W_WIDTH, W_MAP_HEIGHT);
+    evas_object_show(browser);
+    ewk_view_uri_set(browser, default_url);
+    evas_object_layer_set(browser, LAYER_MAP);
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   e_map_draw
+ *          Draw Map Layer(EWebKit2)
+ *
+ * @param       none
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+e_map_draw()
+{
+    evas_object_show(browser);
+}
+
+#ifdef _USE_OPENCV_
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   convert_data_evas_cv
+ *          Convert IplImage object to Evas_Object.
+ *
+ * @param[out]  eo              Evas_Object 
+ * @param[in]   iplimagenone    IplImage object
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+convert_data_evas_cv(Evas_Object *eo, IplImage *iplimage)
+{
+    int image_data_size = (iplimage->width) * iplimage->height * 4;
+    unsigned char image[image_data_size];
+    int i = 0;
+
+    if (image_data_size == 0) {
+        uim_debug("convert_data_evas_cv: IplImage empty error.");
+        return;
+    }
+
+    for (i = 0; i < (iplimage->width * iplimage->height); i++) {
+        image[i*4] = iplimage->imageData[(3*i)];
+        image[(i*4)+1] = iplimage->imageData[(3*i)+1];
+        image[(i*4)+2] = iplimage->imageData[(3*i)+2];
+        image[(i*4)+3] = 255;
+    }
+
+    /* convert to Evas_Object */
+    evas_object_image_colorspace_set(eo, EVAS_COLORSPACE_ARGB8888);
+    evas_object_image_size_set(eo, iplimage->width , iplimage->height);
+    evas_object_image_data_set(eo, image);
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   evas_object_image_from_cv
+ *          Load the picture to an IplImage object. 
+ *
+ * @param[out]  eo          Evas_Object 
+ * @param[in]   filepath    path of the file
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+evas_object_image_from_cv(Evas_Object *eo, const char* filepath)
+{
+    IplImage *iplimage;
+
+    /* load picture */
+    iplimage = cvLoadImage(filepath, CV_LOAD_IMAGE_COLOR);
+    if (iplimage == 0) {
+        uim_debug("cvLoadImageError.");
+    }
+
+    convert_data_evas_cv(eo, iplimage);
+}
+#endif
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   _time_interval_navi_cb
+ *          main timer for navigation. 
+ *
+ * @param[out]  cam    Evas_Object 
+ * @return      result
+ * @retval      ECORE_CALLBACK_RENEW    Return value to keep a callback
+ * @retval      ECORE_CALLBACK_CANCEL   Return value to remove a callback
+ */
+/*--------------------------------------------------------------------------*/
+static Eina_Bool
+_time_interval_navi_cb(void *cam)
+{
+    static double webcam_timer = 0;
+    double carinfo_lat, carinfo_lon;
+    int carinfo_dir;
+
+    /* for calc fps */
+#ifdef _SHOW_FPS_
+    static double total_frame_time = 0;
+    static int frame_count = 0;
+    static double t0;
+    double t1;
+#endif
+
+#ifdef _USE_CAMERA_
+    webcam_timer += TIME_INTERVAL_AR;
+
+    if(webcam_timer >= TIME_INTERVAL_CAMERA) {
+        webcam_timer = 0;
+
+        /* Capture from Camera */
+        cam = evas_object_image_add(e_cam);
+
+        captureImage = cvQueryFrame(capture);
+        convert_data_evas_cv(cam, captureImage);
+
+        evas_object_image_fill_set(cam, 0, 0, W_WIDTH, W_NAVI_HEIGHT);
+        evas_object_move(cam, W_NAVI_ORIGINE_X, W_NAVI_ORIGINE_Y);
+        evas_object_resize(cam, W_WIDTH, W_NAVI_HEIGHT);
+        evas_object_show(cam);
+
+    }
+#else
+    evas_object_image_fill_set(cam, 0, 0, W_WIDTH, W_NAVI_HEIGHT);
+    evas_object_move(cam, W_NAVI_ORIGINE_X, W_NAVI_ORIGINE_Y);
+    evas_object_resize(cam, W_WIDTH, W_NAVI_HEIGHT);
+    evas_object_show(cam);
+#endif
+
+    getLocationFromAmb();
+
+    calc_camera_coord();
+
+    /* render 3D view */
+    draw_route(e_3d);
+    draw_landmark(e_3d);
+
+    /* render UI view */
+    e_ui_draw();
+
+    /* render Map View */
+    e_map_draw();
+
+#ifdef _SHOW_FPS_
+    // Moving Average
+    if(frame_count == 0) {
+        t0 = get_time();
+        frame_count++;
+    } else if (frame_count < 5) {
+        t1 = get_time();
+        total_frame_time += t1 - t0;
+        t0 = t1;
+        frame_count++;
+    } else {
+        t1 = get_time();
+        total_frame_time -= total_frame_time / 4;
+        total_frame_time += t1 - t0;
+        t0 = t1;
+
+        fps = 4.0 * 1.0 / total_frame_time;
+
+    }
+#endif
+
+    return ECORE_CALLBACK_RENEW;
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   _time_interval_map_renew_cb
+ *          timer for renewal of a map.
+ *
+ * @param[out]  data    user data(UNUSED) 
+ * @return      result
+ * @retval      ECORE_CALLBACK_RENEW    Return value to keep a callback
+ * @retval      ECORE_CALLBACK_CANCEL   Return value to remove a callback
+ */
+/*--------------------------------------------------------------------------*/
+static Eina_Bool
+_time_interval_map_renew_cb(void *data)
+{
+/* DEBUG.s */
+#ifdef DEBUG_VIC_INFO_SET
+    if(test_cnt < route_data_count)
+    {
+        test_lat = csv_route[test_cnt].lat;
+        test_lon = csv_route[test_cnt].lon;
+        camera_geocode.lat = test_lat;
+        camera_geocode.lon = test_lon;
+        test_cnt++ ;
+    }
+#endif    
+/* DEBUG.e */
+
+    if((socket_val) && ((map_pos.lat != camera_geocode.lat) || (map_pos.lon != camera_geocode.lon)))
+    {
+        map_pos.lat = camera_geocode.lat;
+        map_pos.lon = camera_geocode.lon;
+
+        uim_debug ("map_pos.lat = [%f]",map_pos.lat);
+        uim_debug ("map_pos.lon = [%f]",map_pos.lon);
+
+        event_message(socket_val, "CHG VAL VIC_INFO LAT %f LON %f", map_pos.lat, map_pos.lon );
+        uim_debug ("SEND LAT LON TO SINARIO(samplenavi)");
+    }
+
+    return ECORE_CALLBACK_RENEW;
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   callback_listener
+ *          timer for libwebsocket connection surveillance.
+ *
+ * @param[out]  data    libwebsocket context 
+ * @return      result
+ * @retval      ECORE_CALLBACK_RENEW    Return value to keep a callback
+ * @retval      ECORE_CALLBACK_CANCEL   Return value to remove a callback
+ */
+/*--------------------------------------------------------------------------*/
+static Eina_Bool
+callback_listener(void *data)
+{
+    if(connected) {
+        libwebsocket_service((struct libwebsocket_context *)data, 0);
+    } else {
+        uim_debug("WEBSOCKET CONNECTED ERROR");
+        if(context != NULL) {
+            libwebsocket_context_destroy(context);
+        }
+        /* Server */
+        context = libwebsocket_create_context(port, NULL,
+                            protocols, libwebsocket_internal_extensions,
+                            NULL, NULL, -1, -1, 0);
+        
+        if(context == NULL) {
+            uim_debug("libwebsocket_create_context failed. (line:%d)", __LINE__);
+            sleep(1);
+            return 0;
+        }
+
+        connected = 1;
+    }
+
+    return ECORE_CALLBACK_RENEW;
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   callback_http
+ *          this callback function is notified from libwebsockets
+ *
+ * @param[in]   context    libwebsocket context 
+ * @param[in]   wsi        libwebsockets management table
+ * @param[in]   reason     event type 
+ * @param[in]   user       intact 
+ * @param[in]   in         receive message 
+ * @param[in]   len        message size[BYTE]
+ * @return      result
+ * @retval      =0         success
+ * @retval      =1         error
+ */
+/*--------------------------------------------------------------------------*/
+static int
+callback_http(struct libwebsocket_context *context, struct libwebsocket *wsi,
+  enum libwebsocket_callback_reasons reason, void *user, void *in, size_t len)
+{
+    int n = 0;
+    unsigned char buf[LWS_SEND_BUFFER_PRE_PADDING + 512 +
+                LWS_SEND_BUFFER_POST_PADDING];
+    unsigned char *p = &buf[LWS_SEND_BUFFER_PRE_PADDING];
+    char data[512];
+
+    // TODO for test
+    uim_debug("call callback_http! size = %d", len);
+    uim_debug("50414 callback_http REASON %d", reason);
+
+    switch(reason) {
+    case LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION:
+        uim_debug("CONNECTION %x", wsi);
+        break;
+    case LWS_CALLBACK_ESTABLISHED:
+        uim_debug("ESTABLISHED %x", wsi);
+        socket_val = wsi;
+        n = sprintf((char *)p, "%s", "ANS HELLO");
+        break;
+    case LWS_CALLBACK_ADD_POLL_FD:
+        uim_debug("RECIEVE REASON LWS_CALLBACK_ADD_POLL_FD");
+        break;
+    case LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED:
+        uim_debug("RECIEVE REASON LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED");
+        break;
+    case LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER:
+        uim_debug("RECIEVE REASON LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER");
+        break;
+    case LWS_CALLBACK_CLIENT_ESTABLISHED:
+        uim_debug("RECIEVE REASON LWS_CALLBACK_CLIENT_ESTABLISHED");
+        break;
+    case LWS_CALLBACK_SET_MODE_POLL_FD:
+        uim_debug("RECIEVE REASON LWS_CALLBACK_SET_MODE_POLL_FD");
+        break;
+    case LWS_CALLBACK_CLEAR_MODE_POLL_FD:
+        uim_debug("RECIEVE REASON LWS_CALLBACK_CLEAR_MODE_POLL_FD");
+        break;
+    case LWS_CALLBACK_CLIENT_WRITEABLE:
+        uim_debug("RECIEVE REASON LWS_CALLBACK_CLIENT_WRITEABLE");
+        break;
+    case LWS_CALLBACK_RECEIVE:
+
+        if( (in != NULL) && (strncmp( (char *)in, "OPEN", strlen("OPEN") ) == 0 )) {
+
+            uim_debug("OPEN loading_edje_file [%s]",(char *)in);
+            strncpy(edje_str, edje_parse_str(in, 1), sizeof(edje_str));
+            loading_edje_file(&edje_str[0]);
+            if(socket_val)
+            {
+                event_message(socket_val, "RESULT SUCCESS");
+                uim_debug ("SEND RESULT SUCCESS");
+            }
+        }
+        else if ( (in != NULL) && (strncmp("CLOSE", in, strlen("CLOSE")) == 0)) {
+            evas_object_del(g_edje);
+            uim_debug ("ONSCREEN CLOSE");
+        }
+
+        /* Get route from navi.js */
+        if( strncmp( (char *)in, "<route>", strlen( "<route>" ) ) == 0 ) {
+            uim_debug("<route> recv");
+            init_e3d(e_3d, in, len);
+            set_route = TRUE;
+            break;
+        }
+        
+        memset(data, 0, sizeof(data));
+        strncpy(data, (char *)in, len);
+        uim_debug("RECIEVE[%d] %s", len, data);
+
+        if (len == 0) {
+            uim_debug("ERROR data=null (line:%d)", __LINE__);
+            break;
+        }
+        if (strncmp((char *)data, "CHG SEQ REQ_NAV", 15) == 0) {
+            uim_debug("RECIEVE COMMAND CHG SEQ REQ_NAV");
+
+            enable_navi = TRUE;
+        } else if (strncmp((char *)data, "CHG SEQ END_NAV", 15) == 0) {
+            uim_debug("RECIEVE COMMAND CHG SEQ END_NAV");
+
+            enable_navi = FALSE;
+        } else if(strncmp((char *)data, "ERR", 3) == 0) {
+        }
+        break;
+    case LWS_CALLBACK_CLIENT_RECEIVE:
+        memset(data, 0, sizeof(data));
+        strncpy(data, (char *)in, len);
+        uim_debug("CLIENT_RECIEVE[%d] %s", len, data);
+        break;
+    case LWS_CALLBACK_CLOSED:
+        uim_debug("RECIEVE REASON LWS_CALLBACK_CLOSED");
+        connected = 0;
+        break;
+    default:
+        uim_debug("REASON %d", reason);
+        break;
+    }
+
+    return 0;
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   parse_elementary_value
+ *          The message content received from DBus is acquired. 
+ *
+ * @param[out]   vic_val_p    Vehicles information data
+ * @param[in]    iter         message received from DBus
+ * @return       result
+ * @retval       TRUE     success
+ * @retval       FALSE    error
+ */
+/*--------------------------------------------------------------------------*/
+static bool
+parse_elementary_value(union VicVal_t *vic_val_p, DBusMessageIter *iter)
+{
+    dbus_int32_t i32_val;
+    dbus_int32_t i16_val;
+    dbus_uint32_t u32_val;
+    dbus_uint16_t u16_val;
+    uint8_t byte_val;
+    dbus_bool_t b_val;
+    double d_val;
+    char *s_val;
+    char *w_s_val;
+
+    char sig;
+
+    if (vic_val_p == NULL || iter == NULL){
+        uim_debug( "Err Parameter NG " );
+        return FALSE;
+    }
+
+    sig = dbus_message_iter_get_arg_type(iter);
+
+    switch (sig) {
+    case DBUS_TYPE_INT32:
+        dbus_message_iter_get_basic(iter, &i32_val);
+        vic_val_p->i32_val = i32_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_INT16:
+        dbus_message_iter_get_basic(iter, &i16_val);
+        vic_val_p->i16_val = i16_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_UINT32:
+        dbus_message_iter_get_basic(iter, &u32_val);
+        vic_val_p->u32_val = u32_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_UINT16:
+        dbus_message_iter_get_basic(iter, &u16_val);
+        vic_val_p->u16_val = u16_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_BOOLEAN:
+        dbus_message_iter_get_basic(iter, &b_val);
+        vic_val_p->b_val = b_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_BYTE:
+        dbus_message_iter_get_basic(iter, &byte_val);
+        vic_val_p->byte_val = byte_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_DOUBLE:
+        dbus_message_iter_get_basic(iter, &d_val);
+        vic_val_p->d_val = d_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_STRING:
+#if 0
+        dbus_message_iter_get_basic(iter, &s_val);
+        w_s_val = (char *)malloc(strlen(s_val) + 1); 
+        if(w_s_val == NULL) {
+            uim_debug( "Err malloc" );
+            return FALSE ;
+        }
+        strncpy(w_s_val, s_val, strlen(s_val));
+        vic_val_p->s_val = w_s_val;
+        vic_val_p++;
+        break;
+#endif
+    default:
+        uim_debug("Err parse_elementary_value: unknown type");
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   parse_value
+ *          parse message received from DBus
+ *
+ * @param[out]   vic_val_p    Vehicles information data
+ * @param[in]    iter         message received from DBus
+ * @return       result
+ * @retval       TRUE     success
+ * @retval       FALSE    error
+ */
+/*--------------------------------------------------------------------------*/
+static bool
+parse_value(union VicVal_t *vic_val_p, DBusMessageIter *iter)
+{
+    char curr;
+
+    if (vic_val_p == NULL || iter == NULL){
+        uim_debug( "Err Parameter NG " );
+        return FALSE;
+    }
+
+    curr = dbus_message_iter_get_arg_type(iter);
+
+    switch (curr) {
+        case DBUS_TYPE_BYTE:
+        case DBUS_TYPE_BOOLEAN:
+        case DBUS_TYPE_INT16:
+        case DBUS_TYPE_INT32:
+        case DBUS_TYPE_UINT16:
+        case DBUS_TYPE_UINT32:
+        case DBUS_TYPE_DOUBLE:
+        case DBUS_TYPE_STRING:
+            return parse_elementary_value(vic_val_p, iter);
+        case DBUS_TYPE_ARRAY:
+        case DBUS_TYPE_STRUCT:
+        case DBUS_TYPE_DICT_ENTRY:
+            return FALSE;
+        case DBUS_TYPE_INVALID:
+            return TRUE;
+        default:
+            break;
+    }
+    return FALSE;
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   getAmbDbus
+ *          Vehicle information is acquired from AMB.(D-Bus)
+ *
+ * @param[in]    key          vic_data index
+ * @param[out]   vic_val_p    Vehicles information data
+ * @return       result
+ * @retval       = 0      success
+ * @retval       =-1      error
+ */
+/*--------------------------------------------------------------------------*/
+static int
+getAmbDbus(int key, union VicVal_t *vic_val_p)
+{
+    /* local variable */
+    DBusMessage *message;
+    DBusError error;    
+    int result = 0;
+    const char *v_string[] = {vic_data[key].interface_name,
+                              vic_data[key].property_name  };
+    const char *dest = Bus_name;
+    DBusMessage *reply;
+    int reply_timeout = 1000; /* Millisecond */
+    DBusMessageIter iter;
+    DBusMessageIter iter_array;
+    union VicVal_t *tmp_vic_val_p  = vic_val_p;
+
+    /* initialize */
+    dbus_error_init(&error);
+
+    if (NULL == g_connection) {
+        /* obtain the right to use dbus */
+        g_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
+
+        if (g_connection == NULL){
+            uim_debug( "Err dbus_bus_get" );
+
+            /* Release err parameter */
+            dbus_error_free(&error);
+            return -1;
+        }
+    }
+
+    /* Constructs a new message */
+    message = dbus_message_new_method_call(DBUS_SERVICE,
+                                           vic_data[key].path_name,
+                                           DBUS_INTERFACE,
+                                           DBUS_METHOD);
+    if(message == NULL){
+        uim_debug( "Err dbus_message_new_method_call" );
+
+        /* Release the connection */
+        dbus_connection_unref (g_connection);
+        g_connection = NULL;  
+        return -1;
+    }
+
+    /* Gets the type of a message */
+    result = dbus_message_append_args(message,
+                                      DBUS_TYPE_STRING,
+                                      &v_string[0],
+                                      DBUS_TYPE_STRING,
+                                      &v_string[1],
+                                      DBUS_TYPE_INVALID);
+
+       if ( !result ){
+        uim_debug( "Err dbus_message_append_args" );
+
+        /* Release the connection */
+        dbus_connection_unref(g_connection);
+        g_connection = NULL;
+        /* Release the message */
+        dbus_message_unref(message);
+
+        return -1;
+    }
+
+    /* Gets the error name */
+    if (dest && !dbus_message_set_destination (message, dest)){
+        uim_debug("Err dbus_message_new_method_call");
+
+        /* Release the connection */
+        dbus_connection_unref(g_connection);
+        g_connection = NULL;
+
+        /* Release the message */
+        dbus_message_unref(message);
+
+        return -1;
+    }
+
+    /* Queues a message to send */
+    reply = dbus_connection_send_with_reply_and_block(g_connection,
+                                                      message,
+                                                      reply_timeout,
+                                                      &error);
+    if (reply == NULL){
+//DEBUG        uim_debug( "Err dbus_connection_send_with_reply_and_block" );
+
+        /* Release the connection */
+        dbus_connection_unref(g_connection);
+        g_connection = NULL;
+
+        /* Release the message */
+        dbus_message_unref(message);
+
+        /* Release err parameter */
+        dbus_error_free(&error);
+
+        return -1;
+    }
+
+    /* Gets the result */
+    dbus_message_iter_init(reply, &iter);
+    dbus_message_iter_recurse(&iter, &iter_array);
+
+    /* Type conversion of the resulting value */
+    result = parse_value(tmp_vic_val_p, &iter_array);
+    if (result != TRUE) {
+        uim_debug( "Err parse_elementary_value" );
+
+        /* Release the connection */
+        dbus_connection_unref(g_connection);
+        g_connection = NULL;
+
+        /* Release the message */
+        dbus_message_unref(message);
+        dbus_message_unref(reply);
+
+        return -1;
+    }
+
+    /* Release the message */
+    dbus_message_unref(message);   
+    dbus_message_unref(reply);   
+
+    return 0;
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   getLocationFromAmb
+ *          Location information acquisition from AMB.
+ *
+ * @param    none
+ * @return   none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+getLocationFromAmb()
+{
+    union VicVal_t vic_val[32];
+    int result = 0;
+    int i;
+    char vic_str[256];
+
+    for(i = 0; i < property_num ; i++){
+        result = getAmbDbus(i, vic_val);
+
+        if (result != 0){
+//DEBUG            uim_debug("Err getAmbDbus : %s",vic_data[i].name);
+            continue;
+        }
+
+        switch(vic_data[i].property){
+        case LATITUDE :
+            if((camera_geocode.lat != vic_val[0].d_val) &&
+               (vic_val[0].d_val != 0))
+            {
+                uim_debug ("%s(%f)",vic_data[i].name, vic_val[0].d_val);
+                camera_geocode.lat = vic_val[0].d_val;
+            }
+
+            break;
+        case LONGITUDE :
+            if((camera_geocode.lon != vic_val[0].d_val) &&
+               (vic_val[0].d_val != 0))
+            {
+                uim_debug ("%s(%f)",vic_data[i].name, vic_val[0].d_val);
+                camera_geocode.lon = vic_val[0].d_val;
+            }
+
+            break;
+        case DIRECTION :
+            if(camera_geocode.dir != vic_val[0].i32_val)
+            {
+                uim_debug ("%s(%d)",vic_data[i].name, vic_val[0].i32_val);
+                camera_geocode.dir = vic_val[0].i32_val;
+            }
+            break;
+        case VEHICLESPEED :
+//DEBUG            uim_debug ("%s(%d)",vic_data[i].name, vic_val[0].i32_val);
+            if(ui_vicspeed != vic_val[0].i32_val)
+            {
+                uim_debug ("%s(%d)",vic_data[i].name, vic_val[0].i32_val);
+                ui_vicspeed = vic_val[0].i32_val;
+            }
+            break;
+        default :
+            uim_debug ("ERROR no property : %s", vic_data[i].name);
+            break;
+        }
+
+    }
+    return;
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   get_config
+ *          The config file for vehicle information acquisition is read.
+ *
+ * @param    none
+ * @return   result
+ * @retval   = 0      success
+ * @retval   =-1      error
+ */
+/*--------------------------------------------------------------------------*/
+static int
+get_config()
+{
+    FILE *fp;
+    int k = 0;
+    int j, m;
+    char buff[512];
+    char *tp; 
+    char *clm = " \n"; 
+
+    fp = fopen( CONFIG_FILE , "r" );
+    if( fp == NULL ) {
+        uim_debug( "File open error" );
+        return -1;
+    }
+
+    for(m = 0 ; k < MAX_PARA_NUM ; m++){
+        if( fgets( buff, sizeof(buff) - 2, fp) != NULL){
+            tp = strtok( buff, clm );
+            if(tp != NULL){
+                if(tp[0] != '#' ){
+                    for(j = 0; vic_key_data[j].id != -1; j++ ){
+                        if(strcmp(tp, vic_key_data[j].name) == 0){
+                            vic_data[k].property = vic_key_data[j].id;
+                            strcpy( vic_data[k].name, tp);
+                            strcpy( vic_data[k].path_name, strtok( NULL, clm ));
+                            strcpy( vic_data[k].interface_name, strtok( NULL, clm ));
+                            strcpy( vic_data[k].property_name, strtok(NULL,clm ));
+
+                            uim_debug( "vic_data[%d].property=%d",k,vic_data[k].property );
+                            uim_debug( "vic_data[%d].name=%s",k,vic_data[k].name );
+                            uim_debug( "vic_data[%d].path_name=%s", k, vic_data[k].path_name);
+                            uim_debug( "vic_data[%d].interface_name=%s", k,vic_data[k].interface_name);
+                            uim_debug( "vic_data[%d].property_name=%s", k,vic_data[k].property_name);
+
+                            k++;
+                            break;
+                        }
+                    }
+                    if(vic_key_data[j].id == -1){
+                        uim_debug("Err config.txt Line:%d Unregistered parameter name",m+1);
+                    } 
+   
+                }else{
+                    uim_debug("config.txt Line:%d Comment out  '#'Discovery",m+1);
+                }
+            }else{
+                uim_debug("config.txt Line:%d Comment out  Null line",m+1);
+            }
+        }else{
+            uim_debug("config.txt The end of data reading");
+            break;
+        } 
+    }
+    fclose(fp);
+
+    property_num = k;
+    if( property_num == 0 ) {
+        uim_debug( "config.txt No valid data");
+        return -1;
+    }
+    return 0;
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   edje_parse_str
+ *          A character string is decomposed by a delimiter.
+ *
+ * @param[in]    key          vic_data index
+ * @param[in]    vic_val_p    Vehicles information data
+ * @return       The pointer address to a lexical token
+ * @retval       > 0      success
+ * @retval       NULL     error
+ */
+/*--------------------------------------------------------------------------*/
+static char* edje_parse_str(void *in, int arg_num)
+{
+    int i;
+    unsigned char *data;
+
+    uim_debug("edje_parse_str %s, arg = %d", in, arg_num);
+    data = strtok(in, " ");
+    /* arg_num : 0 to n */
+    for (i = 0; i < arg_num; i++) {
+        data = strtok( NULL, " ");
+    }
+    uim_debug("edje_parse_str data: %s",data);
+    return data;
+}
+
+/*--------------------------------------------------------------------------*/
+/**
+ * @brief   event_message
+ *          send message
+ *
+ * @param[in]   wsi                 libwebsockets management table to send
+ * @param[in]   fromat              message to send
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+event_message(struct libwebsocket *wsi, char *format, ...)
+{
+    va_list list;
+    char message[256];
+
+    va_start(list, format);
+    vsnprintf(message, sizeof(message), format, list);
+    va_end(list);
+
+    uim_debug("OnScreen: event_message wsi = %p, %s", wsi, message);
+    if (wsi) {
+        int n = 0;
+        unsigned char buf[LWS_SEND_BUFFER_PRE_PADDING + 512 +
+                      LWS_SEND_BUFFER_POST_PADDING];
+        unsigned char *p = &buf[LWS_SEND_BUFFER_PRE_PADDING];
+
+        n = sprintf((char *)p, "%s", message);
+        n = libwebsocket_write(wsi, p, n, LWS_WRITE_TEXT);
+        uim_debug("OnScreen: libwebsocket_write return = %d", n);
+    }
+    else {
+        uim_debug("OnScreen: wsi is not initialized");
+    }
+
+    return;
+}
+
+/*--------------------------------------------------------------------------*/
+/**
+ * @brief   _touch_up_edje
+ *          Touch-up event processing.
+ *
+ * @param[in]   data                user data
+ * @param[in]   obj                 evas object of the button
+ * @param[in]   event_info          evas event infomation
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+_touch_up_edje(void *data, Evas *evas , Evas_Object *obj, void *event_info)
+{
+    /* get name from userdata */
+    if (data != NULL) {
+        uim_debug("OnScreen: user data is %s", (const char *)data);
+
+        if(socket_val)
+        {
+            event_message(socket_val, "TOUCH %s %s", edje_str, data);
+            uim_debug ("SEND TOUCH %s ",data);
+        }
+    }
+    else
+    {
+        uim_debug("OnScreen: user data is NULL");
+    }
+}
+
+/*--------------------------------------------------------------------------*/
+/**
+ * @brief   loading_edje_file
+ *          Loading of edje file.
+ *
+ * @param[in]   edje_file    edje file
+ * @return      result
+ * @retval      = 0      success
+ * @retval      =-1      error
+ */
+/*--------------------------------------------------------------------------*/
+static int
+loading_edje_file(const char *edje_file)
+{
+    Evas_Object *part;      /* part handle */
+    Eina_List *group;       /* edje group list */
+    Eina_List *list;        /* part list in edje */
+    int group_count = 0;    /* group counter */
+    int name_count = 0;     /* name counter */
+
+    g_evas = ecore_evas_get(window);
+    if (!g_evas) {
+        uim_debug("OnScreen: could not create evas.");
+        return -1;
+    }
+
+    /* delete edge */
+    evas_object_del(g_edje);
+
+    /* create and add object in canvas from edje */
+    g_edje = edje_object_add(g_evas);
+    if (!g_edje) {
+        uim_debug("OnScreen: could not create edje object!");
+        return -1;
+    }
+
+    /* get group list */
+    group = edje_file_collection_list(edje_file);
+    while (group != NULL)
+    {
+        /* Set the edj file */
+        if (!edje_object_file_set(g_edje, edje_file, (const char *)group->data)) {
+            int err = edje_object_load_error_get(g_edje);
+            const char *errmsg = edje_load_error_str(err);
+            uim_debug("OnScreen: could not load %s: %s", edje_file, errmsg);
+
+            edje_file_collection_list_free(group);
+            evas_object_del(g_edje);
+            return -1;
+        }
+        uim_debug("OnScreen: group[%d] data : %s", group_count, (const char *)group->data);
+
+        /* get list */
+        list = edje_object_access_part_list_get(g_edje);
+        while (list != NULL) {
+            uim_debug("OnScreen: list[%d] data : %s", name_count, (const char *)list->data);
+
+            /* set callback for part name */
+            part = edje_object_part_object_get((const Evas_Object *)g_edje, (const char *)list->data);
+            if(part != NULL) {
+                uim_debug("OnScreen: list[%d] name : %s", name_count, (const char *)list->data);
+                evas_object_event_callback_add(part, EVAS_CALLBACK_MOUSE_UP, _touch_up_edje, list->data);
+            }
+            else {
+                uim_debug("OnScreen: list[%d] is NULL", name_count);
+            }
+
+            /* to next list */
+            list = list->next;
+            name_count++;
+        }
+
+        /* to next group */
+        group = group->next;
+        group_count++;
+    }
+    uim_debug("OnScreen: group num is %d", group_count);
+    uim_debug("OnScreen: name num is %d", name_count);
+
+    /* Put in the image */
+    evas_object_move(g_edje, 0, 0);
+    /* Resize the image */
+    evas_object_resize(g_edje, W_WIDTH, W_HEIGHT);
+    /* Show the image */
+    evas_object_show(g_edje);
+
+    evas_object_layer_set(g_edje, LAYER_UI);
+
+    /* Show the window */
+    /* ecore_evas_show(g_window); */
+
+    return 0;
+}
+
+/*--------------------------------------------------------------------------*/
+/**
+ * @brief   res_callback
+ *          Notice event processing of a resource state.
+ *
+ * @param[in]   info                rsource information
+ * @param[in]   user_data           user data(UNUSED)
+ * @return      none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+res_callback(ico_apf_resource_notify_info_t* info, void *user_data)
+{
+    int ret;
+
+    uim_debug("##==> Callbacked evt=%d res=%d id=%d bid=%d appid=%s dev=%s"
+                " user_data=%d", info->state, info->resid, info->id, info->bid,
+                info->appid, info->device, (int)user_data);
+
+    switch (info->state)    {
+    case ICO_APF_RESOURCE_STATE_ACQUIRED:
+    case ICO_APF_RESOURCE_STATE_DEPRIVED:
+    case ICO_APF_RESOURCE_STATE_WAITTING:
+    case ICO_APF_RESOURCE_STATE_RELEASED:
+        if (info->resid == ICO_APF_RESID_INT_SCREEN) {
+            ret = ico_apf_resource_reply_int_screen_mode(info->device, info->bid, info->id, 1);
+            uim_debug("##==> callback reply int_screen(%s,%d,%d,1) = %d",
+                        info->device, info->bid, info->id, ret);
+        }
+        else if (info->resid == ICO_APF_RESID_ON_SCREEN) {
+            ret = ico_apf_resource_reply_int_screen_mode_disp(info->device, info->id, 1);
+            uim_debug("##==> callback reply on_screen(%s,%d,1) = %d",
+                        info->device, info->id, ret);
+        }
+        else    {
+            ret = ico_apf_resource_reply_screen_mode(info->device, info->id, 1);
+            uim_debug("##==> callback reply screen(%s,%d,1) = %d",
+                        info->device, info->id, ret);
+        }
+        break;
+    default:
+        /* NOP  */
+        break;
+    }
+}
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @brief   sample navigation application
+ *          main routine
+ *
+ * @param   main() finction's standard parameter (argc,argv)
+ * @return  result
+ * @retval  =0       success
+ * @retval  =-1      failed
+ */
+/*--------------------------------------------------------------------------*/
+int
+main(int argc, char *argv[])
+{
+    int i;
+    int getscreen;
+    char    appid[ICO_UXF_MAX_PROCESS_NAME+1];
+    int ret = 0;
+    static struct libwebsocket *wsi;
+    connected = 0;
+
+    /* Setting the log output */
+    if (ico_apf_get_app_id(0, appid) == ICO_APP_CTL_E_NONE) {
+        ico_apf_log_open(appid);
+    }
+
+    load_config_file();
+
+    elm_init(argc, argv);
+
+    // TODO
+    enable_navi = FALSE;
+    set_route = FALSE;
+
+    /* initialize */
+    if(0 != get_config()){
+        uim_debug( "ERROR get_config()" );
+        return -1;
+    }
+
+    getscreen = 0;
+        sscrntype[0] = 0;
+    for (i = 1; i < argc; i++)  {
+        if (argv[i][0] == '-')  {
+            if (strcasecmp(argv[i], "-basescreen") == 0) {
+                getscreen = 1;              /* get base screen */
+                                strcpy(sscrntype, "BasicScreen");
+                uim_debug("BasicScreen");
+            }
+            else if (strcasecmp(argv[i], "-intscreen") == 0) {
+                getscreen = 2;              /* get interrupt screen */
+                                strcpy(sscrntype, "IntScreen");
+            }
+            else if (strcasecmp(argv[i], "-onscreen") == 0) {
+                getscreen = 3;              /* get on screen */
+                                strcpy(sscrntype, "OnScreen");
+            }
+        }
+    }
+
+    ecore_evas_init();
+
+    if (getscreen > 0) {
+        /* initialize resource control for Ecore */
+        if (ico_apf_ecore_init(NULL) != ICO_APF_E_NONE) {
+            uim_debug("ico_apf_ecore_init() Error");
+            ecore_evas_shutdown();
+            return -1;
+        }
+
+        /* set resource request callback */
+        ico_apf_resource_set_event_cb(res_callback, NULL);
+
+        /* acquire a right to display a screen */
+        if (getscreen == 1) {
+            ret = ico_apf_resource_get_screen_mode(NULL, 0);
+        }
+        else if (getscreen == 2) {
+            ret = ico_apf_resource_get_int_screen_mode(NULL, 0, 0);
+        }
+        else {
+            ret = ico_apf_resource_get_int_screen_mode_disp(NULL, 0);
+        }
+    }
+    uim_debug("getscreen = %d, ret = %d",getscreen, ret);
+
+    /* window setup */
+    window = ecore_evas_new(NULL, 0, 0, W_WIDTH, W_HEIGHT, "frame=0");
+    if (!window) goto error;
+
+    ecore_evas_show(window);
+
+    /* Camera Layer */
+    e_cam = ecore_evas_get(window);
+    cam = evas_object_image_add(e_cam);
+#ifdef _USE_CAMERA_
+    capture = cvCreateCameraCapture(conf_data[USB_CAMERA_ID]);
+    if (!capture) {
+        uim_debug("cvCaptureFromCAM failed.");
+        return -1;
+    }
+
+    captureImage = cvQueryFrame(capture);
+    uim_debug("camera width = %d, height = %d", captureImage->width, captureImage->height);
+    convert_data_evas_cv(cam, captureImage);
+#else
+
+#ifdef _USE_OPENCV_
+    evas_object_image_from_cv(cam, test_camera_path);
+#else
+       evas_object_image_file_set(cam, test_camera_path, NULL);
+#endif
+
+#endif
+    evas_object_image_fill_set(cam, 0, 0, W_WIDTH, W_NAVI_HEIGHT);
+    evas_object_move(cam, W_NAVI_ORIGINE_X, W_NAVI_ORIGINE_Y);
+    evas_object_resize(cam, W_WIDTH, W_NAVI_HEIGHT);
+
+    evas_object_show(cam);
+
+    /* 3D Layer */
+    e_3d = ecore_evas_get(window);
+
+    /* UI Layer */
+    e_ui = ecore_evas_get(window);
+    e_ui_init();
+
+    /* Server */
+    context = libwebsocket_create_context(port, NULL, protocols, libwebsocket_internal_extensions,
+                        NULL, NULL, -1, -1, 0);
+    if (context == NULL) {
+        fprintf(stderr, "libwebsocket_create_context failed.");     goto error;
+    }
+
+    connected = 1;
+    ecore_timer_add(0.05, callback_listener, context);
+
+    /* Browser(Map) Layer */
+    e_map_init();
+
+    edje_init();
+
+    /* timer */
+    ecore_timer_add(TIME_INTERVAL_AR, _time_interval_navi_cb, cam);
+
+    ecore_timer_add(TEST_TIME, _time_interval_map_renew_cb, NULL);
+
+    /* main loop */
+    ecore_main_loop_begin();
+
+    /* cleanup */
+    e3d_cleanup();
+
+#ifdef _USE_CAMERA_
+    cvReleaseCapture(&capture);
+#endif
+
+    if (NULL != g_connection)
+    {
+        dbus_connection_unref(g_connection);
+        g_connection = NULL;
+    }
+
+    ico_apf_ecore_term();
+
+    ecore_evas_free(window);
+    ecore_evas_shutdown();
+
+    return 0;
+
+error:
+    fprintf(stderr, "Evas engine error.");
+    ecore_evas_shutdown();
+    return -1;
+}
+
diff --git a/src/samplenavi.h b/src/samplenavi.h
new file mode 100644 (file)
index 0000000..7416942
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the 
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+/**
+ * @brief   header file of sample navigation application
+ *
+ * @date    Apr-25-2013
+ */
+
+#ifndef SAMPLENAVI_H_
+#define SAMPLENAVI_H_
+
+/* enum */
+enum ConfDataID {
+    USB_CAMERA_ID,
+    LANDMARK_POSITION,
+    LANDMARK_ROTATION,
+    CONF_DATA_MAX
+};
+
+extern int conf_data[CONF_DATA_MAX];
+
+#endif /* SAMPLENAVI_H_ */
+
diff --git a/src/soundsample.c b/src/soundsample.c
new file mode 100644 (file)
index 0000000..8ac3be0
--- /dev/null
@@ -0,0 +1,856 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the 
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+/**
+ * @brief   Sound Sample APP
+ *          Test use with which sound is sounded
+ *
+ * @date    Mar-04-2013
+ */
+
+#ifdef HAVE_CONFIG_H
+
+#include "config.h"
+#define __UNUSED__
+#else
+#define __UNUSED__
+#endif
+
+#include <Ecore.h>
+#include <Ecore_Evas.h>
+
+#include <unistd.h>
+#include <glib.h>
+//#include "app_log.h"
+#include "ico_apf.h"
+#include "ico_apf_ecore.h"
+#include "ico_apf_log.h"
+#include "soundsample.h"
+
+/*============================================================================*/
+/* Define fixed parameters                                                    */
+/*============================================================================*/
+//#define WIDTH  (700)    /* Background width  */
+//#define HEIGHT (934)    /* Background height */
+//#define WIDTH  (400)    /* Background width  */
+//#define HEIGHT (400)    /* Background height */
+#define WIDTH  (600)            /* Background width  */
+#define HEIGHT (600)            /* Background height */
+
+//#define LOG_NAME       "/home/rpf/var/log/uifw/audioTP.log"
+#define LOG_NAME       "/tmp/ico-app-soundsample.log"
+//#define CONFIG_FILE    "/home/rpf/src/app/audioTP/soundsample_config.txt"
+#define CONFIG_FILE    "/opt/apps/org.tizen.ico.app-soundsample/res/soundsample_config.txt"
+
+#define MAX_BUTTON_NUM 3
+#define MAX_DRAW_LEM   20
+
+#define GROUP_DATA        "data"
+#define KEY_WAVFILE_PATH  "wavfile_path"
+#define KEY_SERVER_IP     "server_ip"
+#define KEY_DEVICE_NAME   "device_name"
+#define KEY_VOLUME1       "volume1"
+#define KEY_VOLUME2       "volume2"
+#define KEY_APP_NAME      "app_name"
+#define KEY_STREAM_NAME   "stream_name"
+
+/*============================================================================*/
+/* Define data types                                                          */
+/*============================================================================*/
+struct color_val_t
+{
+    int r;                      /* red   */
+    int g;                      /* green */
+    int b;                      /* blue  */
+    int a;                      /* alpha */
+};
+
+struct size_val_t
+{
+    Evas_Coord w;               /* width  */
+    Evas_Coord h;               /* height */
+};
+
+struct font_val_t
+{
+    char name[255];             /* font name */
+    Evas_Font_Size size;        /* font size */
+};
+
+struct pos_val_t
+{
+    Evas_Coord x;               /* X position */
+    Evas_Coord y;               /* Y position */
+};
+
+struct object_text_val_t
+{
+    struct color_val_t color;
+    struct size_val_t size;
+    struct font_val_t font;
+    struct pos_val_t pos;
+    char text[255];
+    void *func;
+};
+
+struct object_figure_val_t
+{
+    struct color_val_t color;
+    struct size_val_t size;
+    struct pos_val_t pos;
+    void *func;
+};
+
+/*============================================================================*/
+/* Function prototype for static(internal) functions                          */
+/*============================================================================*/
+static void _canvas_resize_cb(Ecore_Evas *ee);
+static void _on_destroy(Ecore_Evas *ee __UNUSED__);
+static Eina_Bool _timer_cb(void *data);
+static void _on_mousedown1(void *data, Evas *evas, Evas_Object *o,
+                           void *einfo);
+static void _on_mousedown2(void *data, Evas *evas, Evas_Object *o,
+                           void *einfo);
+static void _on_mousedown3(void *data, Evas *evas, Evas_Object *o,
+                           void *einfo);
+static int start_audio(void);
+static Eina_Bool stop_audio(void *data, Ecore_Fd_Handler *fd_handler);
+static void rcv_event(int event_num);
+static void send_event_req(int event_num);
+static void recv_event_res(int ret);
+static void chg_state(int state_num);
+static void conf_check_gerror(char *para_num, GError ** error);
+static int read_config(void);
+static void draw_text(Evas_Object *obj, struct object_text_val_t *text);
+static void draw_figr(Evas_Object *obj, struct object_figure_val_t *figr);
+
+/*============================================================================*/
+/* Tables and Valiables                                                       */
+/*============================================================================*/
+extern int pulse_main(struct audio_config_t *, int);
+
+/* state values */
+static int StateNum = STATE_STOP;
+static Evas_Object *State_text;
+
+/* file descriptor */
+static int Filedes[2];
+static int Filedes2[2];
+
+/* Child process ID */
+static pid_t ChPid = 0;
+
+/* Config data */
+static struct audio_config_t AudioConfig = {
+    NULL, NULL, NULL, -1, -1, NULL, NULL
+};
+
+static struct object_text_val_t ButtonText[MAX_BUTTON_NUM] = {
+    {{255, 0, 0, 255}, {180, 50}, {"Sans", 48}, {15 + 12, 70}, "START", NULL},
+    {{0, 255, 0, 255}, {180, 50}, {"Sans", 48}, {210 + 24, 70}, "STOP", NULL},
+    {{0, 0, 255, 255}, {180, 50}, {"Sans", 48}, {405 + 12, 70}, "PAUSE", NULL}
+};
+
+static struct object_figure_val_t ButtonFigr[MAX_BUTTON_NUM] = {
+    {{255, 0, 0, 100}, {180, 95}, {15, 120}, (void *) _on_mousedown1},
+    {{0, 255, 0, 100}, {180, 95}, {210, 120}, (void *) _on_mousedown2},
+    {{0, 0, 255, 100}, {180, 95}, {405, 120}, (void *) _on_mousedown3}
+};
+
+static struct object_figure_val_t BgFigr = {
+    {255, 255, 255, 255}, {WIDTH, HEIGHT}, {0, 0}, NULL
+};
+
+static struct object_text_val_t TimeText = {
+    {0, 0, 0, 255}, {150, 50}, {"Sans", 24}, {0, 0}, {}, (void *) _timer_cb
+};
+
+static struct object_text_val_t StateInfoText = {
+    {0, 0, 0, 255}, {150, 50}, {"Sans", 48}, {140, 300}, "STATE : STOP", NULL
+};
+
+static struct object_text_val_t AppNameText = {
+    {0, 0, 0, 255}, {150, 50}, {"Sans", 32}, {25, 440}, "App Name :  ", NULL
+};
+
+static struct object_text_val_t StreamNameText = {
+    {0, 0, 0, 255}, {150, 50}, {"Sans", 32}, {25, 480}, "Stream Name :  ",
+        NULL
+};
+
+static struct object_text_val_t PidText = {
+    {0, 0, 0, 255}, {150, 50}, {"Sans", 36}, {50, 530}, "PID :  ", NULL
+};
+
+static Ecore_Evas *ee;
+static Evas_Object *text, *bg;
+static char ssndtype[32];
+
+static const char commands[] =
+    "commands are:\n"
+    "\tm - impose a minumum size to the window\n"
+    "\tx - impose a maximum size to the window\n"
+    "\tb - impose a base size to the window\n"
+    "\ts - impose a step size (different than 1 px) to the window\n"
+    "\th - print help\n";
+
+
+/* to inform current window's size */
+static void _canvas_resize_cb(Ecore_Evas *ee)
+{
+    int w, h;
+    char buf[256];
+
+    ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
+    snprintf(buf, sizeof(buf), "%s %d x %d", ssndtype, w, h);
+    evas_object_text_text_set(text, buf);
+    evas_object_move(text, 50, 25);
+    evas_object_resize(bg, w, h);
+}
+
+static void _on_destroy(Ecore_Evas *ee __UNUSED__)
+{
+    ecore_main_loop_quit();
+}
+
+static Eina_Bool _timer_cb(void *data)
+{
+    char str[32];
+    time_t timer;
+    struct tm *date;
+    timer = time(NULL);
+    date = localtime(&timer);
+    sprintf(str, "%s", asctime(date));
+    evas_object_text_text_set((Evas_Object *) data, str);
+
+    return EINA_TRUE;
+}
+
+static void _on_mousedown1(void *data, Evas *evas, Evas_Object *o,
+                           void *einfo)
+{
+    uim_debug("_on_mousedown1: Enter");
+    uim_debug("Input event   : START");
+
+    rcv_event(START_REQ);
+
+    uim_debug("_on_mousedown1: Leave");
+}
+
+static void _on_mousedown2(void *data, Evas *evas, Evas_Object *o,
+                           void *einfo)
+{
+    uim_debug("_on_mousedown2: Enter");
+    uim_debug("Input event  : STOP");
+
+    rcv_event(STOP_REQ);
+
+    uim_debug("_on_mousedown2: Leave");
+}
+
+static void _on_mousedown3(void *data, Evas *evas, Evas_Object *o,
+                           void *einfo)
+{
+    uim_debug("_on_mousedown3: Enter");
+    uim_debug("Input event  : PAUSE");
+
+    rcv_event(PAUSE_REQ);
+
+    uim_debug("_on_mousedown3: Leave");
+}
+
+static int start_audio(void)
+{
+    uim_debug("start_audio: Enter");
+
+    int ret = 0;
+
+    signal(SIGCLD, SIG_IGN);
+
+    if ((ChPid = fork()) < 0) {
+        uim_debug("Err fork");
+        return -1;
+    }
+    else if (ChPid == 0) {
+        /* Processing of child processes to start */
+        close(Filedes[1]);
+        close(Filedes2[0]);
+
+        uim_debug("Voice response : START");
+        ret = pulse_main(&AudioConfig, Filedes[0]);
+        uim_debug("Voice response : END");
+
+        uim_debug("pulse_main: ret = [%d]", ret);
+        recv_event_res(ret);
+
+        close(Filedes[0]);
+        close(Filedes2[1]);
+        /* Termination of child processes */
+        exit(0);
+    }
+
+    /* Processing of parent process */
+    uim_debug("Child process: ChPid = [%d]", ChPid);
+
+    uim_debug("start_audio: Leave");
+
+    return 0;
+}
+
+static Eina_Bool stop_audio(void *data, Ecore_Fd_Handler *fd_handler)
+{
+    uim_debug("stop_audio: Enter");
+
+    char buff[255];
+    memset(buff, 0x00, sizeof(buff));
+
+    /* Reading from a pipe */
+    read(Filedes2[0], buff, sizeof(buff));
+    uim_debug("buff :%s", buff);
+
+    if (atoi(buff) != 0) {
+        uim_debug("pulse_main Err: ret= [%d]", atoi(buff));
+        _on_destroy(NULL);
+    }
+
+    /* State change */
+    chg_state(STATE_STOP);
+
+    /* Process id initialization */
+    ChPid = 0;
+
+    uim_debug("stop_audio: Leave");
+
+    return ECORE_CALLBACK_RENEW;
+}
+
+static void rcv_event(int event_num)
+{
+    uim_debug("rcv_event: Enter");
+
+    int ret = 0;
+
+    switch (StateNum) {
+    case STATE_START:
+        switch (event_num) {
+        case STOP_REQ:
+            /* event send */
+            send_event_req(event_num);
+            /* State change */
+            chg_state(STATE_STOP);
+            break;
+
+        case PAUSE_REQ:
+            /* event send */
+            send_event_req(event_num);
+            /* State change */
+            chg_state(STATE_PAUSE);
+            break;
+
+        default:
+            uim_debug("Not receive: StateNum = [%d],event_num = [%d]",
+                        StateNum, event_num);
+            break;
+        }
+
+        break;
+
+    case STATE_STOP:
+        switch (event_num) {
+        case START_REQ:
+            /* Voice reproduction start */
+            ret = start_audio();
+            if (ret == 0) {
+                /* State change */
+                chg_state(STATE_START);
+            }
+            else {
+                uim_debug("start_audio Err: ret= [%d]", ret);
+                _on_destroy(NULL);
+            }
+            break;
+
+        default:
+            uim_debug("Not receive: StateNum = [%d],event_num = [%d]",
+                        StateNum, event_num);
+            break;
+        }
+
+        break;
+
+    case STATE_PAUSE:
+        switch (event_num) {
+        case STOP_REQ:
+            /* event send */
+            send_event_req(event_num);
+            /* State change */
+            chg_state(STATE_STOP);
+            break;
+
+        case PAUSE_REQ:
+            /* event send */
+            send_event_req(event_num);
+            /* State change */
+            chg_state(STATE_START);
+            break;
+
+        default:
+            uim_debug("Not receive: StateNum = [%d],event_num = [%d]",
+                        StateNum, event_num);
+            break;
+        }
+
+        break;
+
+    default:
+        uim_debug("Not support StateNum: StateNum = [%d]", StateNum);
+        break;
+    }
+
+    uim_debug("rcv_event: Leave");
+}
+
+static void send_event_req(int event_num)
+{
+    uim_debug("send_event_req: Enter");
+
+    char msg[32];
+    memset(msg, 0x00, sizeof(msg));
+
+    snprintf(msg, sizeof(msg), "%d", event_num);
+    uim_debug("msg = %s", msg);
+
+    write(Filedes[1], msg, strlen(msg) + 1);
+    uim_debug("send_event_req: Leave");
+}
+
+static void recv_event_res(int ret)
+{
+    uim_debug("recv_event_res: Enter");
+
+    char msg[32];
+    memset(msg, 0x00, sizeof(msg));
+
+    snprintf(msg, sizeof(msg), "%d", ret);
+    uim_debug("msg = %s", msg);
+
+    write(Filedes2[1], msg, strlen(msg) + 1);
+    uim_debug("recv_event_res: Leave");
+}
+
+static void chg_state(int state_num)
+{
+    uim_debug("chg_state: Enter");
+    uim_debug("chg_state state_num = [%d]", state_num);
+
+    char buf[ICO_UXF_MAX_PROCESS_NAME + 1];
+    memset(buf, 0x00, sizeof(buf));
+
+    switch (state_num) {
+    case STATE_START:
+        snprintf(buf, sizeof(buf), "%s", "STATE : START");
+        evas_object_text_text_set(State_text, buf);
+        StateNum = state_num;
+        break;
+
+    case STATE_STOP:
+        snprintf(buf, sizeof(buf), "%s", "STATE : STOP");
+        evas_object_text_text_set(State_text, buf);
+        StateNum = state_num;
+        break;
+
+    case STATE_PAUSE:
+        snprintf(buf, sizeof(buf), "%s", "STATE : PAUSE");
+        evas_object_text_text_set(State_text, buf);
+        StateNum = state_num;
+        break;
+
+    default:
+        uim_debug("Not support State: state_num = [%d]", state_num);
+        break;
+    }
+
+    uim_debug("chg_state StateNum = [%d]", StateNum);
+    uim_debug("chg_state: Leave");
+}
+
+static void conf_check_gerror(char *para_num, GError ** error)
+{
+    uim_debug("conf_check_gerror: Enter");
+
+    if (*error != NULL) {
+        uim_debug("Config [%s] : %s", para_num, (*error)->message);
+    }
+    g_clear_error(error);
+
+    uim_debug("conf_check_gerror: Leave");
+}
+
+static int read_config(void)
+{
+    uim_debug("read_config: Enter");
+
+    GKeyFile *keyfile;
+    GKeyFileFlags flags;
+    GError *error = NULL;
+
+    keyfile = g_key_file_new();
+    flags = G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS;
+    if (!g_key_file_load_from_file(keyfile, CONFIG_FILE, flags, &error)) {
+        conf_check_gerror(CONFIG_FILE, &error);
+        g_key_file_free(keyfile);
+        return -1;
+    }
+
+    AudioConfig.wavfile_path = g_key_file_get_string(keyfile, GROUP_DATA,
+                                                     KEY_WAVFILE_PATH,
+                                                     &error);
+    if ((error) || (strlen(AudioConfig.wavfile_path) <= 0)) {
+        uim_debug("No config data [%s]", KEY_WAVFILE_PATH);
+        conf_check_gerror(KEY_WAVFILE_PATH, &error);
+        g_key_file_free(keyfile);
+        return -1;
+    }
+
+    AudioConfig.server_ip = g_key_file_get_string(keyfile, GROUP_DATA,
+                                                  KEY_SERVER_IP, &error);
+    if ((error) || (strlen(AudioConfig.server_ip) <= 0)) {
+        uim_debug("No config data [%s]", KEY_SERVER_IP);
+        conf_check_gerror(KEY_SERVER_IP, &error);
+        AudioConfig.server_ip = NULL;
+    }
+
+    AudioConfig.device_name = g_key_file_get_string(keyfile, GROUP_DATA,
+                                                    KEY_DEVICE_NAME, &error);
+    if ((error) || (strlen(AudioConfig.device_name) <= 0)) {
+        uim_debug("No config data [%s]", KEY_DEVICE_NAME);
+        conf_check_gerror(KEY_DEVICE_NAME, &error);
+        AudioConfig.device_name = NULL;
+    }
+
+    AudioConfig.volume1 = g_key_file_get_integer(keyfile, GROUP_DATA,
+                                                 KEY_VOLUME1, &error);
+    if (error) {
+        uim_debug("No config data [%s]", KEY_VOLUME1);
+        conf_check_gerror(KEY_VOLUME1, &error);
+        AudioConfig.volume1 = -1;
+    }
+
+    AudioConfig.volume2 = g_key_file_get_integer(keyfile, GROUP_DATA,
+                                                 KEY_VOLUME2, &error);
+    if (error) {
+        uim_debug("No config data [%s]", KEY_VOLUME2);
+        conf_check_gerror(KEY_VOLUME2, &error);
+        AudioConfig.volume2 = -1;
+    }
+
+    AudioConfig.app_name = g_key_file_get_string(keyfile, GROUP_DATA,
+                                                 KEY_APP_NAME, &error);
+    if ((error) || (strlen(AudioConfig.app_name) <= 0)) {
+        uim_debug("No config data [%s]", KEY_APP_NAME);
+        conf_check_gerror(KEY_APP_NAME, &error);
+        AudioConfig.app_name = "TP_PulseAudio";
+    }
+
+    AudioConfig.stream_name = g_key_file_get_string(keyfile, GROUP_DATA,
+                                                    KEY_STREAM_NAME, &error);
+    if ((error) || (strlen(AudioConfig.stream_name) <= 0)) {
+        uim_debug("No config data [%s]", KEY_STREAM_NAME);
+        conf_check_gerror(KEY_DEVICE_NAME, &error);
+        AudioConfig.stream_name = "Pri0";
+    }
+
+    uim_debug("read_config: Leave");
+    return 0;
+}
+
+static void draw_text(Evas_Object *obj, struct object_text_val_t *text)
+{
+    uim_debug("draw_text: Enter");
+
+    evas_object_color_set(obj, text->color.r, text->color.g, text->color.b,
+                          text->color.a);
+    evas_object_resize(obj, text->size.w, text->size.h);
+    evas_object_text_font_set(obj, text->font.name, text->font.size);
+    evas_object_move(obj, text->pos.x, text->pos.y);
+    evas_object_show(obj);
+    evas_object_text_text_set(obj, text->text);
+
+    uim_debug("draw_text: Leave");
+}
+
+static void draw_figr(Evas_Object *obj, struct object_figure_val_t *figr)
+{
+    uim_debug("draw_figr: Enter");
+
+    evas_object_color_set(obj, figr->color.r, figr->color.g, figr->color.b,
+                          figr->color.a);
+    evas_object_resize(obj, figr->size.w, figr->size.h);
+    evas_object_move(obj, figr->pos.x, figr->pos.y);
+    evas_object_show(obj);
+
+    uim_debug("draw_figr: Leave");
+}
+
+static void res_callback(ico_apf_resource_notify_info_t *info,
+                         void *user_data)
+{
+    int ret;
+
+    uim_debug
+        ("##==> Callbacked! evt=%d res=%d id=%d bid=%d appid=%s dev=%s "
+         "user_data=%d", info->state, info->resid, info->id, info->bid,
+         info->appid, info->device, (int) user_data);
+
+    switch (info->state) {
+    case ICO_APF_RESOURCE_STATE_ACQUIRED:
+    case ICO_APF_RESOURCE_STATE_DEPRIVED:
+    case ICO_APF_RESOURCE_STATE_WAITTING:
+    case ICO_APF_RESOURCE_STATE_RELEASED:
+        if (info->resid == ICO_APF_RESID_INT_SOUND) {
+            ret =
+                ico_apf_resource_reply_int_sound_mode(info->device, info->id,
+                                                      1);
+            uim_debug("##==> callback reply int_sound(%s,%d,1) = %d",
+                        info->device, info->id, ret);
+        }
+        else {
+            ret =
+                ico_apf_resource_reply_sound_mode(info->device, info->id, 1);
+            uim_debug("##==> callback reply sound(%s,%d,1) = %d",
+                        info->device, info->id, ret);
+        }
+        break;
+    default:
+        /* NOP  */
+        break;
+    }
+}
+
+int main(int argc, char *argv[])
+{
+    int getsound;
+    char appid[64];
+
+    /* Log output setup */
+    if (ico_apf_get_app_id(0, appid) == ICO_APP_CTL_E_NONE) {
+        ico_apf_log_open(appid);
+    }
+
+    uim_debug("main: Enter");
+
+    Evas *evas;
+    Evas_Object *app_name_text;
+    Evas_Object *stream_name_text;
+    Evas_Object *pid_text;
+    Evas_Object *button_text[MAX_BUTTON_NUM];
+    Evas_Object *button_figr[MAX_BUTTON_NUM];
+    Evas_Object *time_text;
+    char buf[256];
+    char buf2[256];
+    int i = 0;
+
+    /* get resource control option  */
+    getsound = 0;
+    ssndtype[0] = 0;
+    for (i = 1; i < argc; i++) {
+        if (argv[i][0] == '-') {
+            if (strcasecmp(argv[i], "-basesound") == 0) {
+                getsound = 1;   /* get base sound       */
+                strcpy(ssndtype, "BasecSound");
+            }
+            else if (strcasecmp(argv[i], "-intsound") == 0) {
+                getsound = 2;   /* get interrupt sound  */
+                strcpy(ssndtype, "IntSound");
+            }
+            else if (strncasecmp(argv[i], "-int=", 5) == 0) {
+                getsound = strtol(&argv[i][5], (char **) 0, 0);
+                getsound += 2;  /* get interrupt sound  */
+                sprintf(ssndtype, "IntSound.%d", getsound - 2);
+            }
+        }
+    }
+
+    StateNum = STATE_STOP;
+    ChPid = 0;
+    memset(buf, 0x00, sizeof(buf));
+    memset(buf2, 0x00, sizeof(buf));
+
+    if (pipe(Filedes) == -1) {
+        uim_debug("Err pipe Filedes");
+        return EXIT_FAILURE;
+    }
+
+    if (pipe(Filedes2) == -1) {
+        uim_debug("Err pipe Filedes2");
+        return EXIT_FAILURE;
+    }
+
+    if (read_config() == -1) {
+        uim_debug("Err Config Read NG");
+        return EXIT_FAILURE;
+    }
+
+    uim_debug("AudioConfig.wavfile_path = [%s]", AudioConfig.wavfile_path);
+    uim_debug("AudioConfig.server_ip = [%s]", AudioConfig.server_ip);
+    uim_debug("AudioConfig.device_name = [%s]", AudioConfig.device_name);
+    uim_debug("AudioConfig.volume1 = [%d]", AudioConfig.volume1);
+    uim_debug("AudioConfig.volume2 = [%d]", AudioConfig.volume2);
+    uim_debug("AudioConfig.app_name = [%s]", AudioConfig.app_name);
+    uim_debug("AudioConfig.stream_name = [%s]", AudioConfig.stream_name);
+
+    if (!ecore_evas_init()) {
+        return EXIT_FAILURE;
+    }
+
+    if (getsound > 0) {
+        /* initialize resource control for Ecore */
+        if (ico_apf_ecore_init(NULL) != ICO_APF_E_NONE) {
+            uim_debug("ico_apf_ecore_init() Error");
+            ecore_evas_shutdown();
+            return -1;
+        }
+
+        /* set resource request callback */
+        ico_apf_resource_set_event_cb(res_callback, NULL);
+
+        /* acquire a right to display a screen      */
+        if (getsound == 1) {
+            ico_apf_resource_get_sound_mode(NULL, 0, 0);
+        }
+        else {
+            ico_apf_resource_get_int_sound_mode(NULL, getsound - 2, 0);
+        }
+    }
+
+    /* this will give you a window with an Evas canvas under the first
+     * engine available */
+    ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, "frame=0");
+    if (!ee) {
+        goto error;
+    }
+
+    ecore_evas_callback_delete_request_set(ee, _on_destroy);
+    ecore_evas_title_set(ee, "Ecore_Evas window sizes example");
+    ecore_evas_callback_resize_set(ee, _canvas_resize_cb);
+    ecore_evas_show(ee);
+
+    evas = ecore_evas_get(ee);
+
+    /* Background painting */
+    bg = evas_object_rectangle_add(evas);
+    draw_figr(bg, &BgFigr);
+
+    evas_object_focus_set(bg, EINA_TRUE);
+
+    /* App Name drawing */
+    app_name_text = evas_object_text_add(evas);
+    draw_text(app_name_text, &AppNameText);
+
+    if (strlen(AudioConfig.app_name) > MAX_DRAW_LEM) {
+        snprintf(buf2, MAX_DRAW_LEM, "%s", AudioConfig.app_name);
+        snprintf(buf, sizeof(buf), "%s%s...", "App name :  ", buf2);
+    }
+    else {
+        snprintf(buf, sizeof(buf), "%s%s", "App name :  ",
+                 AudioConfig.app_name);
+    }
+
+    evas_object_text_text_set(app_name_text, buf);
+
+    /* Drawing window */
+    text = evas_object_text_add(evas);
+    evas_object_color_set(text, 255, 0, 0, 255);
+    evas_object_resize(text, 150, 50);
+    evas_object_text_font_set(text, "Sans", 20);
+    evas_object_show(text);
+
+    /* Stream Name drawing */
+    stream_name_text = evas_object_text_add(evas);
+    draw_text(stream_name_text, &StreamNameText);
+
+    if (strlen(AudioConfig.stream_name) > MAX_DRAW_LEM) {
+        snprintf(buf2, MAX_DRAW_LEM, "%s", AudioConfig.stream_name);
+        snprintf(buf, sizeof(buf), "%s%s...", "Stream name :  ", buf2);
+    }
+    else {
+        snprintf(buf, sizeof(buf), "%s%s", "Stream name :  ",
+                 AudioConfig.stream_name);
+    }
+
+    evas_object_text_text_set(stream_name_text, buf);
+
+    /* PID drawing */
+    pid_text = evas_object_text_add(evas);
+    draw_text(pid_text, &PidText);
+    snprintf(buf, sizeof(buf), "%s%d", "PID :  ", getpid());
+    evas_object_text_text_set(pid_text, buf);
+
+    /* Sound condition drawing */
+    State_text = evas_object_text_add(evas);
+    draw_text(State_text, &StateInfoText);
+
+    /** Button drawing */
+    for (i = 0; i < MAX_BUTTON_NUM; i++) {
+        /* Button name drawing */
+        button_text[i] = evas_object_text_add(evas);
+        draw_text(button_text[i], &ButtonText[i]);
+
+        /* Button Frame drawing */
+        button_figr[i] = evas_object_rectangle_add(evas);
+        draw_figr(button_figr[i], &ButtonFigr[i]);
+
+        /* Callback function entry */
+        evas_object_event_callback_add(button_figr[i],
+                                       EVAS_CALLBACK_MOUSE_DOWN,
+                                       (Evas_Object_Event_Cb) (ButtonFigr[i].
+                                                               func),
+                                       State_text);
+    }
+
+    /* Drawing of the current time */
+    time_text = evas_object_text_add(evas);
+    draw_text(time_text, &TimeText);
+
+    /* Timer callback function entry */
+    ecore_timer_add(0.1, (Ecore_Task_Cb) (TimeText.func), time_text);
+
+    /* File descriptor to monitor callback function entry */
+    ecore_main_fd_handler_add(Filedes2[0], ECORE_FD_READ, stop_audio, NULL,
+                              NULL, NULL);
+
+    _canvas_resize_cb(ee);
+    fprintf(stdout, commands);
+    ecore_main_loop_begin();
+
+    ico_apf_ecore_term();
+
+    ecore_evas_free(ee);
+    ecore_evas_shutdown();
+
+    close(Filedes[0]);
+    close(Filedes[1]);
+    close(Filedes2[0]);
+    close(Filedes2[1]);
+
+    /* Process check */
+    if ((ChPid > 0) && (kill(ChPid, 0) != EOF)) {
+        kill(ChPid, SIGKILL);
+        uim_debug("END Process ChPid = [%d]", ChPid);
+    }
+    uim_debug("main: Leave");
+
+    return 0;
+
+  error:
+    fprintf(stderr,
+            "You got to have at least one Evas engine built and linked up"
+            " to ecore-evas for this example to run properly.\n");
+    ecore_evas_shutdown();
+    return -1;
+}
diff --git a/src/soundsample.h b/src/soundsample.h
new file mode 100644 (file)
index 0000000..9bc4889
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the 
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+/**
+ * @brief   Sound Sample APP
+ *          Test use with which sound is sounded
+ *
+ * @date    Mar-04-2013
+ */
+
+#ifndef _SAMPLE_H_
+#define _SAMPLE_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+    struct audio_config_t
+    {
+        char *wavfile_path;
+        char *server_ip;
+        char *device_name;
+        int volume1;
+        int volume2;
+        char *app_name;
+        char *stream_name;
+    };
+
+/* STATE */
+#define STATE_START  0
+#define STATE_STOP   1
+#define STATE_PAUSE  2
+
+/* EVENT */
+#define START_REQ    0
+#define STOP_REQ     1
+#define PAUSE_REQ    2
+
+/* PULSE DEFAULT VAL */
+#define APP_NAME    "TP_PulseAudio"
+#define STREAM_NAME "Pri0"
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* _SAMPLE_H_ */
+
+/**
+ * End of File. (soundsample.h)
+ */
diff --git a/src/soundsample_pulse_async_test.cpp b/src/soundsample_pulse_async_test.cpp
new file mode 100644 (file)
index 0000000..a4cd7ba
--- /dev/null
@@ -0,0 +1,360 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the 
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+/**
+ * @brief   Sound Sample APP
+ *          Test use with which sound is sounded
+ *
+ * @date    Mar-04-2013
+ */
+
+/**
+ *  TP using PulseAudio with wavfile
+ **/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <pulse/mainloop.h>
+#include <pulse/context.h>
+#include <pulse/stream.h>
+#include <pulse/error.h>
+
+#include "soundsample_yswavfile.h"
+
+//#include "app_log.h"
+#include "ico_apf_log.h"
+#include "soundsample.h"
+
+#define ICO_PA_STREAM_PAUSE  (1)
+#define ICO_PA_STREAM_RESUME (0)
+
+extern "C"
+{
+    int pulse_main(struct audio_config_t *audio_config, int filedes);
+}
+
+static int ExitFlg;
+static int ReadFiledes;
+#define REPEAT_FLG 1            /* ON:0 ,OFF:1 */
+
+static YSRESULT YsPulseAudioWaitForConnectionEstablished(pa_context *
+                                                         paContext,
+                                                         pa_mainloop *
+                                                         paMainLoop,
+                                                         time_t timeOut)
+{
+    time_t timeLimit = time(NULL) + timeOut;
+    while (timeLimit >= time(NULL)) {
+        pa_mainloop_iterate(paMainLoop, 0, NULL);
+        if (PA_CONTEXT_READY == pa_context_get_state(paContext)) {
+            return YSOK;
+        }
+    }
+    return YSERR;
+}
+
+static void event_input_callback(pa_mainloop_api *a, pa_io_event *e, int fd,
+                                 pa_io_event_flags_t f, void *userdata)
+{
+
+    uim_debug("event_input_callback: Enter");
+
+    char buff[255];
+    memset(buff, 0x00, sizeof(buff));
+
+    /* From a pipe to reading */
+    read(ReadFiledes, buff, sizeof(buff));
+    uim_debug("buff :%s", buff);
+
+    switch (atoi(buff)) {
+    case STOP_REQ:
+        uim_debug("Stop directions reception");
+        ExitFlg = 1;
+        break;
+
+    case PAUSE_REQ:
+        uim_debug("Pause directions reception");
+
+        if (0 == pa_stream_is_corked((pa_stream *) userdata)) {
+            pa_stream_cork((pa_stream *) userdata, ICO_PA_STREAM_PAUSE, NULL,
+                           NULL);
+            uim_debug("pa_stream_cork(PAUSE)");
+            sleep(2);
+            uim_debug("sleep end");
+        }
+        else {
+            pa_stream_cork((pa_stream *) userdata, ICO_PA_STREAM_RESUME, NULL,
+                           NULL);
+            uim_debug("pa_stream_cork(RESUME)");
+            sleep(2);
+            uim_debug("sleep end");
+        }
+        break;
+
+    default:
+        uim_debug("Err Reception range outside");
+        break;
+    }
+
+    uim_debug("event_input_callback: Leave");
+}
+
+int pulse_main(struct audio_config_t *audio_config, int filedes)
+{
+    char *server_ip = NULL;
+    char *device_name = NULL;
+    int volume_set = -1;
+    int volume_set2 = -1;
+    char *app_name = NULL;
+    char *stream_name = NULL;
+
+    pa_cvolume *cvolume = NULL;
+
+    char cm[PA_CHANNEL_MAP_SNPRINT_MAX];
+    pa_channel_map cmap;
+
+    YsWavFile wavFile;
+
+    ReadFiledes = filedes;
+    ExitFlg = 0;
+
+    if (audio_config == NULL) {
+        uim_debug("Param Err");
+        return -1;
+    }
+
+    if (YSOK != wavFile.LoadWav(audio_config->wavfile_path)) {
+//        fprintf(stderr, "Cannot open wave file.\n");
+        uim_debug("Cannot open wave file.");
+        return -1;
+    }
+
+    if (audio_config->volume1 != -1) {
+        cvolume = (pa_cvolume *) malloc(sizeof(pa_cvolume));
+    }
+    else {
+        cvolume = NULL;
+    }
+
+    server_ip = audio_config->server_ip;
+    device_name = audio_config->device_name;
+    volume_set = audio_config->volume1;
+    volume_set2 = audio_config->volume2;
+    app_name = audio_config->app_name;
+    stream_name = audio_config->stream_name;
+
+    uim_debug("Before Resampling:");
+    uim_debug("Bit per sample: %d", wavFile.BitPerSample());
+    uim_debug("Stereo: %d", wavFile.Stereo());
+    uim_debug("Playback Rate: %d", wavFile.PlayBackRate());
+    uim_debug("Signed: %d", wavFile.IsSigned());
+
+    wavFile.ConvertTo16Bit();
+    wavFile.ConvertToSigned();
+//    wavFile.ConvertToStereo();
+    wavFile.Resample(44100);
+//    wavFile.ConvertToMono();
+
+    uim_debug("After Resampling:");
+    uim_debug("Bit per sample: %d", wavFile.BitPerSample());
+    uim_debug("Stereo: %d", wavFile.Stereo());
+    uim_debug("Playback Rate: %d", wavFile.PlayBackRate());
+    uim_debug("Signed: %d", wavFile.IsSigned());
+
+    pa_mainloop *paMainLoop = pa_mainloop_new();
+    if (NULL == paMainLoop) {
+//        fprintf(stderr,"Cannot create main loop.\n");
+        uim_debug("Cannot create main loop.");
+        return -1;
+    }
+    uim_debug("pa_mainloop_new()");
+
+    pa_context *paContext = pa_context_new(pa_mainloop_get_api(paMainLoop),
+                                           app_name);
+    if (NULL == paContext) {
+//        fprintf(stderr,"Cannot create context.\n");
+        uim_debug("Cannot create context.");
+        return -1;
+    }
+    uim_debug("pa_context_new()");
+
+    // pa_context_set_state_callback(paContext,YsPulseAudioConnectionCallBack,NULL);
+    pa_context_connect(paContext, server_ip, (pa_context_flags_t) 0, NULL);
+    uim_debug("pa_context_connect()");
+
+    YsPulseAudioWaitForConnectionEstablished(paContext, paMainLoop, 5);
+
+    pa_sample_format_t format = PA_SAMPLE_U8;
+    switch (wavFile.BitPerSample()) {
+    case 8:
+        if (YSTRUE == wavFile.IsSigned()) {
+            wavFile.ConvertToUnsigned();
+        }
+        format = PA_SAMPLE_U8;
+        break;
+    case 16:
+        if (YSTRUE != wavFile.IsSigned()) {
+            wavFile.ConvertToSigned();
+        }
+        format = PA_SAMPLE_S16LE;
+        break;
+    }
+    const int rate = wavFile.PlayBackRate();
+    const int nChannel = (YSTRUE == wavFile.Stereo()? 2 : 1);
+
+    const pa_sample_spec ss = {
+        format,
+        rate,
+        nChannel
+    };
+
+    pa_channel_map_init_auto(&cmap, nChannel, PA_CHANNEL_MAP_ALSA);
+    uim_debug("pa_channel_map_init_auto()");
+    uim_debug("map: <%s>", pa_channel_map_snprint(cm, sizeof(cm), &cmap));
+
+    if (NULL != cvolume) {
+//        int i = 0;
+        unsigned int i = 0;
+        for (i = 0; i < PA_CHANNELS_MAX; i++) {
+            if (1 == i) {
+                if (-1 != volume_set2) {
+                    cvolume->values[i] = volume_set2;
+                }
+            }
+            else {
+                cvolume->values[i] = volume_set;
+            }
+            uim_debug("volume[%d]_%d", i, cvolume->values[i]);
+        }
+        cvolume->channels = nChannel;
+    }
+
+    unsigned int playBackPtr = 0;
+    YSBOOL checkForUnderflow = YSTRUE;
+//    time_t t0 = time(NULL);
+    time_t prevT = time(NULL) - 1;
+
+    uim_debug("enter mainloop");
+    pa_stream *paStream;
+    int loopcnt;
+    static pa_io_event *stdio_event = NULL;
+    static pa_mainloop_api *mainloop_api = pa_mainloop_get_api(paMainLoop);
+
+    paStream = pa_stream_new(paContext, stream_name, &ss, &cmap);
+    if (NULL != paStream) {
+        uim_debug("Stream created!  Getting there!");
+    }
+    else {
+        uim_debug("Stream created : NG");
+        ExitFlg = 1;
+    }
+
+    uim_debug("pa_stream_new()");
+
+    if (!(stdio_event = mainloop_api->io_new(mainloop_api, ReadFiledes,
+                                             PA_IO_EVENT_INPUT,
+                                             event_input_callback,
+                                             paStream))) {
+        uim_debug("io_new() failed()");
+        ExitFlg = 1;
+    }
+
+    pa_stream_connect_playback(paStream, device_name, NULL,
+                               (pa_stream_flags_t) 0, cvolume, NULL);
+    uim_debug("pa_stream_connect_playback()");
+
+    int st = -1;
+    for (loopcnt = 0; ExitFlg != 1; loopcnt++) {
+        if (st != pa_stream_get_state(paStream)) {
+            st = pa_stream_get_state(paStream);
+
+            uim_debug("TURN(%6d)_", loopcnt);
+
+            switch (pa_stream_get_state(paStream)) {
+            case PA_STREAM_UNCONNECTED:
+                uim_debug("PA_STREAM_UNCONNECTED");
+                break;
+            case PA_STREAM_CREATING:
+                uim_debug("PA_STREAM_CREATING");
+                break;
+            case PA_STREAM_READY:
+                uim_debug("PA_STREAM_READY");
+                break;
+            case PA_STREAM_FAILED:
+                uim_debug("PA_STREAM_FAILED");
+                break;
+            case PA_STREAM_TERMINATED:
+                uim_debug("PA_STREAM_TERMINATED");
+                break;
+            }
+        }
+
+        if (time(NULL) != prevT) {
+/*          uim_debug("Ping..."); */
+            prevT = time(NULL);
+        }
+
+        if (PA_STREAM_READY == pa_stream_get_state(paStream)) {
+            const size_t writableSize = pa_stream_writable_size(paStream);
+            const size_t sizeRemain = wavFile.SizeInByte() - playBackPtr;
+            const size_t writeSize =
+                (sizeRemain < writableSize ? sizeRemain : writableSize);
+
+            if (0 < writeSize) {
+                pa_stream_write(paStream, wavFile.DataPointer() + playBackPtr,
+                                writeSize, NULL, 0, PA_SEEK_RELATIVE);
+                playBackPtr += writeSize;
+                uim_debug("pa_stream_write()_%d", (int) writeSize);
+            }
+        }
+
+        if ((wavFile.SizeInByte() <= playBackPtr) &&
+            (0 <= pa_stream_get_underflow_index(paStream)) &&
+            (YSTRUE == checkForUnderflow)) {
+            uim_debug
+                ("Underflow detected. (Probably the playback is done.)");
+            playBackPtr = 0;
+#if REPEAT_FLG
+            break;
+#endif
+        }
+        pa_mainloop_iterate(paMainLoop, 0, NULL);
+    }
+
+    uim_debug("STREAM is END.");
+
+    pa_stream_disconnect(paStream);
+    uim_debug("pa_stream_disconnect()");
+
+    pa_stream_unref(paStream);
+    uim_debug("pa_stream_unref()");
+//  sleep(1);
+
+    uim_debug("leave mainloop");
+
+    if (NULL != cvolume) {
+        free(cvolume);
+    }
+
+    pa_context_disconnect(paContext);
+    uim_debug("pa_context_disconnect()");
+
+    pa_context_unref(paContext);
+    uim_debug("pa_context_unref()");
+
+    pa_mainloop_free(paMainLoop);
+    uim_debug("pa_mainloop_free()");
+
+    uim_debug("The End");
+
+    return 0;
+}
diff --git a/src/soundsample_yswavfile.cpp b/src/soundsample_yswavfile.cpp
new file mode 100644 (file)
index 0000000..36a7d5d
--- /dev/null
@@ -0,0 +1,646 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the 
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+/**
+ * @brief   Sound Sample APP
+ *          Test use with which sound is sounded
+ *
+ * @date    Mar-04-2013
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include "soundsample_yswavfile.h"
+
+//#include "app_log.h"
+#include "ico_apf_log.h"
+
+YsWavFile::YsWavFile()
+{
+    dat = NULL;
+    Initialize();
+}
+
+YsWavFile::~YsWavFile()
+{
+    if (dat != NULL) {
+        delete[] dat;
+    }
+}
+
+void YsWavFile::Initialize(void)
+{
+    if (dat != NULL) {
+        delete[] dat;
+        dat = NULL;
+    }
+
+    stereo = YSFALSE;
+    bit = 16;
+    rate = 44100;
+    sizeInBytes = 0;
+    isSigned = YSTRUE;
+}
+
+unsigned int YsWavFile::NTimeStep(void) const
+{
+    return SizeInByte() / BytePerTimeStep();
+}
+
+YSBOOL YsWavFile::Stereo(void) const
+{
+    return stereo;
+}
+
+unsigned int YsWavFile::BytePerTimeStep(void) const
+{
+    unsigned int nChannel = (YSTRUE == stereo ? 2 : 1);
+    return nChannel * BytePerSample();
+}
+
+unsigned int YsWavFile::BitPerSample(void) const
+{
+    return bit;
+}
+
+unsigned int YsWavFile::BytePerSample(void) const
+{
+    return bit / 8;
+}
+
+unsigned int YsWavFile::PlayBackRate(void) const
+{
+    return rate;
+}
+
+unsigned int YsWavFile::SizeInByte(void) const
+{
+    return sizeInBytes;
+}
+
+YSBOOL YsWavFile::IsSigned(void) const
+{
+    return isSigned;
+}
+
+const unsigned char *YsWavFile::DataPointer(void) const
+{
+    return dat;
+}
+
+const unsigned char *YsWavFile::DataPointerAtTimeStep(unsigned int ts) const
+{
+    return dat + ts * BytePerTimeStep();
+}
+
+static unsigned GetUnsigned(const unsigned char buf[])
+{
+    return buf[0] + buf[1] * 0x100 + buf[2] * 0x10000 + buf[3] * 0x1000000;
+}
+
+static unsigned GetUnsignedShort(const unsigned char buf[])
+{
+    return buf[0] + buf[1] * 0x100;
+}
+
+
+
+YSRESULT YsWavFile::LoadWav(const char fn[])
+{
+    FILE *fp;
+
+    uim_debug("Loading %s", fn);
+
+    fp = fopen(fn, "rb");
+    if (fp != NULL) {
+        unsigned char buf[256];
+        unsigned int l;
+        unsigned int fSize, hdrSize, dataSize;
+
+        // Wave Header
+        unsigned short wFormatTag, nChannels;
+        unsigned nSamplesPerSec, nAvgBytesPerSec;
+        unsigned short nBlockAlign, wBitsPerSample, cbSize;
+
+
+        if (fread(buf, 1, 4, fp) != 4) {
+            uim_debug("Error in reading RIFF.");
+            goto ERREND;
+        }
+        if (strncmp((char *) buf, "RIFF", 4) != 0) {
+            uim_debug("Warning: RIFF not found.");
+        }
+
+
+        if (fread(buf, 1, 4, fp) != 4) {
+            uim_debug("Error in reading file size.");
+            goto ERREND;
+        }
+        fSize = GetUnsigned(buf);
+        uim_debug("File Size=%d", fSize + 8);
+
+        if (fread(buf, 1, 8, fp) != 8) {
+            uim_debug("Error in reading WAVEfmt.");
+            goto ERREND;
+        }
+        if (strncmp((char *) buf, "WAVEfmt", 7) != 0) {
+            uim_debug("Warning: WAVEfmt not found");
+        }
+
+
+        if (fread(buf, 1, 4, fp) != 4) {
+            uim_debug("Error in reading header size.");
+            goto ERREND;
+        }
+        hdrSize = GetUnsigned(buf);
+        uim_debug("Header Size=%d", hdrSize);
+
+
+        //    WORD  wFormatTag;
+        //    WORD  nChannels;
+        //    DWORD nSamplesPerSec;
+        //    DWORD nAvgBytesPerSec;
+        //    WORD  nBlockAlign;
+        //    WORD  wBitsPerSample;
+        //    WORD  cbSize;
+        if (fread(buf, 1, hdrSize, fp) != hdrSize) {
+            uim_debug("Error in reading header.");
+            goto ERREND;
+        }
+        wFormatTag = GetUnsignedShort(buf);
+        nChannels = GetUnsignedShort(buf + 2);
+        nSamplesPerSec = GetUnsigned(buf + 4);
+        nAvgBytesPerSec = GetUnsigned(buf + 8);
+        nBlockAlign = GetUnsignedShort(buf + 12);
+        wBitsPerSample = (hdrSize >= 16 ? GetUnsignedShort(buf + 14) : 0);
+        cbSize = (hdrSize >= 18 ? GetUnsignedShort(buf + 16) : 0);
+
+        uim_debug("wFormatTag=%d", wFormatTag);
+        uim_debug("nChannels=%d", nChannels);
+        uim_debug("nSamplesPerSec=%d", nSamplesPerSec);
+        uim_debug("nAvgBytesPerSec=%d", nAvgBytesPerSec);
+        uim_debug("nBlockAlign=%d", nBlockAlign);
+        uim_debug("wBitsPerSample=%d", wBitsPerSample);
+        uim_debug("cbSize=%d", cbSize);
+
+
+
+        while (1) {
+            if (fread(buf, 1, 4, fp) != 4) {
+                uim_debug("Error while waiting for data.");
+                goto ERREND;
+            }
+
+            if ((buf[0] == 'd' || buf[0] == 'D')
+                && (buf[1] == 'a' || buf[1] == 'A') && (buf[2] == 't'
+                                                        || buf[2] == 'T')
+                && (buf[3] == 'a' || buf[3] == 'A')) {
+                break;
+            }
+            else {
+                uim_debug("Skipping %c%c%c%c", buf[0], buf[1], buf[2],
+                            buf[3]);
+                if (fread(buf, 1, 4, fp) != 4) {
+                    uim_debug("Error while skipping unknown block.");
+                    goto ERREND;
+                }
+
+
+
+                l = GetUnsigned(buf);
+                if (fread(buf, 1, l, fp) != l) {
+                    uim_debug("Error while skipping unknown block.");
+                    goto ERREND;
+                }
+            }
+        }
+
+
+        if (fread(buf, 1, 4, fp) != 4) {
+            uim_debug("Error in reading data size.");
+            goto ERREND;
+        }
+        dataSize = GetUnsigned(buf);
+        uim_debug("Data Size=%d (0x%x)", dataSize, dataSize);
+
+        dat = new unsigned char[dataSize];
+        if ((l = fread(dat, 1, dataSize, fp)) != dataSize) {
+            uim_debug("Warning: File ended before reading all data.");
+            uim_debug("  %d (0x%x) bytes have been read", l, l);
+        }
+
+        stereo = (nChannels == 2 ? YSTRUE : YSFALSE);
+        bit = wBitsPerSample;
+        sizeInBytes = dataSize;
+        rate = nSamplesPerSec;
+
+        if (wBitsPerSample == 8) {
+            isSigned = YSFALSE;
+        }
+        else {
+            isSigned = YSTRUE;
+        }
+
+        fclose(fp);
+        return YSOK;
+    }
+    return YSERR;
+
+  ERREND:
+    uim_debug("Err!");
+    if (fp != NULL) {
+        fclose(fp);
+    }
+    return YSERR;
+}
+
+
+YSRESULT YsWavFile::ConvertTo16Bit(void)
+{
+    if (bit == 16) {
+        return YSOK;
+    }
+    else if (bit == 8) {
+        if (sizeInBytes > 0 && dat != NULL) {
+            unsigned char *newDat = new unsigned char[sizeInBytes * 2];
+//          for (int i=0; i<sizeInBytes; i++)
+            for (unsigned int i = 0; i < sizeInBytes; i++) {
+                newDat[i * 2] = dat[i];
+                newDat[i * 2 + 1] = dat[i];
+            }
+            delete[] dat;
+            dat = newDat;
+
+            sizeInBytes *= 2;
+            bit = 16;
+        }
+        return YSOK;
+    }
+    return YSERR;
+}
+
+YSRESULT YsWavFile::ConvertTo8Bit(void)
+{
+    if (bit == 8) {
+        return YSOK;
+    }
+    else if (bit == 16) {
+        unsigned char *newDat = new unsigned char[sizeInBytes / 2];
+//      for (int i=0; i<sizeInBytes; i+=2)
+        for (unsigned int i = 0; i < sizeInBytes; i += 2) {
+            newDat[i / 2] = dat[i];
+        }
+        if (dat != NULL) {
+            delete[] dat;
+        }
+        dat = newDat;
+        bit = 8;
+        sizeInBytes /= 2;
+        return YSOK;
+    }
+    return YSERR;
+}
+
+YSRESULT YsWavFile::ConvertToStereo(void)
+{
+    if (stereo == YSTRUE) {
+        return YSOK;
+    }
+    else {
+        if (bit == 8) {
+            unsigned char *newDat = new unsigned char[sizeInBytes * 2];
+//          for (int i=0; i<sizeInBytes; i++)
+            for (unsigned int i = 0; i < sizeInBytes; i++) {
+                newDat[i * 2] = dat[i];
+                newDat[i * 2 + 1] = dat[i];
+            }
+            if (dat != NULL) {
+                delete[] dat;
+            }
+            dat = newDat;
+            stereo = YSTRUE;
+            sizeInBytes *= 2;
+            return YSOK;
+        }
+        else if (bit == 16) {
+            unsigned char *newDat = new unsigned char[sizeInBytes * 2];
+//          for (int i=0; i<sizeInBytes; i+=2)
+            for (unsigned int i = 0; i < sizeInBytes; i += 2) {
+                newDat[i * 2] = dat[i];
+                newDat[i * 2 + 1] = dat[i + 1];
+                newDat[i * 2 + 2] = dat[i];
+                newDat[i * 2 + 3] = dat[i + 1];
+            }
+            if (dat != NULL) {
+                delete[] dat;
+            }
+            dat = newDat;
+            stereo = YSTRUE;
+            sizeInBytes *= 2;
+            return YSOK;
+        }
+    }
+    return YSERR;
+}
+
+//YSRESULT YsWavFile::Resample(int newRate)
+YSRESULT YsWavFile::Resample(unsigned int newRate)
+{
+    if (rate != newRate) {
+        const size_t nChannel = (YSTRUE == stereo ? 2 : 1);
+        const size_t bytePerSample = bit / 8;
+        const size_t bytePerTimeStep = nChannel * bytePerSample;
+        const size_t curNTimeStep = sizeInBytes / bytePerTimeStep;
+
+        const size_t newNTimeStep = curNTimeStep * newRate / rate;
+        const size_t newSize = newNTimeStep * bytePerTimeStep;
+
+        unsigned char *newDat;
+        newDat = (0 < newSize ? new unsigned char[newSize] : NULL);
+
+        if (NULL != newDat) {
+            for (size_t ts = 0; ts < newNTimeStep; ts++) {
+                double oldTimeStepD = (double) curNTimeStep * (double) ts /
+                    (double) newNTimeStep;
+                size_t oldTimeStep = (size_t) oldTimeStepD;
+                double param = fmod(oldTimeStepD, 1.0);
+                unsigned char *newTimeStepPtr = newDat + ts * bytePerTimeStep;
+
+                for (size_t ch = 0; ch < nChannel; ++ch) {
+                    if (curNTimeStep - 1 <= oldTimeStep) {
+                        const int value =
+                            GetSignedValue(curNTimeStep - 1, ch);
+                        SetSignedValue(newTimeStepPtr + bytePerSample * ch,
+                                       value);
+                    }
+                    else if ((0 == oldTimeStep) ||
+                             (curNTimeStep - 2 <= oldTimeStep)) {
+                        const double value[2] = {
+                            (double) GetSignedValue(oldTimeStep, ch),
+                            (double) GetSignedValue(oldTimeStep + 1, ch)
+                        };
+                        const int newValue = (int)
+                            (value[0] * (1.0 - param) + value[1] * param);
+                        SetSignedValue(newTimeStepPtr + bytePerSample * ch,
+                                       newValue);
+                    }
+                    else {
+                        const double v[4] = {
+                            // At x=-1.0
+                            (double) GetSignedValue(oldTimeStep - 1, ch),
+                            // At x= 0.0
+                            (double) GetSignedValue(oldTimeStep, ch),
+                            // At x= 1.0
+                            (double) GetSignedValue(oldTimeStep + 1, ch),
+                            // At x= 2.0
+                            (double) GetSignedValue(oldTimeStep + 2, ch)
+                        };
+
+                        // Cubic interpolation.  Linear didn't work well.
+                        // axxx+bxx+cx+d=e
+                        // x=-1  -> -a+b-c+d=v0   (A)
+                        // x= 0  ->        d=v1   (B)
+                        // x= 1  ->  a+b+c+d=v2   (C)
+                        // x= 2  -> 8a+4b+2c+d=v3 (D)
+                        //
+                        // (B) =>  d=v1;
+                        // (A)+(C) => 2b+2d=v0+v2  => b=(v0+v2-2d)/2
+                        //
+                        // (D)-2*(B) =>  6a+2b-d=v3-2*v2
+                        //           =>  a=(v3-2*v2-2b+d)/6
+
+                        const double d = v[1];
+                        const double b = (v[0] + v[2] - 2.0 * d) / 2.0;
+                        const double a =
+                            (v[3] - 2.0 * v[2] - 2.0 * b + d) / 6.0;
+                        const double c = v[2] - a - b - d;
+
+                        double newValue = a * param * param * param
+                            + b * param * param + c * param + d;
+                        SetSignedValue(newTimeStepPtr + bytePerSample * ch,
+                                       (int) newValue);
+                    }
+                }
+            }
+        }
+
+        rate = newRate;
+        if (dat != NULL) {
+            delete[] dat;
+        }
+        dat = newDat;
+        sizeInBytes = newSize;
+    }
+    return YSOK;
+}
+
+YSRESULT YsWavFile::ConvertToMono(void)
+{
+    if (YSTRUE == stereo) {
+        const size_t bytePerSample = bit / 8;
+        const size_t bytePerTimeStep = 2 * bytePerSample;
+        const size_t nTimeStep = sizeInBytes / bytePerTimeStep;
+
+        const size_t newSize = nTimeStep * bytePerSample;
+
+        unsigned char *newDat;
+        newDat = (0 < newSize ? new unsigned char[newSize] : NULL);
+        if (NULL != newDat) {
+            for (size_t ts = 0; ts < nTimeStep; ts++) {
+                const int newValue =
+                    (GetSignedValue(ts, 0) + GetSignedValue(ts, 1)) / 2;
+                unsigned char *const newTimeStepPtr =
+                    newDat + ts * bytePerSample;
+                SetSignedValue(newTimeStepPtr, newValue);
+            }
+
+            if (dat != NULL) {
+                delete[] dat;
+            }
+            dat = newDat;
+            sizeInBytes = newSize;
+            stereo = YSFALSE;
+
+            return YSOK;
+        }
+    }
+    return YSERR;
+}
+
+YSRESULT YsWavFile::ConvertToSigned(void)
+{
+    if (isSigned == YSTRUE) {
+        return YSOK;
+    }
+    else {
+        if (bit == 8) {
+//          for (int i = 0; i < sizeInBytes; i++)
+            for (unsigned int i = 0; i < sizeInBytes; i++) {
+                dat[i] -= 128;
+            }
+        }
+        else if (bit == 16) {
+//          for (int i = 0; i < sizeInBytes-1; i+=2)
+            for (unsigned int i = 0; i < sizeInBytes - 1; i += 2) {
+                int d;
+                d = dat[i] + dat[i + 1] * 256;
+                d -= 32768;
+                dat[i] = d & 255;
+                dat[i + 1] = (d >> 8) & 255;
+            }
+        }
+        isSigned = YSTRUE;
+    }
+    return YSOK;
+}
+
+YSRESULT YsWavFile::ConvertToUnsigned(void)
+{
+    if (isSigned != YSTRUE) {
+        return YSOK;
+    }
+    else {
+        if (bit == 8) {
+//          for (int i = 0; i < sizeInBytes; i++)
+            for (unsigned int i = 0; i < sizeInBytes; i++) {
+                dat[i] += 128;
+            }
+        }
+        else if (bit == 16) {
+//          for (int i = 0; i < sizeInBytes-1; i+=2)
+            for (unsigned int i = 0; i < sizeInBytes - 1; i += 2) {
+                int d = dat[i] + dat[i + 1] * 256;
+                if (d >= 32768) {
+                    d -= 65536;
+                }
+                d += 32768;
+                dat[i] = d & 255;
+                dat[i + 1] = (d >> 8) & 255;
+            }
+        }
+        isSigned = YSFALSE;
+    }
+    return YSOK;
+}
+
+//int main(int ac,char *av[])
+//{
+//  YsWavFile test;
+//  test.LoadWav(av[1]);
+//  return 0;
+//}
+
+int YsWavFile::GetNumChannel(void) const
+{
+    return (YSTRUE == stereo ? 2 : 1);
+}
+
+int YsWavFile::GetNumSample(void) const
+{
+    return sizeInBytes * 8 / bit;
+}
+
+int YsWavFile::GetNumSamplePerChannel(void) const
+{
+    return GetNumSample() / GetNumChannel();
+}
+
+size_t YsWavFile::GetUnitSize(void) const
+{
+    return BytePerSample() * GetNumChannel();
+}
+
+size_t YsWavFile::GetSamplePosition(int atIndex) const
+{
+    return atIndex * GetNumChannel() * (bit / 8);
+}
+
+int YsWavFile::GetSignedValue(int atTimeStep, int channel) const
+{
+    const size_t sampleIdx = GetSamplePosition(atTimeStep);
+    const size_t unitSize = GetUnitSize();
+
+    if ((sampleIdx + unitSize <= sizeInBytes) &&
+        (0 <= channel) && (channel < GetNumChannel())) {
+        int rawSignedValue = 0;
+        size_t offset = sampleIdx + channel * BytePerSample();
+        switch (BitPerSample()) {
+        case 8:
+            if (YSTRUE == isSigned) {
+                rawSignedValue = dat[offset];
+                if (128 <= rawSignedValue) {
+                    rawSignedValue -= 256;
+                }
+            }
+            else {
+                rawSignedValue = dat[offset] - 128;
+            }
+            break;
+        case 16:
+            // Assume little endian
+            rawSignedValue = dat[offset] + 256 * dat[offset + 1];
+            if (YSTRUE == isSigned) {
+                if (32768 <= rawSignedValue) {
+                    rawSignedValue -= 65536;
+                }
+            }
+            else {
+                rawSignedValue -= 32768;
+            }
+            break;
+        }
+        return rawSignedValue;
+    }
+    return 0;
+}
+
+void YsWavFile::SetSignedValue(unsigned char *savePtr, int rawSignedValue)
+{
+    switch (bit) {
+    case 8:
+        if (rawSignedValue < -128) {
+            rawSignedValue = -128;
+        }
+        else if (127 < rawSignedValue) {
+            rawSignedValue = 127;
+        }
+        if (YSTRUE == isSigned) {
+            if (0 > rawSignedValue) {
+                rawSignedValue += 256;
+            }
+            *savePtr = (unsigned char) rawSignedValue;
+        }
+        else {
+            rawSignedValue += 128;
+            *savePtr = (unsigned char) rawSignedValue;
+        }
+        break;
+    case 16:
+        if (-32768 > rawSignedValue) {
+            rawSignedValue = -32768;
+        }
+        else if (32767 < rawSignedValue) {
+            rawSignedValue = 32767;
+        }
+
+        if (YSTRUE == isSigned) {
+            if (0 > rawSignedValue) {
+                rawSignedValue += 65536;
+            }
+        }
+        else {
+            rawSignedValue += 32768;
+        }
+
+        // Assume little endian (.WAV is supposed to use little endian).
+        savePtr[0] = (rawSignedValue & 255);
+        savePtr[1] = ((rawSignedValue >> 8) & 255);
+        break;
+    }
+}
diff --git a/src/soundsample_yswavfile.h b/src/soundsample_yswavfile.h
new file mode 100644 (file)
index 0000000..05262da
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the 
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+/**
+ * @brief   Sound Sample APP
+ *          Test use with which sound is sounded
+ *
+ * @date    Mar-04-2013
+ */
+
+#ifndef YSWAVFILE_IS_INCLUDED
+#define YSWAVFILE_IS_INCLUDED
+/* { */
+
+#ifndef YSRESULT_IS_DEFINED
+#define YSRESULT_IS_DEFINED
+/*! Enum for processing result. */
+typedef enum
+{
+    YSERR,                      /*!< There were error(s). */
+    YSOK                        /*!< The process was successful. */
+} YSRESULT;
+#endif
+
+#ifndef YSBOOL_IS_DEFINED
+#define YSBOOL_IS_DEFINED
+/*! Enum for boolearn. */
+typedef enum
+{
+    YSFALSE,                    /*!< False */
+    YSTRUE,                     /*!< True */
+    YSTFUNKNOWN                 /*!< Unable to tell true or false. */
+} YSBOOL;
+#endif
+
+class YsWavFile
+{
+  private:
+    YSBOOL stereo;
+    unsigned int bit;
+    unsigned int rate;
+    unsigned int sizeInBytes;
+
+    YSBOOL isSigned;
+    unsigned char *dat;
+
+  public:
+         YsWavFile();
+        ~YsWavFile();
+
+    void Initialize(void);
+
+    unsigned int NTimeStep(void) const;
+
+    YSBOOL Stereo(void) const;
+    unsigned int BytePerTimeStep(void) const;
+    unsigned int BitPerSample(void) const;
+    unsigned int BytePerSample(void) const;
+    unsigned int PlayBackRate(void) const;
+    unsigned int SizeInByte(void) const;
+    YSBOOL IsSigned(void) const;
+    const unsigned char *DataPointer(void) const;
+    const unsigned char *DataPointerAtTimeStep(unsigned int ts) const;
+
+    YSRESULT LoadWav(const char fn[]);
+    YSRESULT ConvertTo16Bit(void);
+    YSRESULT ConvertTo8Bit(void);
+    YSRESULT ConvertToStereo(void);
+    YSRESULT ConvertToMono(void);
+//  YSRESULT Resample(int newRate);
+    YSRESULT Resample(unsigned int newRate);
+
+    YSRESULT ConvertToSigned(void);
+    YSRESULT ConvertToUnsigned(void);
+
+  private:
+    int GetNumChannel(void) const;
+    int GetNumSample(void) const;
+    int GetNumSamplePerChannel(void) const;
+    size_t GetUnitSize(void) const;
+    size_t GetSamplePosition(int atIndex) const;
+    int GetSignedValue(int atTimeStep, int channel) const;
+    void SetSignedValue(unsigned char *savePtr, int rawSignedValue);
+};
+
+
+/* } */
+#endif
diff --git a/src/vicsample.c b/src/vicsample.c
new file mode 100644 (file)
index 0000000..2554d3b
--- /dev/null
@@ -0,0 +1,1134 @@
+/*
+ * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
+ *
+ * This program is licensed under the terms and conditions of the 
+ * Apache License, version 2.0.  The full text of the Apache License is at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+/**
+ * @brief   Vehicles Sample APP
+ *          Vehicles information is displayed.
+ *
+ * @date    Mar-04-2013
+ */
+
+#ifdef HAVE_CONFIG_H
+
+#include "config.h"
+#define __UNUSED__
+#else
+#define __UNUSED__
+#endif
+
+//#include <VehicleInfo.h>
+#include <Ecore.h>
+#include <Ecore_Evas.h>
+
+#include <dbus/dbus.h>          /* dbus */
+#include <string.h>             /* test log output */
+#include <stdbool.h>            // bool type define //TEST
+//#include "app_log.h"
+#include "ico_apf.h"
+#include "ico_apf_ecore.h"
+#include "ico_apf_log.h"
+//#include    "ico_uxf_conf_common.h"
+/* macro for debug */
+//#define DEBUG_PRINT(...)    ICO_UXF_DEBUG(__VA_ARGS__)
+//#define ERROR_PRINT(...)    ICO_UXF_WARN(__VA_ARGS__)
+
+#if 0
+// log output define
+#include <unistd.h>
+
+#define DEBUG_PRINT(...)    LOG_PRINT(__VA_ARGS__)
+#define LOG_PRINT(fmt,...)  \
+    {log_print("%s> "fmt" (%s,%s:%d)\n", log_curtime("DBG"), ##__VA_ARGS__,\
+               __func__, __FILE__, __LINE__); }
+
+static FILE *sDbgFd = (FILE *) 0;
+void log_print(const char *fmt, ...)
+{
+    va_list list;
+
+    va_start(list, fmt);
+    vfprintf(sDbgFd, fmt, list);
+    va_end(list);
+    fflush(sDbgFd);
+}
+
+/* local time difference(sec) */
+static int sTimeZone = (99 * 60 * 60);
+
+char *log_curtime(const char *level)
+{
+
+    struct timeval NowTime;
+    extern long timezone;
+    static char sBuf[28];
+
+    gettimeofday(&NowTime, (struct timezone *) 0);
+    if (sTimeZone > (24 * 60 * 60)) {
+        tzset();
+        sTimeZone = timezone;
+    }
+    NowTime.tv_sec -= sTimeZone;
+
+    sprintf(sBuf, "%02d:%02d:%02d.%03d[%s]@%d",
+            (int) ((NowTime.tv_sec / 3600) % 24),
+            (int) ((NowTime.tv_sec / 60) % 60),
+            (int) (NowTime.tv_sec % 60),
+            (int) NowTime.tv_usec / 1000, level, getpid());
+
+    return (sBuf);
+}
+#endif
+
+/*============================================================================*/
+/* Define fixed parameters                                                    */
+/*============================================================================*/
+#define WIDTH  (700)            /* Background width  */
+#define HEIGHT (934)            /* Background height */
+
+/* Count vehicle information */
+static int property_num = 0;
+
+/* max size of vehicle information */
+#define MAX_PARA_NUM 32
+
+/* vehicle information ID */
+#define VEHICLESPEED  0
+#define ACCELERATIONX 1
+#define SHIFTPOSITION 2
+#define ENGINESPEED   3
+#define LATITUDE      4
+#define ALTITUDE      5
+#define GEARPOSITION  6
+#define LONGITUDE     7
+#define MODE          8
+
+#define DIRECTION     9
+#define BRAKEPRESSURE 10
+#define LEFTTURN      11
+#define RIGHTTURN     12
+#define BRAKESIGNAL   13
+
+/* Definition for use with D-Bus */
+#define DBUS_SERVICE   "org.automotive.message.broker"
+#define DBUS_INTERFACE "org.freedesktop.DBus.Properties"
+#define DBUS_METHOD    "Get"
+
+/* Definition for files */
+//#define CONFIG_FILE    "/home/rpf/src/app/vic_inf_dspTP/vicsample_config.txt"
+//#define TMP_LOG        "/home/rpf/var/log/uifw/tmp_vic_inf_dspTP.log"
+//#define LOG_NAME       "/home/rpf/var/log/uifw/vic_inf_dspTP.log"
+#define CONFIG_FILE    "/opt/apps/org.tizen.ico.app-vicsample/res/vicsample_config.txt"
+#define TMP_LOG        "/tmp/tmp_ico-app-vicsample.log"
+#define LOG_NAME       "/tmp/ico-app-vicsample.log"
+
+
+/* coordinates of  vehicle information table frame */
+#define VTX_SX         50.0F    /* X position of the upper left corner */
+#define VTX_SY         30.0F    /* Y position of the upper left corner */
+#define VTX_EX         650.0F   /* X position of the lower right */
+#define VTX_EY         830.0F   /* Y position of the lower right */
+#define FIX_LINE_NUM   6        /* The number of lines of the table */
+                                /* Percentage of the column 13 = 1+4+4+4 */
+                                /* No.[1]:Name(JP)[4]:Name(EN)[4]:Value[4] */
+#define FIX_SEQ_BASE   (VTX_EX - VTX_SX) / 13
+                                /* X position of the 1st frame vertical line */
+#define FIX_SEQ_LINE1  VTX_SX + FIX_SEQ_BASE
+                                /* X position of the 2nd frame vertical line */
+#define FIX_SEQ_LINE2  FIX_SEQ_LINE1 + (FIX_SEQ_BASE * 4)
+                                /* X position of the 3rd frame vertical line */
+#define FIX_SEQ_LINE3  FIX_SEQ_LINE2 + (FIX_SEQ_BASE * 4)
+
+/* Horizontal line interval size */
+#define UFIX_LINE_BASE (VTX_EY - VTX_SY)/MAX_PARA_NUM
+
+/*============================================================================*/
+/* Define data types                                                          */
+/*============================================================================*/
+union VicVal_t
+{
+    dbus_int32_t i32_val;
+    dbus_int32_t i16_val;
+    dbus_uint32_t u32_val;
+    dbus_uint16_t u16_val;
+    uint8_t byte_val;
+    dbus_bool_t b_val;
+    double d_val;
+    char *s_val;
+};
+
+struct vic_data_t
+{
+    int property;
+    char name[32];
+    char path_name[64];
+    char interface_name[64];
+    char property_name[32];
+};
+
+struct vic_key_data_t
+{
+    int id;
+    char name[32];
+};
+
+/*============================================================================*/
+/* Function prototype for static(internal) functions                          */
+/*============================================================================*/
+static void _canvas_resize_cb(Ecore_Evas *ee);
+static void _on_destroy(Ecore_Evas *ee __UNUSED__);
+static Eina_Bool _timer_cb(void *data);
+static void cmdlog_output(int key);
+static void drawVehicleInfo(void);
+static void _on_mousedown(void *data, Evas *evas, Evas_Object *o,
+                          void *einfo);
+static int getVehicleInfo(int key, union VicVal_t *vic_val_p);
+static bool parse_elementary_value(union VicVal_t *vic_val_p,
+                                   DBusMessageIter *iter);
+// TEST
+static bool parse_value(union VicVal_t *vic_val_p, DBusMessageIter *iter);
+// TEST
+static bool parse_dict_entry(union VicVal_t *vic_val_p,
+                             DBusMessageIter *iter);
+// TEST
+static bool parse_array(union VicVal_t *vic_val_p, DBusMessageIter *iter);
+// TEST
+static bool parse_struct(union VicVal_t *vic_val_p, DBusMessageIter *iter);
+static int get_config(void);
+
+/*============================================================================*/
+/* Tables and Valiables                                                       */
+/*============================================================================*/
+const static char Bus_name[] = DBUS_SERVICE;
+static struct vic_data_t vic_data[MAX_PARA_NUM];
+
+const struct vic_key_data_t vic_key_data[] = {
+    {VEHICLESPEED, "VehicleSpeed"},
+    {ACCELERATIONX, "AccelerationX"},
+    {SHIFTPOSITION, "ShiftPosition"},
+    {ENGINESPEED, "EngineSpeed"},
+    {LATITUDE, "Latitude"},
+    {ALTITUDE, "Altitude"},
+    {GEARPOSITION, "GearPosition"},
+    {LONGITUDE, "Longitude"},
+    {MODE, "Mode"},
+    {DIRECTION, "Direction"},
+    {BRAKEPRESSURE, "BrakePressure"},
+    {LEFTTURN, "LeftTurn"},
+    {RIGHTTURN, "RightTurn"},
+    {BRAKESIGNAL, "BrakeSignal"},
+    {-1, "END"}
+};
+
+/* Storage area of vehicle information */
+static union VicVal_t s_vic_val[MAX_PARA_NUM];
+/* Object for displaying vehicle information */
+static Evas_Object *vic_val_text[MAX_PARA_NUM];
+
+/* Table border line */
+const static Evas_Coord f_vtx[FIX_LINE_NUM][4] = {
+    {VTX_SX, VTX_SY, VTX_SX, VTX_EY},   // Border of the Left frame
+    {VTX_EX, VTX_SY, VTX_EX, VTX_EY},   // Border of the Right frame
+    {VTX_SX, VTX_SY, VTX_EX, VTX_SY},   // Border of the upper frame
+    {VTX_SX, VTX_EY, VTX_EX, VTX_EY},   // Border of the lower frame
+
+    {FIX_SEQ_LINE1, VTX_SY, FIX_SEQ_LINE1, VTX_EY},     // Border of the column 1
+    {FIX_SEQ_LINE2, VTX_SY, FIX_SEQ_LINE2, VTX_EY},     // Border of the column 2
+//{FIX_SEQ_LINE3, VTX_SY, FIX_SEQ_LINE3, VTX_EY}  // Border of the column 3
+};
+
+//#define WIDTH  (300)
+//#define HEIGHT (300)
+
+static Ecore_Evas *ee;
+static Evas_Object *text, *bg;
+static char sscrntype[32];
+
+static const char commands[] =
+    "commands are:\n"
+    "\tm - impose a minumum size to the window\n"
+    "\tx - impose a maximum size to the window\n"
+    "\tb - impose a base size to the window\n"
+    "\ts - impose a step size (different than 1 px) to the window\n"
+    "\th - print help\n";
+
+/* to inform current window's size */
+static void _canvas_resize_cb(Ecore_Evas *ee)
+{
+    int w, h;
+    char buf[256];
+
+    ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
+    snprintf(buf, sizeof(buf), "%s %d x %d", sscrntype, w, h);
+    evas_object_text_text_set(text, buf);
+    evas_object_move(text, VTX_SX, VTX_SY - 22);
+    evas_object_resize(bg, w, h);
+}
+
+static void _on_destroy(Ecore_Evas *ee __UNUSED__)
+{
+    ecore_main_loop_quit();
+}
+
+/* drawing current time */
+static Eina_Bool _timer_cb(void *data)
+{
+    char str[32];
+    time_t timer;
+    struct tm *date;
+    timer = time(NULL);         /* get time in seconds */
+    date = localtime(&timer);   /* Converted to calendar time */
+    sprintf(str, "%s", asctime(date));
+    evas_object_text_text_set((Evas_Object *) data, str);
+
+//    drawVehicleInfo(); /* Get the vehicle information than AMB */ TEST
+
+    return EINA_TRUE;           /* Continuation of the timer */
+}
+
+/* log output for DBUS command result (Debug functin) */
+static void cmdlog_output(int key)
+{
+#if 0
+    char mes1[] =
+        "dbus-send --system --dest=org.automotive.message.broker --type=method_call --print-reply";
+    char mes2[] = "org.freedesktop.DBus.Properties.Get";
+    char mes3[] = "string:";
+    char str[1024];
+    sprintf(str, "%s %s %s %s\"%s\" %s\"%s\" > %s",
+            mes1, vic_data[key].path_name, mes2, mes3,
+            vic_data[key].interface_name, mes3, vic_data[key].property_name,
+            TMP_LOG);
+
+    DEBUG_PRINT("%s(D-bus  Command Result)", vic_data[key].name);
+    system(str);
+
+    /* logout */
+    log_output();
+#endif
+    return;
+}
+
+static void drawVehicleInfo()
+{
+    union VicVal_t vic_val[32];
+    int result = 0;
+    int i;
+    char vic_str[256];
+
+    for (i = 0; i < property_num; i++) {
+        result = getVehicleInfo(i, vic_val);
+
+        if (result != 0) {
+            uim_debug("Err getVehicleInfo : %s", vic_data[i].name);
+            continue;
+        }
+
+        switch (vic_data[i].property) {
+        case VEHICLESPEED:
+            uim_debug("%s(D-bus I/F Result) = %d", vic_data[i].name,
+                        vic_val[0].i32_val);
+            cmdlog_output(i);
+
+//            if (vic_val[0].i32_val != s_vic_val[i].i32_val) {
+//                uim_debug("%s update Front:%d Back:%d", vic_data[i].name,
+//                            s_vic_val[i].i32_val, vic_val[0].i32_val);
+            s_vic_val[i].i32_val = vic_val[0].i32_val;
+
+            /* Drawing update */
+            sprintf(vic_str, "%d", vic_val[0].i32_val);
+            evas_object_text_text_set(vic_val_text[i], vic_str);
+
+//            }
+//            else {
+//                uim_debug("%s no update:%d", vic_data[i].name,
+//                            vic_val[0].i32_val);
+//            }
+
+            break;
+
+        case ACCELERATIONX:
+            uim_debug("%s(D-bus I/F Result) = %d", vic_data[i].name,
+                        vic_val[0].u16_val);
+            cmdlog_output(i);
+
+//            if (vic_val[0].u16_val != s_vic_val[i].u16_val) {
+//                uim_debug("%s update Front:%d Back:%d", vic_data[i].name,
+//                            s_vic_val[i].u16_val, vic_val[0].u16_val);
+            s_vic_val[i].u16_val = vic_val[0].u16_val;
+
+            /* Drawing update */
+            sprintf(vic_str, "%d", vic_val[0].i32_val);
+            sprintf(vic_str, "%d", vic_val[0].u16_val);
+            evas_object_text_text_set(vic_val_text[i], vic_str);
+//            }
+//            else {
+//                uim_debug("%s no update:%d", vic_data[i].name,
+//                            vic_val[0].u16_val);
+//            }
+
+            break;
+
+        case SHIFTPOSITION:
+            uim_debug("%s(D-bus I/F Result) = %d", vic_data[i].name,
+                        vic_val[0].byte_val);
+            cmdlog_output(i);
+
+//            if (vic_val[0].byte_val != s_vic_val[i].byte_val) {
+//                uim_debug("%s update Front:%d Back:%d", vic_data[i].name,
+//                            s_vic_val[i].byte_val, vic_val[0].byte_val);
+            s_vic_val[i].byte_val = vic_val[0].byte_val;
+
+            /* Drawing update */
+            sprintf(vic_str, "%d", vic_val[0].byte_val);
+            evas_object_text_text_set(vic_val_text[i], vic_str);
+//            }
+//            else {
+//                uim_debug("%s noupdate:%d", vic_data[i].name,
+//                            vic_val[0].byte_val);
+//            }
+
+            break;
+
+        case ENGINESPEED:
+        case DIRECTION:
+        case BRAKEPRESSURE:
+            uim_debug("%s(D-bus I/F Result) = %d", vic_data[i].name,
+                        vic_val[0].i32_val);
+            cmdlog_output(i);
+            s_vic_val[i].i32_val = vic_val[0].i32_val;
+            sprintf(vic_str, "%d", vic_val[0].i32_val);
+            evas_object_text_text_set(vic_val_text[i], vic_str);
+            break;
+
+        case LATITUDE:
+        case ALTITUDE:
+        case LONGITUDE:
+            uim_debug("%s(D-bus I/F Result) = %f", vic_data[i].name,
+                        vic_val[0].d_val);
+            cmdlog_output(i);
+            s_vic_val[i].d_val = vic_val[0].d_val;
+            sprintf(vic_str, "%f", vic_val[0].d_val);
+            evas_object_text_text_set(vic_val_text[i], vic_str);
+            break;
+
+        case GEARPOSITION:
+        case MODE:
+            uim_debug("%s(D-bus I/F Result) = %d", vic_data[i].name,
+                        vic_val[0].byte_val);
+            cmdlog_output(i);
+            s_vic_val[i].byte_val = vic_val[0].byte_val;
+            sprintf(vic_str, "%d", vic_val[0].byte_val);
+            evas_object_text_text_set(vic_val_text[i], vic_str);
+            break;
+
+        case LEFTTURN:
+        case RIGHTTURN:
+        case BRAKESIGNAL:
+            uim_debug("%s(D-bus I/F Result) = %d", vic_data[i].name,
+                        vic_val[0].b_val);
+            cmdlog_output(i);
+            s_vic_val[i].b_val = vic_val[0].b_val;
+            if (vic_val[0].b_val == TRUE) {
+                sprintf(vic_str, "%s", "true");
+            }
+            else {
+                sprintf(vic_str, "%s", "false");
+            }
+            evas_object_text_text_set(vic_val_text[i], vic_str);
+            break;
+
+        default:
+            uim_debug("Err no property : %s\n", vic_data[i].name);
+            break;
+        }
+    }
+    return;
+}
+
+static void _on_mousedown(void *data, Evas *evas, Evas_Object *o,
+                          void *einfo)
+{
+    drawVehicleInfo();
+    return;
+}
+
+/* Get the vehicle information than AMB */
+DBusConnection *g_connection = NULL;
+static int getVehicleInfo(int key, union VicVal_t *vic_val_p)
+{
+    /* local variable */
+    DBusMessage *message;
+    DBusError error;
+    int result = 0;
+    const char *v_string[] = {
+        vic_data[key].interface_name,
+        vic_data[key].property_name
+    };
+    const char *dest = Bus_name;
+    DBusMessage *reply;
+    int reply_timeout = 1000;   /* Millisecond */
+    DBusMessageIter iter;
+    DBusMessageIter iter_array;
+
+    /* initialize */
+    dbus_error_init(&error);
+
+    if (NULL == g_connection) {
+        /* obtain the right to use dbus */
+        g_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
+
+        if (g_connection == NULL) {
+            uim_debug("Err dbus_bus_get");
+
+                       /* Release err parameter */
+            dbus_error_free(&error);
+                       return -1;
+        }
+    }
+    /* Constructs a new message */
+    message = dbus_message_new_method_call(DBUS_SERVICE,
+                                           vic_data[key].path_name,
+                                           DBUS_INTERFACE, DBUS_METHOD);
+    if (message == NULL) {
+        uim_debug("Err dbus_message_new_method_call");
+
+        /* Release the connection */
+        dbus_connection_unref(g_connection);
+        g_connection = NULL;
+        return -1;
+    }
+
+    /* Gets the type of a message */
+    result = dbus_message_append_args(message,
+                                      DBUS_TYPE_STRING,
+                                      &v_string[0],
+                                      DBUS_TYPE_STRING,
+                                      &v_string[1], DBUS_TYPE_INVALID);
+    if (!result) {
+        uim_debug("Err dbus_message_append_args");
+
+        /* Release the connection */
+        dbus_connection_unref(g_connection);
+        g_connection = NULL;
+        /* Release the message */
+        dbus_message_unref(message);
+
+        return -1;
+    }
+
+    /* Gets the error name */
+    if ((dest) && (!dbus_message_set_destination(message, dest))) {
+        uim_debug("Err dbus_message_new_method_call");
+
+        /* Release the connection */
+        dbus_connection_unref(g_connection);
+        g_connection = NULL;
+
+        /* Release the message */
+        dbus_message_unref(message);
+
+        return -1;
+    }
+
+    /* Queues a message to send */
+    reply = dbus_connection_send_with_reply_and_block(g_connection,
+                                                      message,
+                                                      reply_timeout, &error);
+    if (reply == NULL) {
+        uim_debug("Err dbus_connection_send_with_reply_and_block");
+
+        /* Release the connection */
+        dbus_connection_unref(g_connection);
+        g_connection = NULL;
+
+        /* Release the message */
+        dbus_message_unref(message);
+
+               /* Release err parameter */
+        dbus_error_free(&error);
+
+        return -1;
+    }
+
+    /* Gets the result */
+    dbus_message_iter_init(reply, &iter);
+    dbus_message_iter_recurse(&iter, &iter_array);
+
+    /* Type conversion of the resulting value */
+//    result = parse_elementary_value(vic_val_p, &iter_array);
+    union VicVal_t *tmp_vic_val_p = vic_val_p;  //TEST
+    result = parse_value(tmp_vic_val_p, &iter_array);   //TEST
+
+    if (result != TRUE) {
+        uim_debug("Err parse_elementary_value");
+
+        /* Release the connection */
+        dbus_connection_unref(g_connection);
+        g_connection = NULL;
+
+        /* Release the message */
+        dbus_message_unref(message);
+        dbus_message_unref(reply);
+
+        return -1;
+    }
+
+    /* Release the message */
+    dbus_message_unref(message);
+    dbus_message_unref(reply);
+
+    return 0;
+}
+
+/* Parse of the value */
+static bool parse_elementary_value(union VicVal_t *vic_val_p,
+                                   DBusMessageIter *iter)
+{
+    dbus_int32_t i32_val;
+    dbus_int32_t i16_val;
+    dbus_uint32_t u32_val;
+    dbus_uint16_t u16_val;
+    uint8_t byte_val;
+    dbus_bool_t b_val;
+    double d_val;
+    char *s_val;
+    char *w_s_val;
+
+    char sig;
+
+    if ((vic_val_p == NULL) || (iter == NULL)) {
+        uim_debug("Err Parameter NG ");
+        return FALSE;
+    }
+
+    sig = dbus_message_iter_get_arg_type(iter);
+
+    switch (sig) {
+    case DBUS_TYPE_INT32:
+        dbus_message_iter_get_basic(iter, &i32_val);
+        vic_val_p->i32_val = i32_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_INT16:
+        dbus_message_iter_get_basic(iter, &i16_val);
+        vic_val_p->i16_val = i16_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_UINT32:
+        dbus_message_iter_get_basic(iter, &u32_val);
+        vic_val_p->u32_val = u32_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_UINT16:
+        dbus_message_iter_get_basic(iter, &u16_val);
+        vic_val_p->u16_val = u16_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_BOOLEAN:
+        dbus_message_iter_get_basic(iter, &b_val);
+        vic_val_p->b_val = b_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_BYTE:
+        dbus_message_iter_get_basic(iter, &byte_val);
+        vic_val_p->byte_val = byte_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_DOUBLE:
+        dbus_message_iter_get_basic(iter, &d_val);
+        vic_val_p->d_val = d_val;
+        vic_val_p++;
+        break;
+    case DBUS_TYPE_STRING:
+        dbus_message_iter_get_basic(iter, &s_val);
+        w_s_val = (char *) malloc(strlen(s_val) + 1);   // Release required
+        if (w_s_val == NULL) {
+            uim_debug("Err malloc");
+            return FALSE;
+        }
+        strncpy(w_s_val, s_val, strlen(s_val));
+        vic_val_p->s_val = w_s_val;
+        vic_val_p++;
+//        vic_val_p->s_val = s_val;
+        break;
+    default:
+        uim_debug("Err parse_elementary_value: unknown type");
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+static bool parse_value(union VicVal_t *vic_val_p, DBusMessageIter *iter)
+{
+    char curr;
+
+    if ((vic_val_p == NULL) || (iter == NULL)) {
+        uim_debug("Err Parameter NG ");
+        return FALSE;
+    }
+
+    curr = dbus_message_iter_get_arg_type(iter);
+
+    switch (curr) {
+    case DBUS_TYPE_BYTE:
+    case DBUS_TYPE_BOOLEAN:
+    case DBUS_TYPE_INT16:
+    case DBUS_TYPE_INT32:
+    case DBUS_TYPE_UINT16:
+    case DBUS_TYPE_UINT32:
+    case DBUS_TYPE_DOUBLE:
+    case DBUS_TYPE_STRING:
+        return parse_elementary_value(vic_val_p, iter);
+    case DBUS_TYPE_ARRAY:
+        return parse_array(vic_val_p, iter);
+    case DBUS_TYPE_STRUCT:
+        return parse_struct(vic_val_p, iter);
+    case DBUS_TYPE_DICT_ENTRY:
+//            goto error; /* these are handled from parse_array */
+        return FALSE;
+    case DBUS_TYPE_INVALID:
+        return TRUE;
+    default:
+        break;
+    }
+    return FALSE;
+}
+
+static bool parse_array(union VicVal_t *vic_val_p, DBusMessageIter *iter)
+{
+    DBusMessageIter new_iter;
+    int element_type;
+
+    if ((vic_val_p == NULL) || (iter == NULL)) {
+        uim_debug("Err Parameter NG ");
+        return FALSE;
+    }
+
+    /* the lua array */
+//    lua_newtable(L);
+
+    element_type = dbus_message_iter_get_element_type(iter);
+
+    dbus_message_iter_recurse(iter, &new_iter);
+
+    /* the problem: if the value inside array is a dict entry, the
+     * indexing of elements need to be done with dict keys instead
+     * of numbers. */
+
+    if (element_type == DBUS_TYPE_DICT_ENTRY) {
+        while (dbus_message_iter_get_arg_type(&new_iter) != DBUS_TYPE_INVALID) {
+
+            parse_dict_entry(vic_val_p, &new_iter);
+            dbus_message_iter_next(&new_iter);
+        }
+    }
+
+    else {
+        while (dbus_message_iter_get_arg_type(&new_iter) != DBUS_TYPE_INVALID) {
+
+            /* array index */
+//            lua_pushinteger(L, i++);
+
+            parse_value(vic_val_p, &new_iter);
+            dbus_message_iter_next(&new_iter);
+
+            /* put the values to the table */
+//            lua_settable(L, -3);
+        }
+    }
+
+    return TRUE;
+}
+
+static bool parse_dict_entry(union VicVal_t *vic_val_p,
+                             DBusMessageIter *iter)
+{
+    DBusMessageIter new_iter;
+
+    if ((vic_val_p == NULL) || (iter == NULL)) {
+        uim_debug("Err Parameter NG ");
+        return FALSE;
+    }
+
+    dbus_message_iter_recurse(iter, &new_iter);
+
+    while (dbus_message_iter_get_arg_type(&new_iter) != DBUS_TYPE_INVALID) {
+
+        /* key must be elementary, value can be anything */
+
+        parse_elementary_value(vic_val_p, &new_iter);
+        dbus_message_iter_next(&new_iter);
+
+        parse_value(vic_val_p, &new_iter);
+        dbus_message_iter_next(&new_iter);
+
+        /* put the values to the table */
+//        lua_settable(L, -3);
+    }
+
+    return TRUE;
+}
+
+static bool parse_struct(union VicVal_t *vic_val_p, DBusMessageIter *iter)
+{
+    DBusMessageIter new_iter;
+
+    if ((vic_val_p == NULL) || (iter == NULL)) {
+        uim_debug("Err Parameter NG ");
+        return FALSE;
+    }
+
+    /* initialize the table */
+//    lua_newtable(L);
+
+    dbus_message_iter_recurse(iter, &new_iter);
+
+    while (dbus_message_iter_get_arg_type(&new_iter) != DBUS_TYPE_INVALID) {
+
+        /* struct "index" */
+//        lua_pushinteger(L, i++);
+
+        parse_value(vic_val_p, &new_iter);
+        dbus_message_iter_next(&new_iter);
+
+        /* put the values to the table */
+//        lua_settable(L, -3);
+    }
+
+    return TRUE;
+}
+
+/* Read configuration file */
+static int get_config(void)
+{
+
+    FILE *fp;
+    int k = 0;
+    int j, m;
+    char buff[512];
+    char *tp;
+    char *clm = " \n";
+
+    fp = fopen(CONFIG_FILE, "r");
+    if (fp == NULL) {
+        uim_debug("File open error");
+        return -1;
+    }
+
+    for (m = 0; k < MAX_PARA_NUM; m++) {
+        if (fgets(buff, sizeof(buff) - 2, fp) != NULL) {
+            tp = strtok(buff, clm);
+            if (tp != NULL) {
+                if (tp[0] != '#') {
+                    for (j = 0; vic_key_data[j].id != -1; j++) {
+                        if (strcmp(tp, vic_key_data[j].name) == 0) {
+                            vic_data[k].property = vic_key_data[j].id;
+                            strcpy(vic_data[k].name, tp);
+                            strcpy(vic_data[k].path_name, strtok(NULL, clm));
+                            strcpy(vic_data[k].interface_name,
+                                   strtok(NULL, clm));
+                            strcpy(vic_data[k].property_name,
+                                   strtok(NULL, clm));
+                           uim_debug("vic_data[%d].property=%d", k,
+                                   vic_data[k].property);
+                           uim_debug("vic_data[%d].name=%s", k,
+                                   vic_data[k].name);
+                           uim_debug("vic_data[%d].path_name=%s", k,
+                                   vic_data[k].path_name);
+                           uim_debug("vic_data[%d].interface_name=%s", k,
+                                   vic_data[k].interface_name);
+                           uim_debug("vic_data[%d].property_name=%s", k,
+                                   vic_data[k].property_name);
+
+                            k++;
+                            break;
+                        }
+                    }
+                    if (vic_key_data[j].id == -1) {
+                        uim_debug("Err vicsample_config.txt Line:%d Unregistered"
+                                    " parameter name", m + 1);
+                    }
+
+                }
+                else {
+                    uim_debug
+                        ("vicsample_config.txt Line:%d Comment out  '#'Discovery",
+                         m + 1);
+                }
+            }
+            else {
+                uim_debug("vicsample_config.txt Line:%d Comment out  Null line",
+                            m + 1);
+            }
+        }
+        else {
+            uim_debug("vicsample_config.txt The end of data reading");
+            break;
+        }
+    }
+    fclose(fp);
+
+    property_num = k;
+    if (property_num == 0) {
+        uim_debug("vicsample_config.txt No valid data");
+        return -1;
+    }
+    return 0;
+}
+
+static void res_callback(ico_apf_resource_notify_info_t *info,
+                         void *user_data)
+{
+    int ret;
+
+    uim_debug("##==> Callbacked evt=%d res=%d id=%d bid=%d appid=%s dev=%s"
+                " user_data=%d", info->state, info->resid, info->id,
+                info->bid, info->appid, info->device, (int) user_data);
+    switch (info->state) {
+    case ICO_APF_RESOURCE_STATE_ACQUIRED:
+    case ICO_APF_RESOURCE_STATE_DEPRIVED:
+    case ICO_APF_RESOURCE_STATE_WAITTING:
+    case ICO_APF_RESOURCE_STATE_RELEASED:
+        if (info->resid == ICO_APF_RESID_INT_SCREEN) {
+            ret = ico_apf_resource_reply_int_screen_mode(info->device,
+                                                         info->bid, info->id,
+                                                         1);
+            uim_debug("##==> callback reply int_screen(%s,%d,%d,1) = %d",
+                        info->device, info->bid, info->id, ret);
+        }
+        else if (info->resid == ICO_APF_RESID_ON_SCREEN) {
+            ret = ico_apf_resource_reply_int_screen_mode_disp(info->device,
+                                                              info->id, 1);
+            uim_debug("##==> callback reply on_screen(%s,%d,1) = %d",
+                        info->device, info->id, ret);
+        }
+        else {
+            ret =
+                ico_apf_resource_reply_screen_mode(info->device, info->id, 1);
+            uim_debug("##==> callback reply screen(%s,%d,1) = %d",
+                        info->device, info->id, ret);
+        }
+        break;
+    default:
+        /* NOP  */
+        break;
+    }
+}
+
+int main(int argc, char *argv[])
+{
+    int i;
+    int getscreen;
+    Evas *evas;
+    char appid[ICO_UXF_MAX_PROCESS_NAME + 1];
+
+    getscreen = 0;
+    sscrntype[0] = 0;
+    for (i = 1; i < argc; i++) {
+        if (argv[i][0] == '-') {
+            if (strcasecmp(argv[i], "-basescreen") == 0) {
+                getscreen = 1;  /* get base screen */
+                strcpy(sscrntype, "BasicScreen");
+            }
+            else if (strcasecmp(argv[i], "-intscreen") == 0) {
+                getscreen = 2;  /* get interrupt screen */
+                strcpy(sscrntype, "IntScreen");
+            }
+            else if (strcasecmp(argv[i], "-onscreen") == 0) {
+                getscreen = 3;  /* get on screen */
+                strcpy(sscrntype, "OnScreen");
+            }
+        }
+    }
+
+    if (!ecore_evas_init()) {
+        return EXIT_FAILURE;
+    }
+    /* Setting the log output */
+    if (ico_apf_get_app_id(0, appid) == ICO_APP_CTL_E_NONE) {
+        ico_apf_log_open(appid);
+    }
+
+    uim_debug("main ENTER");
+
+    /* Read configuration file */
+    if (get_config() != 0) {
+        uim_debug("Err get_config");
+        return -1;
+    }
+
+    if (getscreen > 0) {
+        /* initialize resource control for Ecore */
+        if (ico_apf_ecore_init(NULL) != ICO_APF_E_NONE) {
+            uim_debug("ico_apf_ecore_init() Error");
+            ecore_evas_shutdown();
+            return -1;
+        }
+
+        /* set resource request callback */
+        ico_apf_resource_set_event_cb(res_callback, NULL);
+
+        /* acquire a right to display a screen */
+        if (getscreen == 1) {
+            ico_apf_resource_get_screen_mode(NULL, 0);
+        }
+        else if (getscreen == 2) {
+            ico_apf_resource_get_int_screen_mode(NULL, 0, 0);
+        }
+        else {
+            ico_apf_resource_get_int_screen_mode_disp(NULL, 0);
+        }
+    }
+
+    /* this will give you a window with an Evas canvas under the first
+     * engine available */
+    ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, "frame=0");
+    if (!ee) {
+        goto error;
+    }
+
+    ecore_evas_callback_delete_request_set(ee, _on_destroy);
+    ecore_evas_title_set(ee, "Ecore_Evas window sizes example");
+    ecore_evas_callback_resize_set(ee, _canvas_resize_cb);
+    ecore_evas_show(ee);
+
+    evas = ecore_evas_get(ee);
+
+    /* Background printing */
+    bg = evas_object_rectangle_add(evas);
+    evas_object_color_set(bg, 255, 255, 255, 255);      /* white bg */
+    evas_object_move(bg, 0, 0); /* at canvas' origin */
+    evas_object_resize(bg, WIDTH, HEIGHT);      /* covers full canvas */
+    evas_object_show(bg);
+
+    evas_object_focus_set(bg, EINA_TRUE);
+
+    /* Drawing window */
+    text = evas_object_text_add(evas);
+    evas_object_color_set(text, 255, 0, 0, 255);
+    evas_object_resize(text, 150, 50);
+    evas_object_text_font_set(text, "Sans", 20);
+    evas_object_show(text);
+
+    /* Button on the output drawing vehicle information */
+    static Evas_Object *sikaku;
+    sikaku = evas_object_rectangle_add(evas);
+    evas_object_color_set(sikaku, 255, 0, 0, 100);
+    evas_object_move(sikaku, 50, ((int) VTX_EY) + 7);
+    int hsz = HEIGHT - (int) VTX_EY - 7 - 7;
+    evas_object_resize(sikaku, 200, hsz);
+    evas_object_show(sikaku);
+
+    /* draw table */
+    static Evas_Object *fix_line[FIX_LINE_NUM];
+
+    for (i = 0; i < FIX_LINE_NUM; i++) {
+        fix_line[i] = evas_object_line_add(evas);
+        evas_object_color_set(fix_line[i], 55, 55, 55, 255);
+        evas_object_line_xy_set(fix_line[i], f_vtx[i][0], f_vtx[i][1],
+                                f_vtx[i][2], f_vtx[i][3]);
+        evas_object_show(fix_line[i]);
+    }
+
+    /* draw order line */
+    static Evas_Object *ufix_line[MAX_PARA_NUM - 1];
+
+    for (i = 0; i < MAX_PARA_NUM - 1; i++) {
+        ufix_line[i] = evas_object_line_add(evas);
+        evas_object_color_set(ufix_line[i], 55, 55, 55, 255);
+        evas_object_line_xy_set(ufix_line[i],
+                                VTX_SX, VTX_SY + UFIX_LINE_BASE * (i + 1),
+                                VTX_EX, VTX_SY + UFIX_LINE_BASE * (i + 1));
+        evas_object_show(ufix_line[i]);
+    }
+
+    /* draw table item */
+    static Evas_Object *num_text[MAX_PARA_NUM];
+    char str[11];
+    static Evas_Object *pname_text2[MAX_PARA_NUM];
+
+    for (i = 0; i < MAX_PARA_NUM; i++) {
+        /* draw table item (No.) */
+        num_text[i] = evas_object_text_add(evas);
+        evas_object_color_set(num_text[i], 0, 0, 0, 255);
+        evas_object_resize(num_text[i], FIX_SEQ_BASE, UFIX_LINE_BASE);
+        evas_object_text_font_set(num_text[i], "Sans",
+                                  (UFIX_LINE_BASE / 3) * 2);
+        evas_object_show(num_text[i]);
+        sprintf(str, "%d", i + 1);
+        evas_object_text_text_set(num_text[i], str);
+        evas_object_move(num_text[i], VTX_SX + FIX_SEQ_BASE / 4,
+                         VTX_SY + UFIX_LINE_BASE * (i) + UFIX_LINE_BASE / 6);
+
+        /* draw table item (Name of vehicle information) */
+        pname_text2[i] = evas_object_text_add(evas);
+        evas_object_color_set(pname_text2[i], 0, 0, 0, 255);
+        evas_object_resize(pname_text2[i], 150, 50);
+        evas_object_text_font_set(pname_text2[i], "Sans",
+                                  (UFIX_LINE_BASE / 3) * 2);
+        evas_object_show(pname_text2[i]);
+        evas_object_text_text_set(pname_text2[i], vic_data[i].name);
+        evas_object_move(pname_text2[i], FIX_SEQ_LINE1 + FIX_SEQ_BASE / 4,
+                         VTX_SY + UFIX_LINE_BASE * (i) + UFIX_LINE_BASE / 6);
+
+        /* draw table item (Value of vehicle information) */
+        vic_val_text[i] = evas_object_text_add(evas);
+        evas_object_color_set(vic_val_text[i], 0, 0, 0, 255);
+        evas_object_resize(vic_val_text[i], FIX_SEQ_BASE, UFIX_LINE_BASE);
+        evas_object_text_font_set(vic_val_text[i], "Sans",
+                                  (UFIX_LINE_BASE / 3) * 2);
+        evas_object_show(vic_val_text[i]);
+        evas_object_move(vic_val_text[i], FIX_SEQ_LINE2 + FIX_SEQ_BASE / 4,
+                         VTX_SY + UFIX_LINE_BASE * (i) + UFIX_LINE_BASE / 6);
+    }
+
+    /* entry of the function event callback Vehicle Information */
+    evas_object_event_callback_add(sikaku, EVAS_CALLBACK_MOUSE_DOWN,
+                                   _on_mousedown, vic_val_text);
+
+    /* drawing current time */
+    static Evas_Object *time_text;
+
+    time_text = evas_object_text_add(evas);
+    evas_object_color_set(time_text, 0, 0, 0, 255);
+    evas_object_resize(time_text, 150, 50);
+    evas_object_text_font_set(time_text, "Sans", 20);
+    evas_object_show(time_text);
+    evas_object_move(time_text, 400, VTX_SY - 22);
+
+    /* entry of the function event Interval Timer */
+    ecore_timer_add(0.1, _timer_cb, time_text);
+
+    _canvas_resize_cb(ee);
+    fprintf(stdout, commands);
+    ecore_main_loop_begin();
+
+    ico_apf_ecore_term();
+
+    ecore_evas_free(ee);
+    ecore_evas_shutdown();
+
+    if (NULL != g_connection) {
+        dbus_connection_unref(g_connection);
+        g_connection = NULL;
+    }
+    uim_debug("main EXIT");
+    return 0;
+
+  error:
+    fprintf(stderr, "You got to have at least one Evas engine built"
+            " and linked up to ecore-evas for this example to run"
+            " properly.\n");
+    ecore_evas_shutdown();
+    if (NULL != g_connection) {
+        dbus_connection_unref(g_connection);
+        g_connection = NULL;
+    }
+    return -1;
+}
diff --git a/vicsample_config.txt b/vicsample_config.txt
new file mode 100644 (file)
index 0000000..312e615
--- /dev/null
@@ -0,0 +1,15 @@
+# The number of the vehicles information maximum displays 32 
+#Name           Path Name                                   Interface Name               Property Name
+#----------------------------------------------------------------------------------------------------------
+ VehicleSpeed   /org/automotive/runningstatus/vehicleSpeed  org.automotive.vehicleSpeed  VehicleSpeed
+ AccelerationX  /org/automotive/runningstatus/acceleration  org.automotive.acceleration  X
+ ShiftPosition  /org/automotive/runningstatus/transmission  org.automotive.transmission  ShiftPosition
+ EngineSpeed    /org/automotive/runningstatus/engineSpeed   org.automotive.engineSpeed   EngineSpeed
+ Latitude       /org/automotive/custom/Latitude             org.automotive.Latitude      Latitude 
+ Longitude      /org/automotive/custom/Longitude            org.automotive.Longitude     Longitude 
+ Direction      /org/automotive/custom/Direction            org.automotive.Direction     Direction
+ BrakePressure  /org/automotive/custom/BrakePressure        org.automotive.BrakePressure BrakePressure
+ LeftTurn       /org/automotive/runningstatus/lightStatus   org.automotive.lightStatus   LeftTurn
+ RightTurn      /org/automotive/runningstatus/lightStatus   org.automotive.lightStatus   RightTurn
+ GearPosition   /org/automotive/runningstatus/transmission  org.automotive.transmission  GearPosition 
+ BrakeSignal    /org/automotive/runningstatus/wheelBrake    org.automotive.wheelBrake    Engaged
diff --git a/wgt/DemoAudioApp.wgt b/wgt/DemoAudioApp.wgt
new file mode 100644 (file)
index 0000000..640b452
Binary files /dev/null and b/wgt/DemoAudioApp.wgt differ
diff --git a/wgt/DemoMeterApp.wgt b/wgt/DemoMeterApp.wgt
new file mode 100644 (file)
index 0000000..b8cee37
Binary files /dev/null and b/wgt/DemoMeterApp.wgt differ