diff options
110 files changed, 1409 insertions, 7222 deletions
diff --git a/Makefile.am b/Makefile.am index 9988144..11cea54 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,2 +1,4 @@ -SUBDIRS = ico-app-samplenavi/src ico-app-vicsample/src ico-app-soundsample/src +SUBDIRS = ico-app-vicsample/src \ + ico-app-soundsample/src + diff --git a/configure.ac b/configure.ac index d7098ae..1f2fede 100644 --- a/configure.ac +++ b/configure.ac @@ -3,16 +3,49 @@ AC_PREREQ([2.68]) 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]) +AM_INIT_AUTOMAKE([1.11.1 -Wall -Werror foreign no-dist-gzip dist-xz silent-rules]) AC_CONFIG_SRCDIR([ico-app-vicsample/src/vicsample.c]) AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CXX AC_PROG_CC +AM_PROG_CC_C_O AC_PROG_INSTALL # Checks for libraries. +PKG_PROG_PKG_CONFIG() + +PKG_CHECK_MODULES([EINA], [eina]) +PKG_CHECK_MODULES([EVAS], [evas]) +PKG_CHECK_MODULES([ECORE], [ecore]) +PKG_CHECK_MODULES([EDJE], [edje]) +PKG_CHECK_MODULES([ELEM], [elementary]) +PKG_CHECK_MODULES([ECOREWAYLAND], [ecore-wayland]) +EFL_CFLAGS="$EINA_CFLAGS $EVAS_CFLAGS $ECORE_CFLAGS $EDJE_CFLAGS $ELEM_CFLAGS $ECOREWAYLAND_CFLAGS" +EFL_LIBS="$EINA_LIBS $EVAS_LIBS $ECORE_LIBS $EDJE_LIBS $ELEM_LIBS $ECOREWAYLAND_LIBS" +AC_SUBST(EFL_CFLAGS) +AC_SUBST(EFL_LIBS) + +PKG_CHECK_MODULES([AUL], [aul]) +PKG_CHECK_MODULES([BUNDLE], [bundle]) +AUL_CFLAGS="$AUL_CFLAGS $BUNDLE_CFLAGS" +AUL_LIBS="$AUL_LIBS $BUNDLE_CFLAGS" +AC_SUBST(AUL_CFLAGS) +AC_SUBST(AUL_LIBS) + + +if test "x$GCC" = "xyes"; then + my_common_gcc_flags="-Wall -Wextra -Wno-unused-parameter \ +-Wno-missing-field-initializers -g -fvisibility=hidden" + GCC_CFLAGS="$my_common_gcc_flags \ +-Wstrict-prototypes -Wmissing-prototypes" + GCC_CXXFLAGS="-Wall -Wextra -Wno-unused-parameter \ +-Wno-missing-field-initializers -g" +fi + +AC_SUBST(GCC_CFLAGS) +AC_SUBST(GCC_CXXFLAGS) # Checks for header files. AC_CHECK_HEADERS([stddef.h stdlib.h string.h unistd.h]) @@ -28,8 +61,6 @@ AC_FUNC_FORK AC_FUNC_MALLOC AC_CHECK_FUNCS([gettimeofday memset sqrt strcasecmp strncasecmp strtol tzset]) AC_CONFIG_FILES([Makefile - ico-app-samplenavi/src/Makefile ico-app-soundsample/src/Makefile ico-app-vicsample/src/Makefile]) - AC_OUTPUT diff --git a/ico-app-samplenavi/data/make.sh b/ico-app-samplenavi/data/make.sh deleted file mode 100644 index b37b7c5..0000000 --- a/ico-app-samplenavi/data/make.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/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/ico-app-samplenavi/data/samplenavi_conf.edc b/ico-app-samplenavi/data/samplenavi_conf.edc deleted file mode 100644 index 232ffe1..0000000 --- a/ico-app-samplenavi/data/samplenavi_conf.edc +++ /dev/null @@ -1,216 +0,0 @@ -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/ico-app-samplenavi/data/samplenavi_conf_dist.edc b/ico-app-samplenavi/data/samplenavi_conf_dist.edc deleted file mode 100644 index 472ad83..0000000 --- a/ico-app-samplenavi/data/samplenavi_conf_dist.edc +++ /dev/null @@ -1,331 +0,0 @@ -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/ico-app-samplenavi/org.tizen.ico.app-samplenavi.desktop b/ico-app-samplenavi/org.tizen.ico.app-samplenavi.desktop deleted file mode 100644 index 408a784..0000000 --- a/ico-app-samplenavi/org.tizen.ico.app-samplenavi.desktop +++ /dev/null @@ -1,9 +0,0 @@ -Name=ico-app-samplenavi -Type=Application -Exec=/opt/apps/org.tizen.ico.app-samplenavi/bin/ico-app-samplenavi rightoption -basescreen -Icon=org.tizen.ico.app-samplenavi.png -NoDisplay=false -Version=0.1.0 -Categories=Map;dispzone=Full; -#Categories=Map;dispzone=UpperLeft; -Comment=sample navigation app diff --git a/ico-app-samplenavi/res/Map/css/images/ajax-loader.png b/ico-app-samplenavi/res/Map/css/images/ajax-loader.png Binary files differdeleted file mode 100644 index 4beacbf..0000000 --- a/ico-app-samplenavi/res/Map/css/images/ajax-loader.png +++ /dev/null diff --git a/ico-app-samplenavi/res/Map/css/jquery.mobile-1.0.min.css b/ico-app-samplenavi/res/Map/css/jquery.mobile-1.0.min.css deleted file mode 100644 index ab4e0b8..0000000 --- a/ico-app-samplenavi/res/Map/css/jquery.mobile-1.0.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! 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/ico-app-samplenavi/res/Map/css/navi.css b/ico-app-samplenavi/res/Map/css/navi.css deleted file mode 100644 index 088b441..0000000 --- a/ico-app-samplenavi/res/Map/css/navi.css +++ /dev/null @@ -1,29 +0,0 @@ -/*
- * 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
- *
- */
-
-html,body{
- height: 100% ;
-}
-
-.base {
- width: 100%;
- height: 50%;
-}
-
-.map_area {
- float: center;
- width: 100%;
- height: 480px;
-}
-
-#map_canvas {
- float: center;
- width: 100%;
- height: 1270px;
-}
diff --git a/ico-app-samplenavi/res/Map/js/nativeapp_accessor.js b/ico-app-samplenavi/res/Map/js/nativeapp_accessor.js deleted file mode 100644 index b5dbb59..0000000 --- a/ico-app-samplenavi/res/Map/js/nativeapp_accessor.js +++ /dev/null @@ -1,186 +0,0 @@ -/*
- * 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 Application(sample navi) Accessor Class
- *
- */
-var CarInfo = function(lat_val, lon_val) {
- this.lat_val = lat_val;
- this.lon_val = lon_val;
-}
-
-var NativeAppAccessor = function() {
- var _socket; // WebSocket
-
- /**
- * Connection WebSocket
- *
- */
- this.connectWebSocket = function() {
- if ( navigator.userAgent.indexOf('Firefox') != -1 ) {
- _socket = new MozWebSocket('ws://' + IP_ADDR + ':' + WEBSOCKET_PORT + '/');
- }
- else {
- _socket = new WebSocket('ws://' + IP_ADDR + ':' + WEBSOCKET_PORT + '/', 'http-only');
- }
-
- // socket event
- _socket.onopen = function() {
- _socket.send('OPEN ' + EDJE_PATH + EDJE_CONF_NAME);
- };
-
- _socket.onmessage = function(e) { recvMessage(e); };
- _socket.onerror = function(e) { };
- _socket.onclose = function() { };
- }
-
- /**
- * Disconnection WebSocket
- *
- */
- this.disconnectWebSocket = function() {
- if ( _socket ) {
- _socket.send('Close_Socket');
- _socket.close();
- }
- }
-
- /**
- * Request Navigation Start
- */
- this.sendReqNaviStart = function() {
- if (_socket) {
- $('#address').text('Send Req Navi Start.');
- _socket.send('CHG SEQ REQ_NAV');
- }
- }
-
- /**
- * Request Navigation End
- */
- this.sendReqNaviEnd = function() {
- if (_socket) {
- $('#address').text('Send Req Navi End.');
- _socket.send('CHG SEQ END_NAV');
- }
- }
-
- /**
- * Send Route
- */
- this.sendRoute = function( routeStr ) {
- if( _socket ) {
- _socket.send( routeStr );
- }
- }
-
- /**
- * Receive Message
- *
- * @param event Receive Event
- *
- */
- function recvMessage(event) {
- var message = event.data;
- var info;
-
- var messageType = getMessageType(message);
- if ( messageType == MSG_TYPE.CHG ) {
- // type is carinfo change message
- info = getCarInfo(message);
- if ( info ) {
- $(document).trigger('recvCarInfo', info);
- }
- }
- else
- {
- $(document).trigger('recvSeqNxt', message);
- }
- }
-
- /**
- * get message type
- *
- * @param message Receive message
- *
- * @return message kind (MSG_TYPE)
- *
- */
- function getMessageType(message) {
- var cmd = message.slice(0, 7);
- var type;
-
- if ( cmd == 'CHG VAL') {
- type = MSG_TYPE.CHG;
- } else if (cmd == 'CHG SEQ') {
- type = MSG_TYPE.SEQ;
- } else {
- type = MSG_TYPE.ERR;
- }
-
- return type;
- }
-
- /**
- * Get CarInfo
- *
- * @param message Receive message
- *
- * @return CarInfo data
- *
- */
- function getCarInfo(message) {
- var tmp = message.slice(17);
- var tmp_info;
- var info;
- var lat_index;
- var lon_index;
-
- lat_index = tmp.indexOf(KEY_LAT);
- lon_index = tmp.indexOf(KEY_LON);
-
- if ((lat_index != -1) && (lon_index != -1) ){
- info = new CarInfo();
-
- // Latitude
- tmp_info = tmp.slice(lat_index + KEY_LAT.length + 1, lon_index);
- info.lat_val = parseFloat(tmp_info);
-
- // Longitude
- tmp_info = tmp.slice(lon_index + KEY_LON.length + 1);
- info.lon_val = parseFloat(tmp_info);
- }
-
- return info;
- }
-
- /**
- * Request DIST ONSCREEN
- */
- this.sendReqDistOnScreen = function() {
- if (_socket) {
- $('#address').text("SEND REQ DIST OnScreen.");
- try {
- _socket.send('OPEN ' + EDJE_PATH + EDJE_DIST_NAME);
- } catch (e) {
- $('#address').text("SEND REQ DIST OnScreen Error. :" + e);
- }
- }
- }
- /**
- * Request CLOSE ONSCREEN
- */
- this.sendReqCloseOnScreen = function() {
- if (_socket) {
- $('#address').text("SEND REQ Close OnScreen.");
- _socket.send('CLOSE');
- }
- }
-}
diff --git a/ico-app-samplenavi/res/Map/js/navi.js b/ico-app-samplenavi/res/Map/js/navi.js deleted file mode 100644 index dbe9445..0000000 --- a/ico-app-samplenavi/res/Map/js/navi.js +++ /dev/null @@ -1,272 +0,0 @@ -/* - * 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 - * - * @param message Receive message - * - */ - 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/ico-app-samplenavi/res/Map/js/navi_defines.js b/ico-app-samplenavi/res/Map/js/navi_defines.js deleted file mode 100644 index 337d183..0000000 --- a/ico-app-samplenavi/res/Map/js/navi_defines.js +++ /dev/null @@ -1,44 +0,0 @@ -/*
- * 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
- *
- */
-
-/**
- * Defines
- */
-
-const MSG_TYPE =
-{
- CHG : 0, // Change Message
- SEQ : 1, // Sequence Message
- ERR : 2, // Error Message
-
-};
-
-const SEQUENCE_MODE = // Sequence
-{
- START : 0, // Start Application
- CONF : 1, // Display Conf.
- DIST : 2, // Display Dist.
- NAVI : 3, // Run Navigation
- NAVI_END : 4 // End Navigation(no use)
-};
-
-const SHOWING_ROUTE = 1; // Current Route number
-const TMP_LAT = 35.47945; // Initialize Latitude
-const TMP_LON = 139.40026; // Initialize Longitude
-const DEFAULT_ZOOM = 17; // Zoom value for Map
-const EDJE_PATH = '/opt/apps/org.tizen.ico.app-samplenavi/data';
-const EDJE_CONF_NAME = '/samplenavi_conf.edj';
-const EDJE_DIST_NAME = '/samplenavi_conf_dist.edj';
-const APP_NO = '300';
-const IP_ADDR = '127.0.0.1';
-const WEBSOCKET_PORT = '50414';
-
-const KEY_LAT = "LAT";
-const KEY_LON = "LON";
-
diff --git a/ico-app-samplenavi/res/Map/js/navi_route.js b/ico-app-samplenavi/res/Map/js/navi_route.js deleted file mode 100644 index c2ede15..0000000 --- a/ico-app-samplenavi/res/Map/js/navi_route.js +++ /dev/null @@ -1,13 +0,0 @@ -/*
- * 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
- *
- */
-
-const START_LAT = 35.47945;
-const START_LNG = 139.40026;
-const GOAL_LAT = 35.49746;
-const GOAL_LNG = 139.40504;
diff --git a/ico-app-samplenavi/res/Map/lib/jquery-1.6.4.min.js b/ico-app-samplenavi/res/Map/lib/jquery-1.6.4.min.js deleted file mode 100644 index 628ed9b..0000000 --- a/ico-app-samplenavi/res/Map/lib/jquery-1.6.4.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 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/ico-app-samplenavi/res/Map/lib/jquery.mobile-1.0.min.js b/ico-app-samplenavi/res/Map/lib/jquery.mobile-1.0.min.js deleted file mode 100644 index 0fca54b..0000000 --- a/ico-app-samplenavi/res/Map/lib/jquery.mobile-1.0.min.js +++ /dev/null @@ -1,172 +0,0 @@ -/*! 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/ico-app-samplenavi/res/Map/map.html b/ico-app-samplenavi/res/Map/map.html deleted file mode 100644 index fa6883b..0000000 --- a/ico-app-samplenavi/res/Map/map.html +++ /dev/null @@ -1,43 +0,0 @@ -<!--
- * 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
- *
--->
-
-<!DOCTYPE html>
-<html lang="ja">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
- <link rel="stylesheet" href="./css/jquery.mobile-1.0.min.css">
- <link rel="stylesheet" href="./css/navi.css">
- <script src="http://maps.google.com/maps/api/js?sensor=false"></script>
- <script type="text/javascript" src="./lib/jquery-1.6.4.min.js"></script>
- <script type="text/javascript" src="./lib/jquery.mobile-1.0.min.js"></script>
- <script type="text/javascript" src="./js/navi_defines.js"></script>
- <script type="text/javascript" src="./js/navi_route.js"></script>
- <script type="text/javascript" src="./js/nativeapp_accessor.js"></script>
- <script type="text/javascript" src="./js/navi.js"></script>
- <script>
- var map;
-
- function initialize() {
- map = new Navigation();
- map.initialize();
- }
-
- function finalize() {
- map.finalize();
- }
- </script>
- </head>
- <body onload="initialize()" unload="finalize()">
- <div data-role="content" class="base" data-theme="a" style="margin:0px; padding:0px">
- <!-- Map Area -->
- <div class="map_area" id="map_canvas"></div>
- </div>
- </body>
-</html>
diff --git a/ico-app-samplenavi/res/config.txt b/ico-app-samplenavi/res/config.txt deleted file mode 100644 index e9a0a61..0000000 --- a/ico-app-samplenavi/res/config.txt +++ /dev/null @@ -1,9 +0,0 @@ -#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/ico-app-samplenavi/res/icons/default/small/org.tizen.ico.app-samplenavi.png b/ico-app-samplenavi/res/icons/default/small/org.tizen.ico.app-samplenavi.png Binary files differdeleted file mode 100644 index d55b69f..0000000 --- a/ico-app-samplenavi/res/icons/default/small/org.tizen.ico.app-samplenavi.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_0c.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_0c.png Binary files differdeleted file mode 100755 index 68d08b1..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_0c.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_0r.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_0r.png Binary files differdeleted file mode 100755 index c9664ab..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_0r.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_1c.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_1c.png Binary files differdeleted file mode 100755 index 350b17e..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_1c.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_1l.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_1l.png Binary files differdeleted file mode 100755 index 76541f1..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_1l.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_1r.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_1r.png Binary files differdeleted file mode 100755 index 93229d6..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_1r.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_2c.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_2c.png Binary files differdeleted file mode 100755 index 21bcd3e..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_2c.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_2r.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_2r.png Binary files differdeleted file mode 100755 index ac7b482..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_2r.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_3c.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_3c.png Binary files differdeleted file mode 100755 index aa5b73f..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_3c.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_3r.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_3r.png Binary files differdeleted file mode 100755 index 1bd6cf8..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_3r.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_4c.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_4c.png Binary files differdeleted file mode 100755 index 6332ed5..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_4c.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_4r.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_4r.png Binary files differdeleted file mode 100755 index cd181d5..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_4r.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_5c.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_5c.png Binary files differdeleted file mode 100755 index 1cb0d53..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_5c.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_5r.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_5r.png Binary files differdeleted file mode 100755 index 2e31b1b..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_5r.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_6c.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_6c.png Binary files differdeleted file mode 100755 index e36400b..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_6c.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_6r.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_6r.png Binary files differdeleted file mode 100755 index 60e524b..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_6r.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_7c.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_7c.png Binary files differdeleted file mode 100755 index c127a74..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_7c.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_7r.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_7r.png Binary files differdeleted file mode 100755 index db71521..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_7r.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_8c.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_8c.png Binary files differdeleted file mode 100755 index 19b8e50..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_8c.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_8r.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_8r.png Binary files differdeleted file mode 100755 index 710da56..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_8r.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_9c.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_9c.png Binary files differdeleted file mode 100755 index b4d7482..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_9c.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_9r.png b/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_9r.png Binary files differdeleted file mode 100755 index 484162e..0000000 --- a/ico-app-samplenavi/res/images/Meter/Meters_SpeedNum_9r.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/na_bt3_off.png b/ico-app-samplenavi/res/images/na_bt3_off.png Binary files differdeleted file mode 100644 index 700f86c..0000000 --- a/ico-app-samplenavi/res/images/na_bt3_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/na_bt3_on.png b/ico-app-samplenavi/res/images/na_bt3_on.png Binary files differdeleted file mode 100644 index b0831a3..0000000 --- a/ico-app-samplenavi/res/images/na_bt3_on.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/na_goal.png b/ico-app-samplenavi/res/images/na_goal.png Binary files differdeleted file mode 100644 index e3686ee..0000000 --- a/ico-app-samplenavi/res/images/na_goal.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/na_goal_text.png b/ico-app-samplenavi/res/images/na_goal_text.png Binary files differdeleted file mode 100644 index 0771757..0000000 --- a/ico-app-samplenavi/res/images/na_goal_text.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/na_pa_01.png b/ico-app-samplenavi/res/images/na_pa_01.png Binary files differdeleted file mode 100644 index 4f6771b..0000000 --- a/ico-app-samplenavi/res/images/na_pa_01.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/na_pa_02.png b/ico-app-samplenavi/res/images/na_pa_02.png Binary files differdeleted file mode 100644 index 4b9c279..0000000 --- a/ico-app-samplenavi/res/images/na_pa_02.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/na_pa_03.png b/ico-app-samplenavi/res/images/na_pa_03.png Binary files differdeleted file mode 100644 index 9f4c862..0000000 --- a/ico-app-samplenavi/res/images/na_pa_03.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/na_pa_04.png b/ico-app-samplenavi/res/images/na_pa_04.png Binary files differdeleted file mode 100644 index feb69a9..0000000 --- a/ico-app-samplenavi/res/images/na_pa_04.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_01_off.png b/ico-app-samplenavi/res/images/nai_01_off.png Binary files differdeleted file mode 100644 index 0a001bf..0000000 --- a/ico-app-samplenavi/res/images/nai_01_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_01_on.png b/ico-app-samplenavi/res/images/nai_01_on.png Binary files differdeleted file mode 100644 index 8fd5485..0000000 --- a/ico-app-samplenavi/res/images/nai_01_on.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_02_off.png b/ico-app-samplenavi/res/images/nai_02_off.png Binary files differdeleted file mode 100644 index 9cad8fc..0000000 --- a/ico-app-samplenavi/res/images/nai_02_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_03_off.png b/ico-app-samplenavi/res/images/nai_03_off.png Binary files differdeleted file mode 100644 index cc3aadb..0000000 --- a/ico-app-samplenavi/res/images/nai_03_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_04_off.png b/ico-app-samplenavi/res/images/nai_04_off.png Binary files differdeleted file mode 100644 index 74a483f..0000000 --- a/ico-app-samplenavi/res/images/nai_04_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_05_off.png b/ico-app-samplenavi/res/images/nai_05_off.png Binary files differdeleted file mode 100644 index e8a3406..0000000 --- a/ico-app-samplenavi/res/images/nai_05_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_06_off.png b/ico-app-samplenavi/res/images/nai_06_off.png Binary files differdeleted file mode 100644 index 15d532b..0000000 --- a/ico-app-samplenavi/res/images/nai_06_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_07_off.png b/ico-app-samplenavi/res/images/nai_07_off.png Binary files differdeleted file mode 100644 index b04fa8b..0000000 --- a/ico-app-samplenavi/res/images/nai_07_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_08_off.png b/ico-app-samplenavi/res/images/nai_08_off.png Binary files differdeleted file mode 100644 index 799a091..0000000 --- a/ico-app-samplenavi/res/images/nai_08_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_09_off.png b/ico-app-samplenavi/res/images/nai_09_off.png Binary files differdeleted file mode 100644 index 3f85505..0000000 --- a/ico-app-samplenavi/res/images/nai_09_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_10_off.png b/ico-app-samplenavi/res/images/nai_10_off.png Binary files differdeleted file mode 100644 index 298cb1e..0000000 --- a/ico-app-samplenavi/res/images/nai_10_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_11_off.png b/ico-app-samplenavi/res/images/nai_11_off.png Binary files differdeleted file mode 100644 index 4af7e96..0000000 --- a/ico-app-samplenavi/res/images/nai_11_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_12_off.png b/ico-app-samplenavi/res/images/nai_12_off.png Binary files differdeleted file mode 100644 index 1a3cb12..0000000 --- a/ico-app-samplenavi/res/images/nai_12_off.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/nai_12_on.png b/ico-app-samplenavi/res/images/nai_12_on.png Binary files differdeleted file mode 100644 index 29bc1b5..0000000 --- a/ico-app-samplenavi/res/images/nai_12_on.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_l_01.png b/ico-app-samplenavi/res/images/sg_l_01.png Binary files differdeleted file mode 100644 index aff54fa..0000000 --- a/ico-app-samplenavi/res/images/sg_l_01.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_l_02.png b/ico-app-samplenavi/res/images/sg_l_02.png Binary files differdeleted file mode 100644 index 4b98d33..0000000 --- a/ico-app-samplenavi/res/images/sg_l_02.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_l_03.png b/ico-app-samplenavi/res/images/sg_l_03.png Binary files differdeleted file mode 100644 index 395dae8..0000000 --- a/ico-app-samplenavi/res/images/sg_l_03.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_l_04.png b/ico-app-samplenavi/res/images/sg_l_04.png Binary files differdeleted file mode 100644 index 395dae8..0000000 --- a/ico-app-samplenavi/res/images/sg_l_04.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_l_05.png b/ico-app-samplenavi/res/images/sg_l_05.png Binary files differdeleted file mode 100644 index 55fa616..0000000 --- a/ico-app-samplenavi/res/images/sg_l_05.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_l_06.png b/ico-app-samplenavi/res/images/sg_l_06.png Binary files differdeleted file mode 100644 index 0cd50bc..0000000 --- a/ico-app-samplenavi/res/images/sg_l_06.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_l_07.png b/ico-app-samplenavi/res/images/sg_l_07.png Binary files differdeleted file mode 100644 index aff54fa..0000000 --- a/ico-app-samplenavi/res/images/sg_l_07.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_l_08.png b/ico-app-samplenavi/res/images/sg_l_08.png Binary files differdeleted file mode 100644 index 58c5300..0000000 --- a/ico-app-samplenavi/res/images/sg_l_08.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_m_01.png b/ico-app-samplenavi/res/images/sg_m_01.png Binary files differdeleted file mode 100644 index ef5f61f..0000000 --- a/ico-app-samplenavi/res/images/sg_m_01.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_m_02.png b/ico-app-samplenavi/res/images/sg_m_02.png Binary files differdeleted file mode 100644 index f7f2d1c..0000000 --- a/ico-app-samplenavi/res/images/sg_m_02.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_m_03.png b/ico-app-samplenavi/res/images/sg_m_03.png Binary files differdeleted file mode 100644 index 6f206a6..0000000 --- a/ico-app-samplenavi/res/images/sg_m_03.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_m_04.png b/ico-app-samplenavi/res/images/sg_m_04.png Binary files differdeleted file mode 100644 index 6f206a6..0000000 --- a/ico-app-samplenavi/res/images/sg_m_04.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_m_05.png b/ico-app-samplenavi/res/images/sg_m_05.png Binary files differdeleted file mode 100644 index fcf127a..0000000 --- a/ico-app-samplenavi/res/images/sg_m_05.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_m_06.png b/ico-app-samplenavi/res/images/sg_m_06.png Binary files differdeleted file mode 100644 index 9137892..0000000 --- a/ico-app-samplenavi/res/images/sg_m_06.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_m_07.png b/ico-app-samplenavi/res/images/sg_m_07.png Binary files differdeleted file mode 100644 index ef5f61f..0000000 --- a/ico-app-samplenavi/res/images/sg_m_07.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/sg_m_08.png b/ico-app-samplenavi/res/images/sg_m_08.png Binary files differdeleted file mode 100644 index b115bb9..0000000 --- a/ico-app-samplenavi/res/images/sg_m_08.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/test_cameraview.png b/ico-app-samplenavi/res/images/test_cameraview.png Binary files differdeleted file mode 100644 index cc58721..0000000 --- a/ico-app-samplenavi/res/images/test_cameraview.png +++ /dev/null diff --git a/ico-app-samplenavi/res/images/test_map2.png b/ico-app-samplenavi/res/images/test_map2.png Binary files differdeleted file mode 100644 index 1f97a57..0000000 --- a/ico-app-samplenavi/res/images/test_map2.png +++ /dev/null diff --git a/ico-app-samplenavi/res/landmark.csv b/ico-app-samplenavi/res/landmark.csv deleted file mode 100644 index f4254c9..0000000 --- a/ico-app-samplenavi/res/landmark.csv +++ /dev/null @@ -1,196 +0,0 @@ -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/ico-app-samplenavi/res/landmark1.csv b/ico-app-samplenavi/res/landmark1.csv deleted file mode 100644 index f4254c9..0000000 --- a/ico-app-samplenavi/res/landmark1.csv +++ /dev/null @@ -1,196 +0,0 @@ -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/ico-app-samplenavi/res/landmark2.csv b/ico-app-samplenavi/res/landmark2.csv deleted file mode 100644 index f4254c9..0000000 --- a/ico-app-samplenavi/res/landmark2.csv +++ /dev/null @@ -1,196 +0,0 @@ -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/ico-app-samplenavi/res/landmark3.csv b/ico-app-samplenavi/res/landmark3.csv deleted file mode 100644 index f05779c..0000000 --- a/ico-app-samplenavi/res/landmark3.csv +++ /dev/null @@ -1,111 +0,0 @@ -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/ico-app-samplenavi/res/samplenavi.conf b/ico-app-samplenavi/res/samplenavi.conf deleted file mode 100644 index aae3af4..0000000 --- a/ico-app-samplenavi/res/samplenavi.conf +++ /dev/null @@ -1,6 +0,0 @@ -USBCAMERAID=0 -LANDMARKPOSITION=-80 -LANDMARKROTATION=180 -WEBSOCKETPORT=50414 -IPADDR=127.0.0.1 -#PROXYURI= diff --git a/ico-app-samplenavi/src/Makefile.am b/ico-app-samplenavi/src/Makefile.am deleted file mode 100644 index 38d5991..0000000 --- a/ico-app-samplenavi/src/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -##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 -lbundle - -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/ico-app-samplenavi/src/define.h b/ico-app-samplenavi/src/define.h deleted file mode 100644 index b2377a6..0000000 --- a/ico-app-samplenavi/src/define.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * 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_ -//#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.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_WIDTH (W_WIDTH / 2) -#define W_NAVI_HEIGHT (W_HEIGHT - W_TEXTAREA_HEIGHT) - -#define W_NAVI_ORIGINE_X (0) -#define W_NAVI_ORIGINE_Y (0) - -#define W_MAP_WIDTH (W_WIDTH / 2) -#define W_MAP_HEIGHT (W_HEIGHT - W_TEXTAREA_HEIGHT) -#define W_MAP_ORIGINE_X (W_WIDTH / 2) -#define W_MAP_ORIGINE_Y (0) - -#define W_TEXTAREA_X (0) -#define W_TEXTAREA_Y (W_HEIGHT - W_TEXTAREA_HEIGHT) -#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 (75) -#define W_GOALMESSAGE_Y (566) - -#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) - -#define W_METER_HEIGHT (300) -#define W_METER_WIDTH (320) -#define W_METER_X (0) -#define W_METER_Y (W_HEIGHT - 180) - -#define W_METER_UNIT_HEIGHT (45) -#define W_METER_UNIT_WIDTH (478) -#define W_METER_UNIT_X (180) -#define W_METER_UNIT_Y (W_HEIGHT - W_METER_UNIT_HEIGHT) - -/* 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) - -#endif /* SAMPLENAVI_DEFINE_H_ */ diff --git a/ico-app-samplenavi/src/e3d.c b/ico-app-samplenavi/src/e3d.c deleted file mode 100644 index 3ad017e..0000000 --- a/ico-app-samplenavi/src/e3d.c +++ /dev/null @@ -1,1792 +0,0 @@ -/* - * 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); -static void calc_route_coord_from_lonlat(); -static void load_landmarks_from_csv(); -static void calc_landmarks_coord_from_lonlat(); -static const char *landmark_img_path(int i); -static void _camera_pos(Evas_Coord x, Evas_Coord y, Evas_Coord z, - double angle); -static Plane *_plane_new(Evas *e3d, Evas_Coord w, Evas_Coord d, - Evas_Coord h); -static void _plane_draw(Plane *plane); -static void _plane_free(Plane *plane); -static Cube *_cube_new(Evas *e3d, Evas_Coord w, Evas_Coord h, Evas_Coord d, - const char *img_path); -static void _cube_draw(Cube *c, Evas_Coord x, Evas_Coord y, Evas_Coord z, - double dx, double dy, double dz); -static void _cube_free(Cube *c); -static void goal_object_new(Evas *e3d); -static void goal_object_draw(); -static void goal_object_free(); -static void check_route_drawable_by_z_limit_fix(); -static void calc_route_coord_by_camera(); -static void calc_route_distance_to_camera(); -static void check_route_drawable_by_distance_to_camera(); -static void calc_fixed_box_points_all(); -static void calc_fixed_box_points(int routenum); -static Point calc_fix_point(int routenum, int point_index); -static void draw_curve(int routenum); -static void calc_bezier_points(Point p0, Point p1, Point p2, Point *points); -static void calc_base_box_points_all(); -static void calc_base_box_points(int routenum); -static void calc_landmarks_coord_by_camera(); -static void calc_route_distance(); -static double calc_length(Point p0, Point p1); -static double calc_square_length(Point p0, Point p1); -static void rotate_xz(Point src, Point *dist, double angle); -static void calc_intersection(Point p0, Point p1, Point p2, Point p3, - Point *point); -static int length_comp(const void *pl0, const void *pl1); - -/*============================================================================*/ -/* 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; -double goal_square_length; - -/* 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]; - -static const char *goal_img_path = IMAGES_DIR "/na_goal.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"; - -/*============================================================================*/ -/* functions */ -/*============================================================================*/ -/*--------------------------------------------------------------------------*/ -/* - * @brief init_e3d - * Initialization of 3D field-of-view information. - * - * @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 e3d_cleanup - * 3D field-of-view object cleaning. - * - * @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(); -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief draw_route - * 3D field-of-view route drawing. - * - * @param[in] e3d 3D view Evas object - * @return none - */ -/*--------------------------------------------------------------------------*/ -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]); -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief draw_landmark - * 3D field-of-view landmark drawing. - * - * @param[in] e3d 3D view Evas object - * @return none - */ -/*--------------------------------------------------------------------------*/ -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++; -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_camera_coord - * Calculation of the coordinates of a camera. - * - * @param none - * @return none - */ -/*--------------------------------------------------------------------------*/ -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)); - -} - -/*--------------------------------------------------------------------------*/ -/* - * @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 landmark_img_path - * Image file path acquisition of a landmark. - * - * @param[in] 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 _camera_pos - * The setup of camera position. - * - * @param[in] x x coordinates - * @param[in] y y coordinates - * @param[in] z z coordinates - * @param[in] angle angle - * @return none - */ -/*--------------------------------------------------------------------------*/ -static 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; -} - -/****************************************************************************** - * Functions for Drawing on Evas - ******************************************************************************/ -/*--------------------------------------------------------------------------*/ -/* - * @brief _plane_new - * plane generation. - * - * @param[in] e3d 3D view Evas object - * @param[in] w Width - * @param[in] d Depth - * @param[in] h Height - * @return plane address - * @retval > 0 success - * @retval NULL error - */ -/*--------------------------------------------------------------------------*/ -static 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; -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief _plane_draw - * plane drawing. - * - * @param[in] plane plane address - * @return none - */ -/*--------------------------------------------------------------------------*/ -static void _plane_draw(Plane *plane) -{ - static Evas_Map *m2 = NULL; - int i; - - 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) / 4)), - (Evas_Coord) (plane->pt[0].y + - ((W_NAVI_HEIGHT) / 4)), - (Evas_Coord) (plane->pt[0].z + FRONT_SIDE_Z)); - evas_map_point_coord_set(m2, 1, - (Evas_Coord) (plane->pt[1].x + ((W_WIDTH) / 4)), - (Evas_Coord) (plane->pt[1].y + - ((W_NAVI_HEIGHT) / 4)), - (Evas_Coord) (plane->pt[1].z + FRONT_SIDE_Z)); - evas_map_point_coord_set(m2, 2, - (Evas_Coord) (plane->pt[2].x + ((W_WIDTH) / 4)), - (Evas_Coord) (plane->pt[2].y + - ((W_NAVI_HEIGHT) / 4)), - (Evas_Coord) (plane->pt[2].z + FRONT_SIDE_Z)); - evas_map_point_coord_set(m2, 3, - (Evas_Coord) (plane->pt[3].x + ((W_WIDTH) / 4)), - (Evas_Coord) (plane->pt[3].y + - ((W_NAVI_HEIGHT) / 4)), - (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 / 4), (W_NAVI_HEIGHT / 4) - 100, - Z0_POSITION, FOCUS_LENGTH / 2); - 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 - -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief _plane_free - * plane object release. - * - * @param[in] plane plane address - * @return none - */ -/*--------------------------------------------------------------------------*/ -static void _plane_free(Plane *plane) -{ - evas_object_del(plane->o); - free(plane); -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief _cube_new - * cube generation. - * - * @param[in] e3d 3D view Evas object - * @param[in] w Width - * @param[in] h Height - * @param[in] d Depth - * @param[in] img_path image file path address - * @return cube address - * @retval > 0 success - * @retval NULL error - */ -/*--------------------------------------------------------------------------*/ -static 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; -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief _cube_draw - * cube drawing. - * - * @param[in] c cube address - * @param[in] x x coordinates - * param[in] y y coordinates - * @param[in] z z coordinates - * @param[in] dx amount of degrees from 0.0 to 360.0 to rotate around X axis. - * @param[in] dy amount of degrees from 0.0 to 360.0 to rotate around Y axis. - * @param[in] dz amount of degrees from 0.0 to 360.0 to rotate around Z axis. - * @return none - */ -/*--------------------------------------------------------------------------*/ -static 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, 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) / 4) + - 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) / 4) + 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) / 4), (W_NAVI_HEIGHT / 2), - FRONT_SIDE_Z); - - evas_map_util_3d_perspective(m, ((W_WIDTH) / 4), (W_NAVI_HEIGHT / 2), - Z0_POSITION, FOCUS_LENGTH / 2); - -#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); - } -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief _cube_free - * cube object release. - * - * @param[in] c cube address - * @return none - */ -/*--------------------------------------------------------------------------*/ -static void _cube_free(Cube *c) -{ - int i; - - for (i = 0; i < 6; i++) - evas_object_del(c->side[i].o); - free(c); -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief goal_object_new - * goal generation. - * - * @param[in] e3d 3D view Evas object - * @return none - */ -/*--------------------------------------------------------------------------*/ -static 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); -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief goal_object_draw - * goal drawing. - * - * @param[in] plane plane address - * @return none - */ -/*--------------------------------------------------------------------------*/ -static void goal_object_draw(Plane *plane) -{ - static Evas_Map *m3 = NULL; - - 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) / 4)), - (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) / 4)), - (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) / 4)), - (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) / 4)), - (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 / 4), (W_NAVI_HEIGHT / 2) - 100, - Z0_POSITION, FOCUS_LENGTH / 2); - - 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); -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief goal_object_free - * goal object release. - * - * @param none - * @return none - */ -/*--------------------------------------------------------------------------*/ -static void goal_object_free() -{ - evas_object_del(goal_object); -} - -/****************************************************************************** - * Functions for Calculate Route Points - ******************************************************************************/ - -#ifdef _USE_Z_LIMIT_FIX_ -/*--------------------------------------------------------------------------*/ -/* - * @brief check_route_drawable_by_z_limit_fix - * route check drawable by z limit fix. - * - * @param none - * @return none - */ -/*--------------------------------------------------------------------------*/ -static void check_route_drawable_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 - -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_route_coord_by_camera - * The coordinates of a route are calculated with a camera. - * - * @param none - * @return none - */ -/*--------------------------------------------------------------------------*/ -static 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.z = 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_drawable_by_z_limit_fix(); -#endif - - calc_route_distance(); - calc_route_distance_to_camera(); - check_route_drawable_by_distance_to_camera(); -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_route_distance_to_camera - * The route distance to a camera is calculated. - * - * @param none - * @return none - */ -/*--------------------------------------------------------------------------*/ -static 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); - } -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief check_route_drawable_by_distance_to_camera - * route check drawable by distance to camera. - * - * @param none - * @return none - */ -/*--------------------------------------------------------------------------*/ -static 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++; - } - } -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_fixed_box_points_all - * All fixed box points are calculated. - * - * @param none - * @return none - */ -/*--------------------------------------------------------------------------*/ -static void calc_fixed_box_points_all() -{ - int i; - for (i = 0; i < route_draw_num - 1; i++) { - calc_fixed_box_points(i); - } -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_fixed_box_points - * fixed box points are calculated. - * - * @param[in] routenum route number - * @return none - */ -/*--------------------------------------------------------------------------*/ -static 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); - } -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_fix_point - * fixed point is calculated. - * - * @param[in] routenum route number - * @param[in] point_index point index - * @return point -*/ -/*--------------------------------------------------------------------------*/ -static 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; -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief draw_curve - * curve is drawn. - * - * @param[in] routenum route number - * @return none -*/ -/*--------------------------------------------------------------------------*/ -static 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 - - } -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_bezier_points - * bezier point is calculated. - * - * @param[in] p0 point 0 - * @param[in] p1 point 1 - * @param[in] p2 point 2 - * @param[out] points point address - * @return none -*/ -/*--------------------------------------------------------------------------*/ -static 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 - } -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_base_box_points_all - * All base box points are calculated. - * - * @param none - * @return none -*/ -/*--------------------------------------------------------------------------*/ -static void calc_base_box_points_all() -{ - int i; - for (i = 0; i < route_draw_num - 1; i++) { - calc_base_box_points(i); - } -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_base_box_points - * base box points are calculated. - * - * @param[in] routenum route number - * @return none - */ -/*--------------------------------------------------------------------------*/ -static 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 - ******************************************************************************/ -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_landmarks_coord_by_camera - * The coordinates of landmarks are calculated with a camera. - * - * @param none - * @return none - */ -/*--------------------------------------------------------------------------*/ -static 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) - ******************************************************************************/ -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_route_distance - * The route distance is calculated. - * - * @param none - * @return none - */ -/*--------------------------------------------------------------------------*/ -static 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) */ -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_length - * The distance between two points is calculated. - * - * @param[in] p0 point 0 - * @param[in] p1 point 1 - * @return distance between two points -*/ -/*--------------------------------------------------------------------------*/ -static 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) */ -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_square_length - * The square of the distance between two points is calculated. - * - * @param[in] p0 point 0 - * @param[in] p1 point 1 - * @return square of distance between two points -*/ -/*--------------------------------------------------------------------------*/ -static 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) */ -/*--------------------------------------------------------------------------*/ -/* - * @brief rotate_xz - * rotate point is calculated. - * - * @param[in] str point - * @param[out] dist point address - * @param[in] angle angle - * @return none -*/ -/*--------------------------------------------------------------------------*/ -static 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; -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief calc_intersection - * intersection is calculated. - * - * @param[in] p0 point 0 - * @param[in] p1 point 1 - * @param[in] p2 point 2 - * @param[in] p3 point 3 - * @param[out] point point address - * @return none -*/ -/*--------------------------------------------------------------------------*/ -static 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; -} - -/*--------------------------------------------------------------------------*/ -/* - * @brief length_comp - * Comparison of length of point. - * - * @param[in] pl0 point length 0 address - * @param[in] pl1 point length 1 address - * @return result - * @retval =0 length coincidence - * @retval =1 point length 0 < point length 1 - * @retval =-1 point length 0 > point length 1 -*/ -/*--------------------------------------------------------------------------*/ -static 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/ico-app-samplenavi/src/e3d.h b/ico-app-samplenavi/src/e3d.h deleted file mode 100644 index 179dde4..0000000 --- a/ico-app-samplenavi/src/e3d.h +++ /dev/null @@ -1,140 +0,0 @@ -/* - * 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" - -/* Functions */ -void init_e3d(Evas *e3d, void *p_in, size_t len); -void e3d_cleanup(); -void draw_route(Evas *e3d); -void draw_landmark(Evas *e3d); -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; -extern double goal_square_length; - -#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/ico-app-samplenavi/src/samplenavi.c b/ico-app-samplenavi/src/samplenavi.c deleted file mode 100644 index b49c008..0000000 --- a/ico-app-samplenavi/src/samplenavi.c +++ /dev/null @@ -1,1897 +0,0 @@ -/* - * 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 <bundle.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 -#include <math.h> -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_dir = 0; -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]; -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_text_img_path = IMAGES_DIR "/na_goal_text.png"; -static const char *default_url = - "file:///opt/apps/org.tizen.ico.app-samplenavi/res/Map/map.html"; - -/* Screen right */ -static char sscrntype[32]; - -/* Setting screen */ -static Evas *g_evas; -static Evas_Object *g_edje; /* loaded edje objects */ -static 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_camera_path = IMAGES_DIR "/test_cameraview.png"; - -/* WEBSOCKET */ -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(); - - 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(); - - 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 - - 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 || fig_c == 0) { - 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_METER_UNIT_WIDTH, - W_METER_UNIT_HEIGHT); - 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, W_METER_HEIGHT, - W_METER_WIDTH); - evas_object_move(ui_meter_l, W_METER_X, W_METER_Y); - evas_object_resize(ui_meter_l, W_METER_HEIGHT, W_METER_WIDTH); - 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, W_METER_HEIGHT, - W_METER_WIDTH); - evas_object_move(ui_meter_c[i], W_METER_X, W_METER_Y); - evas_object_resize(ui_meter_c[i], W_METER_HEIGHT, W_METER_WIDTH); - 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, W_METER_HEIGHT, - W_METER_WIDTH); - evas_object_move(ui_meter_r[i], W_METER_X, W_METER_Y); - evas_object_resize(ui_meter_r[i], W_METER_HEIGHT, W_METER_WIDTH); - 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, W_METER_UNIT_X, W_METER_UNIT_Y); - evas_object_resize(ui_vicspeed_text, W_METER_UNIT_WIDTH, - W_METER_UNIT_HEIGHT); - 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); - - if(strlen(proxy_uri)) { - 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_MAP_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; - - /* 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_NAVI_WIDTH, W_NAVI_HEIGHT); - evas_object_move(cam, W_NAVI_ORIGINE_X, W_NAVI_ORIGINE_Y); - evas_object_resize(cam, W_NAVI_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 -double lat_tmp = 0; -double lon_tmp = 0; -int add_angle = 0; - -if (test_cnt < route_data_count) { - test_lat = csv_route[test_cnt].lat; - test_lon = csv_route[test_cnt].lon; - - if ((test_cnt + 1) != route_data_count) { - lat_tmp = csv_route[test_cnt + 1].lat - test_lat; - lon_tmp = csv_route[test_cnt + 1].lon - test_lon; - - if (lat_tmp >= 0 && lon_tmp >= 0) { - add_angle = 0; - test_dir = - atan((fabs(lon_tmp) / fabs(lat_tmp))) * 180.0 / (atan(1.0) * - 4.0); - } - else if (lat_tmp < 0 && lon_tmp >= 0) { - add_angle = 90; - test_dir = - atan((fabs(lat_tmp) / fabs(lon_tmp))) * 180.0 / (atan(1.0) * - 4.0); - } - else if (lat_tmp < 0 && lon_tmp < 0) { - add_angle = 180; - test_dir = - atan((fabs(lon_tmp) / fabs(lat_tmp))) * 180.0 / (atan(1.0) * - 4.0); - } - else if (lat_tmp >= 0 && lon_tmp < 0) { - add_angle = 270; - test_dir = - atan((fabs(lat_tmp) / fabs(lon_tmp))) * 180.0 / (atan(1.0) * - 4.0); - } - test_dir = test_dir + add_angle; - } - camera_geocode.lat = test_lat; - camera_geocode.lon = test_lon; - camera_geocode.dir = test_dir; - test_cnt++; - - uim_debug("test_lat = [%f]", test_lat); - uim_debug("test_lon = [%f]", test_lon); - uim_debug("test_dir = [%d]", test_dir); -} -#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]; - - uim_debug("call callback_http! size = %d", len); - uim_debug("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_hide(g_edje); - 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) { - 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; - - for (i = 0; i < property_num; i++) { - result = getAmbDbus(i, vic_val); - - if (result != 0) { - uim_debug("Err getAmbDbus : Unacquired [%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: - 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; - 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("Setting screen: 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("Setting screen: libwebsocket_write return = %d", n); - } - else { - uim_debug("Setting screen: 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("Setting screen: 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("Setting screen: 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("Setting screen: 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("Setting screen: 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("Setting screen: could not load %s: %s", edje_file, - errmsg); - - edje_file_collection_list_free(group); - evas_object_del(g_edje); - return -1; - } - uim_debug("Setting screen: 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("Setting screen: 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("Setting screen: 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("Setting screen: list[%d] is NULL", name_count); - } - - /* to next list */ - list = list->next; - name_count++; - } - - /* to next group */ - group = group->next; - group_count++; - } - uim_debug("Setting screen: group num is %d", group_count); - uim_debug("Setting screen: 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); - - 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 getscreen; - char appid[ICO_UXF_MAX_PROCESS_NAME + 1]; - int ret = 0; - connected = 0; - bundle *b; - const char *val; - - /* 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); - - enable_navi = FALSE; - set_route = FALSE; - - /* initialize */ - if (0 != get_config()) { - uim_debug("ERROR get_config()"); - return -1; - } - - /* get argment */ - b = bundle_import_from_argv(argc, argv); - getscreen = 0; - sscrntype[0] = 0; - if(b != NULL){ - val = bundle_get_val(b, "rightoption"); - if (val != NULL) { - if (strcasecmp(val, "-basescreen") == 0) { - getscreen = 1; /* get base screen */ - strcpy(sscrntype, "BasicScreen"); - uim_debug("BasicScreen"); - } - else if (strcasecmp(val, "-intscreen") == 0) { - getscreen = 2; /* get interrupt screen */ - strcpy(sscrntype, "IntScreen"); - } - else if (strcasecmp(val, "-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 /* _USE_OPENCV_ */ - evas_object_image_file_set(cam, test_camera_path, NULL); -#endif /* _USE_OPENCV_ */ - -#endif - - evas_object_image_fill_set(cam, 0, 0, W_NAVI_WIDTH, W_NAVI_HEIGHT); - evas_object_move(cam, W_NAVI_ORIGINE_X, W_NAVI_ORIGINE_Y); - evas_object_resize(cam, W_NAVI_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/ico-app-samplenavi/src/samplenavi.h b/ico-app-samplenavi/src/samplenavi.h deleted file mode 100644 index 27df81b..0000000 --- a/ico-app-samplenavi/src/samplenavi.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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/ico-app-soundsample/org.tizen.ico.app-soundsample.desktop b/ico-app-soundsample/org.tizen.ico.app-soundsample.desktop deleted file mode 100644 index acd20f2..0000000 --- a/ico-app-soundsample/org.tizen.ico.app-soundsample.desktop +++ /dev/null @@ -1,8 +0,0 @@ -Name=ico-app-soundsample -Type=Application -Exec=/opt/apps/org.tizen.ico.app-soundsample/bin/ico-app-soundsample rightoption -basesound -Icon=org.tizen.ico.app-soundsample.png -NoDisplay=false -Version=0.1.0 -Comment=audio test app -Categories=Entertainment;Maker;run=Center;dispzone=Full;soundzone=Full;noauto diff --git a/ico-app-soundsample/org.tizen.ico.app-soundsample.xml b/ico-app-soundsample/org.tizen.ico.app-soundsample.xml new file mode 100644 index 0000000..98ed0cb --- /dev/null +++ b/ico-app-soundsample/org.tizen.ico.app-soundsample.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.ico.app-soundsample" version="0.0.12" install-location="internal-only"> + <label>ico-app-soundsample</label> + <description>IVI StatusBar Application</description> + <ui-application appid="org.tizen.ico.app-soundsample" exec="/usr/apps/org.tizen.ico.app-soundsample/bin/ico-app-soundsample rightoption -basescreen" nodisplay="false" multiple="false" type="capp" taskmanage="true"> + <icon>org.tizen.ico.app-soundsample.png</icon> + <label>ico-app-soundsample</label> + <label xml:lang="en-gb">ico-app-soundsample</label> + <label xml:lang="en-us">ico-app-soundsample</label> + </ui-application> +</manifest> diff --git a/ico-app-soundsample/sound_bg.png b/ico-app-soundsample/sound_bg.png Binary files differnew file mode 100644 index 0000000..a714adf --- /dev/null +++ b/ico-app-soundsample/sound_bg.png diff --git a/ico-app-soundsample/soundsample_config.txt b/ico-app-soundsample/soundsample_config.txt index 4e4f14b..0569ab4 100644 --- a/ico-app-soundsample/soundsample_config.txt +++ b/ico-app-soundsample/soundsample_config.txt @@ -2,7 +2,7 @@ ## /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 +wavfile_path=/usr/apps/org.tizen.ico.app-soundsample/sounds/musicbox.wav server_ip=127.0.0.1 device_name=0 volume1=30000 diff --git a/ico-app-soundsample/src/Makefile.am b/ico-app-soundsample/src/Makefile.am index d9cc136..4874af6 100644 --- a/ico-app-soundsample/src/Makefile.am +++ b/ico-app-soundsample/src/Makefile.am @@ -1,9 +1,12 @@ ##ico-app-soundsample -app_soundsample_bindir = /opt/apps/org.tizen.ico.app-soundsample/bin +app_soundsample_bindir = /usr/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 -lbundle -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_soundsample_LDADD = -L/usr/lib -lico-util -lico-uxf-weston-plugin -lcapi-appfw-application -lwebsockets -laul -lecore_evas -lecore -leina -levas -lrt -lecore_wayland -lelementary -lm -leet -lecore_file -ledje -lecore_imf -lecore_con -lpulse -lglib-2.0 -lbundle +ico_app_soundsample_CFLAGS = -Wall -I. -I../../common/include -I/usr/include/aul -I/usr/include/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 -I/usr/include/ico-util +ico_app_soundsample_CPPFLAGS = -Wall -I. -I../../common/include -I/usr/include/aul -I/usr/include/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/eet-1 -I/usr/include/edje-1 -I/usr/include/e_dbus-1 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/efreet-1 -I/usr/include/ethumb-1 -I/usr/include/ -D_REENTRANT -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/ico-util + +#ico_app_vicsample_LDADD = -L/usr/lib -lecore_x -lcapi-appfw-application -lico-util -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 -lbundle +#ico_app_vicsample_CFLAGS = -Wall -I. -I/usr/include/appfw -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/eet-1 -I/usr/include/edje-1 -I/usr/include/e_dbus-1 -I/usr/include/efreet-1 -I/usr/include/ethumb-1 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I~/HomeScreen/include diff --git a/ico-app-soundsample/src/soundsample.c b/ico-app-soundsample/src/soundsample.c index dc16f25..abefca8 100644 --- a/ico-app-soundsample/src/soundsample.c +++ b/ico-app-soundsample/src/soundsample.c @@ -23,33 +23,33 @@ #include <Ecore.h> #include <Ecore_Evas.h> - +#include <Elementary.h> +//#include <Ecore_X.h> +#include <app.h> #include <unistd.h> #include <glib.h> #include <bundle.h> -//#include "app_log.h" -#include "ico_apf.h" -#include "ico_apf_ecore.h" -#include "ico_apf_log.h" +//#include "ico_apf.h" +//#include "ico_apf_ecore.h" +//#include "ico_apf_log.h" #include "soundsample.h" +#include <aul.h> +#include "ico_log.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 STATUS_BAR_HEIGHT (64) +#define CTRL_BAR_HEIGHT (128) +#define WIDTH (1080) /* Base Background width */ +#define HEIGHT (1920 - STATUS_BAR_HEIGHT - CTRL_BAR_HEIGHT) /* Base 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 PACKAG "ico-app-soundsample" +#define CONFIG_FILE "/usr/apps/org.tizen.ico.app-soundsample/res/soundsample_config.txt" +#define BG_IMAGE_FILE "/usr/apps/org.tizen.ico.app-soundsample/res/images/sound_bg.png" -#define MAX_BUTTON_NUM 3 -#define MAX_DRAW_LEM 20 +#define MAX_BUTTON_NUM (3) +#define MAX_DRAW_LEM (20) #define GROUP_DATA "data" #define KEY_WAVFILE_PATH "wavfile_path" @@ -60,6 +60,14 @@ #define KEY_APP_NAME "app_name" #define KEY_STREAM_NAME "stream_name" +/* font */ +#define FONT_SIZE 48 +#define FONT_FAMILY (char *)"Sans" // Mono, Sans, Serif + +/* Text class name */ +#define TEXT_BUTTON (char *)"button" +#define TEXT_LABEL (char *)"label" + /*============================================================================*/ /* Define data types */ /*============================================================================*/ @@ -104,21 +112,31 @@ struct object_figure_val_t struct color_val_t color; struct size_val_t size; struct pos_val_t pos; + char icon_name[64]; void *func; }; +struct appdata_t +{ + Evas_Object *win; //main window + Evas_Object *bg; + + Evas_Object *snd_type; + Evas_Object *btn_name[MAX_BUTTON_NUM]; + Evas_Object *btn[MAX_BUTTON_NUM]; + Evas_Object *icon[MAX_BUTTON_NUM]; + Evas_Object *sts_txt; + Evas_Object *app_name; + Evas_Object *strm_name; + Evas_Object *pid_txt; +}; + /*============================================================================*/ /* 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 void _on_mousedown1(void *data, Evas_Object *obj, void *event_info); +static void _on_mousedown2(void *data, Evas_Object *obj, void *event_info); +static void _on_mousedown3(void *data, Evas_Object *obj, void *event_info); static int start_audio(void); static Eina_Bool stop_audio(void *data, Ecore_Fd_Handler *fd_handler); static void rcv_event(int event_num); @@ -129,15 +147,28 @@ 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); - +//static int get_sound(int argc, char **argv); +static bool app_create(void *data); +static Evas_Object *_create_win(const char *name); +static void _win_del(void *data, Evas_Object *obj, void *event_info); +static void app_terminate(void *data); +static void _winCreate(void); /*============================================================================*/ /* Tables and Valiables */ /*============================================================================*/ extern int pulse_main(struct audio_config_t *, int); +/* application data */ +static struct appdata_t Ad; + +/* screen size */ +static double Width = 0; +static double Height = 0; +static double W_mag = 0; +static double H_mag = 0; + /* state values */ static int StateNum = STATE_STOP; -static Evas_Object *State_text; /* file descriptor */ static int Filedes[2]; @@ -151,130 +182,88 @@ 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_text_val_t SndTypeText = { + {0, 0, 0, 255}, {500, 50}, {"Sans", 48}, {25, 25}, "", NULL }; -static struct object_figure_val_t BgFigr = { - {255, 255, 255, 255}, {WIDTH, HEIGHT}, {0, 0}, NULL +static struct object_text_val_t ButtonText[MAX_BUTTON_NUM] = { + {{255, 0, 0, 255}, {220, 50}, {"Sans", 48}, {100 + 65, 90}, "START", + NULL}, + {{0, 255, 0, 255}, {220, 50}, {"Sans", 48}, {370 + 75, 90}, "STOP", NULL}, + {{0, 0, 255, 255}, {220, 50}, {"Sans", 48}, {640 + 65, 90}, "PAUSE", NULL} }; -static struct object_text_val_t TimeText = { - {0, 0, 0, 255}, {150, 50}, {"Sans", 24}, {0, 0}, {}, (void *) _timer_cb +static struct object_figure_val_t ButtonFigr[MAX_BUTTON_NUM] = { + {{255, 0, 0, 255}, {220, 95}, {130, 140}, "media_player/play", + (void *) _on_mousedown1}, + {{0, 255, 0, 255}, {220, 95}, {400, 140}, "media_player/stop", + (void *) _on_mousedown2}, + {{0, 0, 255, 255}, {220, 95}, {670, 140}, "media_player/pause", + (void *) _on_mousedown3} }; static struct object_text_val_t StateInfoText = { - {0, 0, 0, 255}, {150, 50}, {"Sans", 48}, {140, 300}, "STATE : STOP", NULL + {0, 0, 0, 255}, {500, 50}, {"Sans", 48}, {330, 300}, "STATE : STOP", NULL }; static struct object_text_val_t AppNameText = { - {0, 0, 0, 255}, {150, 50}, {"Sans", 32}, {25, 440}, "App Name : ", NULL + {0, 0, 0, 255}, {900, 50}, {"Sans", 32}, {150, 410}, "App Name : ", NULL }; static struct object_text_val_t StreamNameText = { - {0, 0, 0, 255}, {150, 50}, {"Sans", 32}, {25, 480}, "Stream Name : ", - NULL + {0, 0, 0, 255}, {900, 50}, {"Sans", 32}, {150, 490}, "Stream Name : ", + NULL }; static struct object_text_val_t PidText = { - {0, 0, 0, 255}, {150, 50}, {"Sans", 36}, {50, 530}, "PID : ", NULL + {0, 0, 0, 255}, {900, 50}, {"Sans", 36}, {150, 570}, "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 char SsndType[32]; -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) +/*============================================================================*/ +/* Function */ +/*============================================================================*/ +static void _on_mousedown1(void *data, Evas_Object *obj, void *event_info) { - uim_debug("_on_mousedown1: Enter"); - uim_debug("Input event : START"); + ICO_DBG("_on_mousedown1: Enter"); + ICO_DBG("Input event : START"); rcv_event(START_REQ); - uim_debug("_on_mousedown1: Leave"); + ICO_DBG("_on_mousedown1: Leave"); } -static void _on_mousedown2(void *data, Evas *evas, Evas_Object *o, - void *einfo) +static void _on_mousedown2(void *data, Evas_Object *obj, void *event_info) { - uim_debug("_on_mousedown2: Enter"); - uim_debug("Input event : STOP"); + ICO_DBG("_on_mousedown2: Enter"); + ICO_DBG("Input event : STOP"); rcv_event(STOP_REQ); - uim_debug("_on_mousedown2: Leave"); + ICO_DBG("_on_mousedown2: Leave"); } -static void _on_mousedown3(void *data, Evas *evas, Evas_Object *o, - void *einfo) +static void _on_mousedown3(void *data, Evas_Object *obj, void *event_info) { - uim_debug("_on_mousedown3: Enter"); - uim_debug("Input event : PAUSE"); + ICO_DBG("_on_mousedown3: Enter"); + ICO_DBG("Input event : PAUSE"); rcv_event(PAUSE_REQ); - uim_debug("_on_mousedown3: Leave"); + ICO_DBG("_on_mousedown3: Leave"); } static int start_audio(void) { - uim_debug("start_audio: Enter"); + ICO_DBG("start_audio: Enter"); int ret = 0; signal(SIGCLD, SIG_IGN); if ((ChPid = fork()) < 0) { - uim_debug("Err fork"); + ICO_DBG("Err fork"); return -1; } else if (ChPid == 0) { @@ -282,11 +271,11 @@ static int start_audio(void) close(Filedes[1]); close(Filedes2[0]); - uim_debug("Voice response : START"); + ICO_DBG("Voice response : START"); ret = pulse_main(&AudioConfig, Filedes[0]); - uim_debug("Voice response : END"); + ICO_DBG("Voice response : END"); - uim_debug("pulse_main: ret = [%d]", ret); + ICO_DBG("pulse_main: ret = [%d]", ret); recv_event_res(ret); close(Filedes[0]); @@ -296,27 +285,27 @@ static int start_audio(void) } /* Processing of parent process */ - uim_debug("Child process: ChPid = [%d]", ChPid); + ICO_DBG("Child process: ChPid = [%d]", ChPid); - uim_debug("start_audio: Leave"); + ICO_DBG("start_audio: Leave"); return 0; } static Eina_Bool stop_audio(void *data, Ecore_Fd_Handler *fd_handler) { - uim_debug("stop_audio: Enter"); + ICO_DBG("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); + ICO_DBG("buff :%s", buff); if (atoi(buff) != 0) { - uim_debug("pulse_main Err: ret= [%d]", atoi(buff)); - _on_destroy(NULL); + ICO_DBG("pulse_main Err: ret= [%d]", atoi(buff)); + _win_del(NULL, NULL, NULL); } /* State change */ @@ -325,14 +314,14 @@ static Eina_Bool stop_audio(void *data, Ecore_Fd_Handler *fd_handler) /* Process id initialization */ ChPid = 0; - uim_debug("stop_audio: Leave"); + ICO_DBG("stop_audio: Leave"); return ECORE_CALLBACK_RENEW; } static void rcv_event(int event_num) { - uim_debug("rcv_event: Enter"); + ICO_DBG("rcv_event: Enter"); int ret = 0; @@ -354,8 +343,8 @@ static void rcv_event(int event_num) break; default: - uim_debug("Not receive: StateNum = [%d],event_num = [%d]", - StateNum, event_num); + ICO_DBG("Not receive: StateNum = [%d],event_num = [%d]", + StateNum, event_num); break; } @@ -371,14 +360,14 @@ static void rcv_event(int event_num) chg_state(STATE_START); } else { - uim_debug("start_audio Err: ret= [%d]", ret); - _on_destroy(NULL); + ICO_DBG("start_audio Err: ret= [%d]", ret); + _win_del(NULL, NULL, NULL); } break; default: - uim_debug("Not receive: StateNum = [%d],event_num = [%d]", - StateNum, event_num); + ICO_DBG("Not receive: StateNum = [%d],event_num = [%d]", + StateNum, event_num); break; } @@ -401,100 +390,101 @@ static void rcv_event(int event_num) break; default: - uim_debug("Not receive: StateNum = [%d],event_num = [%d]", - StateNum, event_num); + ICO_DBG("Not receive: StateNum = [%d],event_num = [%d]", + StateNum, event_num); break; } break; default: - uim_debug("Not support StateNum: StateNum = [%d]", StateNum); + ICO_DBG("Not support StateNum: StateNum = [%d]", StateNum); break; } - uim_debug("rcv_event: Leave"); + ICO_DBG("rcv_event: Leave"); } static void send_event_req(int event_num) { - uim_debug("send_event_req: Enter"); + ICO_DBG("send_event_req: Enter"); char msg[32]; memset(msg, 0x00, sizeof(msg)); snprintf(msg, sizeof(msg), "%d", event_num); - uim_debug("msg = %s", msg); + ICO_DBG("msg = %s", msg); write(Filedes[1], msg, strlen(msg) + 1); - uim_debug("send_event_req: Leave"); + ICO_DBG("send_event_req: Leave"); } static void recv_event_res(int ret) { - uim_debug("recv_event_res: Enter"); + ICO_DBG("recv_event_res: Enter"); char msg[32]; memset(msg, 0x00, sizeof(msg)); snprintf(msg, sizeof(msg), "%d", ret); - uim_debug("msg = %s", msg); + ICO_DBG("msg = %s", msg); write(Filedes2[1], msg, strlen(msg) + 1); - uim_debug("recv_event_res: Leave"); + ICO_DBG("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); + ICO_DBG("chg_state: Enter"); + ICO_DBG("chg_state state_num = [%d]", state_num); - char buf[ICO_UXF_MAX_PROCESS_NAME + 1]; +// char buf[ICO_UXF_MAX_PROCESS_NAME + 1]; + char buf[64]; 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); + elm_object_text_set(Ad.sts_txt, buf); StateNum = state_num; break; case STATE_STOP: snprintf(buf, sizeof(buf), "%s", "STATE : STOP"); - evas_object_text_text_set(State_text, buf); + elm_object_text_set(Ad.sts_txt, buf); StateNum = state_num; break; case STATE_PAUSE: snprintf(buf, sizeof(buf), "%s", "STATE : PAUSE"); - evas_object_text_text_set(State_text, buf); + elm_object_text_set(Ad.sts_txt, buf); StateNum = state_num; break; default: - uim_debug("Not support State: state_num = [%d]", state_num); + ICO_DBG("Not support State: state_num = [%d]", state_num); break; } - uim_debug("chg_state StateNum = [%d]", StateNum); - uim_debug("chg_state: Leave"); + ICO_DBG("chg_state StateNum = [%d]", StateNum); + ICO_DBG("chg_state: Leave"); } static void conf_check_gerror(char *para_num, GError ** error) { - uim_debug("conf_check_gerror: Enter"); + ICO_DBG("conf_check_gerror: Enter"); if (*error != NULL) { - uim_debug("Config [%s] : %s", para_num, (*error)->message); + ICO_DBG("Config [%s] : %s", para_num, (*error)->message); } g_clear_error(error); - uim_debug("conf_check_gerror: Leave"); + ICO_DBG("conf_check_gerror: Leave"); } static int read_config(void) { - uim_debug("read_config: Enter"); + ICO_DBG("read_config: Enter"); GKeyFile *keyfile; GKeyFileFlags flags; @@ -512,7 +502,7 @@ static int read_config(void) KEY_WAVFILE_PATH, &error); if ((error) || (strlen(AudioConfig.wavfile_path) <= 0)) { - uim_debug("No config data [%s]", KEY_WAVFILE_PATH); + ICO_DBG("No config data [%s]", KEY_WAVFILE_PATH); conf_check_gerror(KEY_WAVFILE_PATH, &error); g_key_file_free(keyfile); return -1; @@ -521,7 +511,7 @@ static int read_config(void) 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); + ICO_DBG("No config data [%s]", KEY_SERVER_IP); conf_check_gerror(KEY_SERVER_IP, &error); AudioConfig.server_ip = NULL; } @@ -529,7 +519,7 @@ static int read_config(void) 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); + ICO_DBG("No config data [%s]", KEY_DEVICE_NAME); conf_check_gerror(KEY_DEVICE_NAME, &error); AudioConfig.device_name = NULL; } @@ -537,7 +527,7 @@ static int read_config(void) AudioConfig.volume1 = g_key_file_get_integer(keyfile, GROUP_DATA, KEY_VOLUME1, &error); if (error) { - uim_debug("No config data [%s]", KEY_VOLUME1); + ICO_DBG("No config data [%s]", KEY_VOLUME1); conf_check_gerror(KEY_VOLUME1, &error); AudioConfig.volume1 = -1; } @@ -545,7 +535,7 @@ static int read_config(void) AudioConfig.volume2 = g_key_file_get_integer(keyfile, GROUP_DATA, KEY_VOLUME2, &error); if (error) { - uim_debug("No config data [%s]", KEY_VOLUME2); + ICO_DBG("No config data [%s]", KEY_VOLUME2); conf_check_gerror(KEY_VOLUME2, &error); AudioConfig.volume2 = -1; } @@ -553,7 +543,7 @@ static int read_config(void) 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); + ICO_DBG("No config data [%s]", KEY_APP_NAME); conf_check_gerror(KEY_APP_NAME, &error); AudioConfig.app_name = "TP_PulseAudio"; } @@ -561,49 +551,56 @@ static int read_config(void) 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); + ICO_DBG("No config data [%s]", KEY_STREAM_NAME); conf_check_gerror(KEY_DEVICE_NAME, &error); AudioConfig.stream_name = "Pri0"; } - uim_debug("read_config: Leave"); + ICO_DBG("AudioConfig.wavfile_path = [%s]", AudioConfig.wavfile_path); + ICO_DBG("AudioConfig.server_ip = [%s]", AudioConfig.server_ip); + ICO_DBG("AudioConfig.device_name = [%s]", AudioConfig.device_name); + ICO_DBG("AudioConfig.volume1 = [%d]", AudioConfig.volume1); + ICO_DBG("AudioConfig.volume2 = [%d]", AudioConfig.volume2); + ICO_DBG("AudioConfig.app_name = [%s]", AudioConfig.app_name); + ICO_DBG("AudioConfig.stream_name = [%s]", AudioConfig.stream_name); + + ICO_DBG("read_config: Leave"); return 0; } static void draw_text(Evas_Object *obj, struct object_text_val_t *text) { - uim_debug("draw_text: Enter"); + ICO_DBG("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_color_set(obj, text->color.r, text->color.g, text->color.b, +// text->color.a); + evas_object_resize(obj, text->size.w * W_mag, text->size.h * H_mag); + evas_object_move(obj, text->pos.x * W_mag, text->pos.y * H_mag); evas_object_show(obj); - evas_object_text_text_set(obj, text->text); + elm_object_text_set(obj, text->text); - uim_debug("draw_text: Leave"); + ICO_DBG("draw_text: Leave"); } static void draw_figr(Evas_Object *obj, struct object_figure_val_t *figr) { - uim_debug("draw_figr: Enter"); + ICO_DBG("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_color_set(obj, figr->color.r, figr->color.g, figr->color.b, +// figr->color.a); + evas_object_resize(obj, figr->size.w * W_mag, figr->size.h * H_mag); + evas_object_move(obj, figr->pos.x * W_mag, figr->pos.y * H_mag); evas_object_show(obj); - uim_debug("draw_figr: Leave"); + ICO_DBG("draw_figr: Leave"); } - +#if 0 static void res_callback(ico_apf_resource_notify_info_t *info, void *user_data) { int ret; - uim_debug + ICO_DBG ("##==> 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); @@ -617,14 +614,14 @@ static void res_callback(ico_apf_resource_notify_info_t *info, 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); + ICO_DBG("##==> 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); + ICO_DBG("##==> callback reply sound(%s,%d,1) = %d", + info->device, info->id, ret); } break; default: @@ -632,91 +629,266 @@ static void res_callback(ico_apf_resource_notify_info_t *info, break; } } - -int main(int argc, char *argv[]) +#endif +static void app_terminate(void *data) { - int getsound; - char appid[64]; + ICO_DBG("ENTER app_terminate"); + // Release all resources + int i; + + if (Ad.win) { + evas_object_del(Ad.win); + Ad.win = NULL; + } + + if (Ad.bg) { + evas_object_del(Ad.bg); + Ad.bg = NULL; + } + + if (Ad.snd_type) { + evas_object_del(Ad.snd_type); + Ad.snd_type = NULL; + } + + for (i = 0; i < MAX_BUTTON_NUM; i++) { + if (Ad.btn[i]) { + evas_object_del(Ad.btn[i]); + Ad.btn[i] = NULL; + } + + if (Ad.btn_name[i]) { + evas_object_del(Ad.btn_name[i]); + Ad.btn_name[i] = NULL; + } + + if (Ad.icon[i]) { + evas_object_del(Ad.icon[i]); + Ad.icon[i] = NULL; + } + } + + if (Ad.sts_txt) { + evas_object_del(Ad.sts_txt); + Ad.sts_txt = NULL; + } - /* Log output setup */ - if (ico_apf_get_app_id(0, appid) == ICO_APP_CTL_E_NONE) { - ico_apf_log_open(appid); + if (Ad.app_name) { + evas_object_del(Ad.app_name); + Ad.app_name = NULL; } - uim_debug("main: Enter"); + if (Ad.strm_name) { + evas_object_del(Ad.strm_name); + Ad.strm_name = NULL; + } + + if (Ad.pid_txt) { + evas_object_del(Ad.pid_txt); + Ad.pid_txt = NULL; + } + + ICO_DBG("LEAVE app_terminate"); + return; +} + +static void _winCreate(void) +{ + ICO_DBG("ENTER _winCreate"); - 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; + int i; + + memset(buf, 0x00, sizeof(buf)); + memset(buf2, 0x00, sizeof(buf)); + + if (NULL == Ad.win) { + ICO_DBG("Err Param NG"); + return; + } + + /* Sound Type */ + Ad.snd_type = elm_label_add(Ad.win); + draw_text(Ad.snd_type, &SndTypeText); + elm_object_text_set(Ad.snd_type, SsndType); + + /* Button */ + for (i = 0; i < MAX_BUTTON_NUM; i++) { + /* Button Text */ + Ad.btn_name[i] = elm_label_add(Ad.win); + draw_text(Ad.btn_name[i], &ButtonText[i]); + + /* Button Object */ + Ad.btn[i] = elm_button_add(Ad.win); + Ad.icon[i] = elm_icon_add(Ad.win); + elm_icon_standard_set(Ad.icon[i], ButtonFigr[i].icon_name); + elm_object_part_content_set(Ad.btn[i], "icon", Ad.icon[i]); + draw_figr(Ad.btn[i], &ButtonFigr[i]); + evas_object_smart_callback_add(Ad.btn[i], "clicked", + (Evas_Smart_Cb) (ButtonFigr[i].func), + NULL); + } + + /* Status Text */ + Ad.sts_txt = elm_label_add(Ad.win); + draw_text(Ad.sts_txt, &StateInfoText); + + /* Application Name */ + Ad.app_name = elm_label_add(Ad.win); + draw_text(Ad.app_name, &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); + } + elm_object_text_set(Ad.app_name, buf); + + /* Stream Name */ + Ad.strm_name = elm_label_add(Ad.win); + draw_text(Ad.strm_name, &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); + } + elm_object_text_set(Ad.strm_name, buf); + + /* PID Text */ + Ad.pid_txt = elm_label_add(Ad.win); + draw_text(Ad.pid_txt, &PidText); + snprintf(buf, sizeof(buf), "%s%d", "PID : ", getpid()); + elm_object_text_set(Ad.pid_txt, buf); + + ICO_DBG("LEAVE _winCreate"); + return; +} + +static void _win_del(void *data, Evas_Object *obj, void *event_info) +{ + ICO_DBG("ENTER _win_del"); + + elm_exit(); + + ICO_DBG("LEAVE _win_del"); + return; +} + +static Evas_Object *_create_win(const char *name) +{ + ICO_DBG("ENTER _create_win"); + + Evas_Object *eo; + eo = elm_win_add(NULL, name, ELM_WIN_BASIC); + if (eo) { + elm_win_title_set(eo, name); + evas_object_smart_callback_add(eo, "delete,request", _win_del, NULL); + } + ICO_DBG("LEAVE _create_win"); + + return eo; +} + +static bool app_create(void *data) +{ + ICO_DBG("ENTER app_create"); + +#if 0 //TEST.s + int w, h; + + /* get display size */ + ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); + ICO_DBG("window size w=%d,h=%d", w, h); + + /* set app screen size */ + Width = w; + Height = h - STATUS_BAR_HEIGHT; +#else + Width = WIDTH; + Height = HEIGHT; +#endif //TEST.e + + W_mag = Width / WIDTH; + H_mag = Height / HEIGHT; + + ICO_DBG("Width =%f,Height=%f", Width, Height); + ICO_DBG("W_mag =%f,H_mag=%f", W_mag, H_mag); + + /* main widnow */ + Ad.win = _create_win(PACKAGE); + if (Ad.win == NULL) { + return FALSE; + } + evas_object_show(Ad.win); + + elm_win_indicator_mode_set(Ad.win, ELM_WIN_INDICATOR_SHOW); + elm_win_fullscreen_set(Ad.win, EINA_TRUE); + + Ad.bg = elm_bg_add(Ad.win); + elm_win_resize_object_add(Ad.win, Ad.bg); + evas_object_size_hint_weight_set(Ad.bg, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_bg_file_set(Ad.bg, BG_IMAGE_FILE, NULL); + evas_object_show(Ad.bg); + + evas_object_resize(Ad.win, Width, Height); + + /* set font size */ + (void)elm_config_font_overlay_set(TEXT_BUTTON, FONT_FAMILY, FONT_SIZE); + (void)elm_config_font_overlay_set(TEXT_LABEL, FONT_FAMILY, FONT_SIZE); + (void)elm_config_font_overlay_apply(); + + _winCreate(); + + ICO_DBG("LEAVE app_create"); + + return TRUE; /* EXIT_SUCCESS */ +} + +#if 0 +static int get_sound(int argc, char **argv) +{ + ICO_DBG("ENTER get_sound"); + + int getsound; bundle *b; const char *val; /* get resource control option */ b = bundle_import_from_argv(argc, argv); getsound = 0; - ssndtype[0] = 0; - if(b != NULL){ + SsndType[0] = 0; + if (b != NULL) { val = bundle_get_val(b, "rightoption"); - if (val != NULL) { + if (val != NULL) { if (strcasecmp(val, "-basesound") == 0) { getsound = 1; /* get base sound */ - strcpy(ssndtype, "BasecSound"); + strcpy(SsndType, "BaseSound"); } else if (strcasecmp(val, "-intsound") == 0) { getsound = 2; /* get interrupt sound */ - strcpy(ssndtype, "IntSound"); + strcpy(SsndType, "IntSound"); } else if (strncasecmp(val, "-int=", 5) == 0) { getsound = strtol(val + 5, (char **) 0, 0); getsound += 2; /* get interrupt sound */ - sprintf(ssndtype, "IntSound.%d", getsound - 2); + 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"); + ICO_DBG("ico_apf_ecore_init() Error"); ecore_evas_shutdown(); return -1; } @@ -732,110 +904,82 @@ int main(int argc, char *argv[]) ico_apf_resource_get_int_sound_mode(NULL, getsound - 2, 0); } } + ICO_DBG("LEAVE get_sound"); + return 0; +} +#endif - /* 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); +int main(int argc, char *argv[]) +{ +// char appid[ICO_UXF_MAX_PROCESS_NAME + 1]; + char appid[256]; + int pid; + app_event_callback_s event_callback; + int result = 0; + + /* Setting the log output */ +// if (ico_apf_get_app_id(0, appid) == ICO_APP_CTL_E_NONE) { +// ico_apf_log_open(appid); +// } + + /* Setting the log output */ + memset(appid, 0, sizeof(appid)); + pid = getpid(); + if (aul_app_get_appid_bypid(pid, appid, sizeof(appid)) == AUL_R_OK) { + ico_log_open(appid); } else { - snprintf(buf, sizeof(buf), "%s%s", "App name : ", - AudioConfig.app_name); + ico_log_open("org.tizen.ico.app-soundsample"); } - 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); + ICO_DBG("ENTER main"); - 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); + if (pipe(Filedes) == -1) { + ICO_DBG("Err pipe Filedes"); + return EXIT_FAILURE; } - 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]); + if (pipe(Filedes2) == -1) { + ICO_DBG("Err pipe Filedes2"); + return EXIT_FAILURE; + } - /* Callback function entry */ - evas_object_event_callback_add(button_figr[i], - EVAS_CALLBACK_MOUSE_DOWN, - (Evas_Object_Event_Cb) (ButtonFigr[i]. - func), - State_text); + if (read_config() == -1) { + ICO_DBG("Err Config Read NG"); + return EXIT_FAILURE; } - /* Drawing of the current time */ - time_text = evas_object_text_add(evas); - draw_text(time_text, &TimeText); + if (!ecore_evas_init()) { + return EXIT_FAILURE; + } - /* Timer callback function entry */ - ecore_timer_add(0.1, (Ecore_Task_Cb) (TimeText.func), time_text); + /* get argument */ +// if (get_sound(argc, argv) != 0) { +// ICO_DBG("Err get_sound"); +// return EXIT_FAILURE; +// } /* 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(); + /* set callback fanc */ + event_callback.create = app_create; + event_callback.terminate = app_terminate; + event_callback.pause = NULL; + event_callback.resume = NULL; + event_callback.service = NULL; + event_callback.low_memory = NULL; + event_callback.low_battery = NULL; + event_callback.device_orientation = NULL; + event_callback.language_changed = NULL; + event_callback.region_format_changed = NULL; + + memset(&Ad, 0x0, sizeof(struct appdata_t)); - ico_apf_ecore_term(); + result = app_efl_main(&argc, &argv, &event_callback, &Ad); - ecore_evas_free(ee); +// ico_apf_ecore_term(); ecore_evas_shutdown(); close(Filedes[0]); @@ -846,16 +990,9 @@ int main(int argc, char *argv[]) /* Process check */ if ((ChPid > 0) && (kill(ChPid, 0) != EOF)) { kill(ChPid, SIGKILL); - uim_debug("END Process ChPid = [%d]", ChPid); + ICO_DBG("END Process ChPid = [%d]", ChPid); } - uim_debug("main: Leave"); + ICO_DBG("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; + return result; } diff --git a/ico-app-soundsample/src/soundsample_pulse_async_test.cpp b/ico-app-soundsample/src/soundsample_pulse_async_test.cpp index a4cd7ba..4dfc0a0 100644 --- a/ico-app-soundsample/src/soundsample_pulse_async_test.cpp +++ b/ico-app-soundsample/src/soundsample_pulse_async_test.cpp @@ -22,17 +22,14 @@ #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 "ico_apf_log.h" #include "soundsample.h" +#include "ico_log.h" #define ICO_PA_STREAM_PAUSE (1) #define ICO_PA_STREAM_RESUME (0) @@ -66,46 +63,46 @@ 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"); + ICO_DBG("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); + ICO_DBG("buff :%s", buff); switch (atoi(buff)) { case STOP_REQ: - uim_debug("Stop directions reception"); + ICO_DBG("Stop directions reception"); ExitFlg = 1; break; case PAUSE_REQ: - uim_debug("Pause directions reception"); + ICO_DBG("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)"); + ICO_DBG("pa_stream_cork(PAUSE)"); sleep(2); - uim_debug("sleep end"); + ICO_DBG("sleep end"); } else { pa_stream_cork((pa_stream *) userdata, ICO_PA_STREAM_RESUME, NULL, NULL); - uim_debug("pa_stream_cork(RESUME)"); + ICO_DBG("pa_stream_cork(RESUME)"); sleep(2); - uim_debug("sleep end"); + ICO_DBG("sleep end"); } break; default: - uim_debug("Err Reception range outside"); + ICO_DBG("Err Reception range outside"); break; } - uim_debug("event_input_callback: Leave"); + ICO_DBG("event_input_callback: Leave"); } int pulse_main(struct audio_config_t *audio_config, int filedes) @@ -128,13 +125,12 @@ int pulse_main(struct audio_config_t *audio_config, int filedes) ExitFlg = 0; if (audio_config == NULL) { - uim_debug("Param Err"); + ICO_DBG("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."); + ICO_DBG("Cannot open wave file."); return -1; } @@ -152,11 +148,11 @@ int pulse_main(struct audio_config_t *audio_config, int filedes) 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()); + ICO_DBG("Before Resampling:"); + ICO_DBG("Bit per sample: %d", wavFile.BitPerSample()); + ICO_DBG("Stereo: %d", wavFile.Stereo()); + ICO_DBG("Playback Rate: %d", wavFile.PlayBackRate()); + ICO_DBG("Signed: %d", wavFile.IsSigned()); wavFile.ConvertTo16Bit(); wavFile.ConvertToSigned(); @@ -164,32 +160,30 @@ int pulse_main(struct audio_config_t *audio_config, int filedes) 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()); + ICO_DBG("After Resampling:"); + ICO_DBG("Bit per sample: %d", wavFile.BitPerSample()); + ICO_DBG("Stereo: %d", wavFile.Stereo()); + ICO_DBG("Playback Rate: %d", wavFile.PlayBackRate()); + ICO_DBG("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."); + ICO_DBG("Cannot create main loop."); return -1; } - uim_debug("pa_mainloop_new()"); + ICO_DBG("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."); + ICO_DBG("Cannot create context."); return -1; } - uim_debug("pa_context_new()"); + ICO_DBG("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()"); + ICO_DBG("pa_context_connect()"); YsPulseAudioWaitForConnectionEstablished(paContext, paMainLoop, 5); @@ -218,11 +212,10 @@ int pulse_main(struct audio_config_t *audio_config, int filedes) }; 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)); + ICO_DBG("pa_channel_map_init_auto()"); + ICO_DBG("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) { @@ -233,17 +226,16 @@ int pulse_main(struct audio_config_t *audio_config, int filedes) else { cvolume->values[i] = volume_set; } - uim_debug("volume[%d]_%d", i, cvolume->values[i]); + ICO_DBG("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"); + ICO_DBG("enter mainloop"); pa_stream *paStream; int loopcnt; static pa_io_event *stdio_event = NULL; @@ -251,55 +243,54 @@ int pulse_main(struct audio_config_t *audio_config, int filedes) paStream = pa_stream_new(paContext, stream_name, &ss, &cmap); if (NULL != paStream) { - uim_debug("Stream created! Getting there!"); + ICO_DBG("Stream created! Getting there!"); } else { - uim_debug("Stream created : NG"); + ICO_DBG("Stream created : NG"); ExitFlg = 1; } - uim_debug("pa_stream_new()"); + ICO_DBG("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()"); + ICO_DBG("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()"); + ICO_DBG("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); + ICO_DBG("TURN(%6d)_", loopcnt); switch (pa_stream_get_state(paStream)) { case PA_STREAM_UNCONNECTED: - uim_debug("PA_STREAM_UNCONNECTED"); + ICO_DBG("PA_STREAM_UNCONNECTED"); break; case PA_STREAM_CREATING: - uim_debug("PA_STREAM_CREATING"); + ICO_DBG("PA_STREAM_CREATING"); break; case PA_STREAM_READY: - uim_debug("PA_STREAM_READY"); + ICO_DBG("PA_STREAM_READY"); break; case PA_STREAM_FAILED: - uim_debug("PA_STREAM_FAILED"); + ICO_DBG("PA_STREAM_FAILED"); break; case PA_STREAM_TERMINATED: - uim_debug("PA_STREAM_TERMINATED"); + ICO_DBG("PA_STREAM_TERMINATED"); break; } } if (time(NULL) != prevT) { -/* uim_debug("Ping..."); */ prevT = time(NULL); } @@ -313,14 +304,14 @@ int pulse_main(struct audio_config_t *audio_config, int filedes) pa_stream_write(paStream, wavFile.DataPointer() + playBackPtr, writeSize, NULL, 0, PA_SEEK_RELATIVE); playBackPtr += writeSize; - uim_debug("pa_stream_write()_%d", (int) writeSize); + ICO_DBG("pa_stream_write()_%d", (int) writeSize); } } if ((wavFile.SizeInByte() <= playBackPtr) && (0 <= pa_stream_get_underflow_index(paStream)) && (YSTRUE == checkForUnderflow)) { - uim_debug + ICO_DBG ("Underflow detected. (Probably the playback is done.)"); playBackPtr = 0; #if REPEAT_FLG @@ -330,31 +321,30 @@ int pulse_main(struct audio_config_t *audio_config, int filedes) pa_mainloop_iterate(paMainLoop, 0, NULL); } - uim_debug("STREAM is END."); + ICO_DBG("STREAM is END."); pa_stream_disconnect(paStream); - uim_debug("pa_stream_disconnect()"); + ICO_DBG("pa_stream_disconnect()"); pa_stream_unref(paStream); - uim_debug("pa_stream_unref()"); -// sleep(1); + ICO_DBG("pa_stream_unref()"); - uim_debug("leave mainloop"); + ICO_DBG("leave mainloop"); if (NULL != cvolume) { free(cvolume); } pa_context_disconnect(paContext); - uim_debug("pa_context_disconnect()"); + ICO_DBG("pa_context_disconnect()"); pa_context_unref(paContext); - uim_debug("pa_context_unref()"); + ICO_DBG("pa_context_unref()"); pa_mainloop_free(paMainLoop); - uim_debug("pa_mainloop_free()"); + ICO_DBG("pa_mainloop_free()"); - uim_debug("The End"); + ICO_DBG("The End"); return 0; } diff --git a/ico-app-soundsample/src/soundsample_yswavfile.cpp b/ico-app-soundsample/src/soundsample_yswavfile.cpp index 36a7d5d..f5b2489 100644 --- a/ico-app-soundsample/src/soundsample_yswavfile.cpp +++ b/ico-app-soundsample/src/soundsample_yswavfile.cpp @@ -17,9 +17,8 @@ #include <string.h> #include <math.h> #include "soundsample_yswavfile.h" - -//#include "app_log.h" -#include "ico_apf_log.h" +//#include "ico_apf_log.h" +#include "ico_log.h" YsWavFile::YsWavFile() { @@ -115,7 +114,7 @@ YSRESULT YsWavFile::LoadWav(const char fn[]) { FILE *fp; - uim_debug("Loading %s", fn); + ICO_DBG("Loading %s", fn); fp = fopen(fn, "rb"); if (fp != NULL) { @@ -130,36 +129,36 @@ YSRESULT YsWavFile::LoadWav(const char fn[]) if (fread(buf, 1, 4, fp) != 4) { - uim_debug("Error in reading RIFF."); + ICO_DBG("Error in reading RIFF."); goto ERREND; } if (strncmp((char *) buf, "RIFF", 4) != 0) { - uim_debug("Warning: RIFF not found."); + ICO_DBG("Warning: RIFF not found."); } if (fread(buf, 1, 4, fp) != 4) { - uim_debug("Error in reading file size."); + ICO_DBG("Error in reading file size."); goto ERREND; } fSize = GetUnsigned(buf); - uim_debug("File Size=%d", fSize + 8); + ICO_DBG("File Size=%d", fSize + 8); if (fread(buf, 1, 8, fp) != 8) { - uim_debug("Error in reading WAVEfmt."); + ICO_DBG("Error in reading WAVEfmt."); goto ERREND; } if (strncmp((char *) buf, "WAVEfmt", 7) != 0) { - uim_debug("Warning: WAVEfmt not found"); + ICO_DBG("Warning: WAVEfmt not found"); } if (fread(buf, 1, 4, fp) != 4) { - uim_debug("Error in reading header size."); + ICO_DBG("Error in reading header size."); goto ERREND; } hdrSize = GetUnsigned(buf); - uim_debug("Header Size=%d", hdrSize); + ICO_DBG("Header Size=%d", hdrSize); // WORD wFormatTag; @@ -170,7 +169,7 @@ YSRESULT YsWavFile::LoadWav(const char fn[]) // WORD wBitsPerSample; // WORD cbSize; if (fread(buf, 1, hdrSize, fp) != hdrSize) { - uim_debug("Error in reading header."); + ICO_DBG("Error in reading header."); goto ERREND; } wFormatTag = GetUnsignedShort(buf); @@ -181,19 +180,19 @@ YSRESULT YsWavFile::LoadWav(const char fn[]) 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); + ICO_DBG("wFormatTag=%d", wFormatTag); + ICO_DBG("nChannels=%d", nChannels); + ICO_DBG("nSamplesPerSec=%d", nSamplesPerSec); + ICO_DBG("nAvgBytesPerSec=%d", nAvgBytesPerSec); + ICO_DBG("nBlockAlign=%d", nBlockAlign); + ICO_DBG("wBitsPerSample=%d", wBitsPerSample); + ICO_DBG("cbSize=%d", cbSize); while (1) { if (fread(buf, 1, 4, fp) != 4) { - uim_debug("Error while waiting for data."); + ICO_DBG("Error while waiting for data."); goto ERREND; } @@ -204,10 +203,10 @@ YSRESULT YsWavFile::LoadWav(const char fn[]) break; } else { - uim_debug("Skipping %c%c%c%c", buf[0], buf[1], buf[2], + ICO_DBG("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."); + ICO_DBG("Error while skipping unknown block."); goto ERREND; } @@ -215,7 +214,7 @@ YSRESULT YsWavFile::LoadWav(const char fn[]) l = GetUnsigned(buf); if (fread(buf, 1, l, fp) != l) { - uim_debug("Error while skipping unknown block."); + ICO_DBG("Error while skipping unknown block."); goto ERREND; } } @@ -223,16 +222,16 @@ YSRESULT YsWavFile::LoadWav(const char fn[]) if (fread(buf, 1, 4, fp) != 4) { - uim_debug("Error in reading data size."); + ICO_DBG("Error in reading data size."); goto ERREND; } dataSize = GetUnsigned(buf); - uim_debug("Data Size=%d (0x%x)", dataSize, dataSize); + ICO_DBG("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); + ICO_DBG("Warning: File ended before reading all data."); + ICO_DBG(" %d (0x%x) bytes have been read", l, l); } stereo = (nChannels == 2 ? YSTRUE : YSFALSE); @@ -253,7 +252,7 @@ YSRESULT YsWavFile::LoadWav(const char fn[]) return YSERR; ERREND: - uim_debug("Err!"); + ICO_DBG("Err!"); if (fp != NULL) { fclose(fp); } @@ -269,7 +268,6 @@ YSRESULT YsWavFile::ConvertTo16Bit(void) 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]; @@ -292,7 +290,6 @@ YSRESULT YsWavFile::ConvertTo8Bit(void) } 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]; } @@ -315,7 +312,6 @@ YSRESULT YsWavFile::ConvertToStereo(void) 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]; @@ -330,7 +326,6 @@ YSRESULT YsWavFile::ConvertToStereo(void) } 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]; @@ -349,7 +344,6 @@ YSRESULT YsWavFile::ConvertToStereo(void) return YSERR; } -//YSRESULT YsWavFile::Resample(int newRate) YSRESULT YsWavFile::Resample(unsigned int newRate) { if (rate != newRate) { @@ -480,13 +474,11 @@ YSRESULT YsWavFile::ConvertToSigned(void) } 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; @@ -507,13 +499,11 @@ YSRESULT YsWavFile::ConvertToUnsigned(void) } 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) { @@ -529,13 +519,6 @@ YSRESULT YsWavFile::ConvertToUnsigned(void) 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); diff --git a/ico-app-soundsample/src/soundsample_yswavfile.h b/ico-app-soundsample/src/soundsample_yswavfile.h index 05262da..69693ab 100644 --- a/ico-app-soundsample/src/soundsample_yswavfile.h +++ b/ico-app-soundsample/src/soundsample_yswavfile.h @@ -72,7 +72,6 @@ class YsWavFile YSRESULT ConvertTo8Bit(void); YSRESULT ConvertToStereo(void); YSRESULT ConvertToMono(void); -// YSRESULT Resample(int newRate); YSRESULT Resample(unsigned int newRate); YSRESULT ConvertToSigned(void); diff --git a/ico-app-vicsample/org.tizen.ico.app-vicsample.desktop b/ico-app-vicsample/org.tizen.ico.app-vicsample.desktop deleted file mode 100644 index 8fab6d7..0000000 --- a/ico-app-vicsample/org.tizen.ico.app-vicsample.desktop +++ /dev/null @@ -1,9 +0,0 @@ -Name=ico-app-vicsample -Type=Application -Exec=/opt/apps/org.tizen.ico.app-vicsample/bin/ico-app-vicsample rightoption -basescreen -Icon=org.tizen.ico.app-vicsample.png -NoDisplay=false -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/ico-app-vicsample/org.tizen.ico.app-vicsample.xml b/ico-app-vicsample/org.tizen.ico.app-vicsample.xml new file mode 100644 index 0000000..6a2f4e0 --- /dev/null +++ b/ico-app-vicsample/org.tizen.ico.app-vicsample.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.ico.app-vicsample" version="0.0.12" install-location="internal-only"> + <label>ico-app-vicsample</label> + <description>IVI StatusBar Application</description> + <ui-application appid="org.tizen.ico.app-vicsample" exec="/usr/apps/org.tizen.ico.app-vicsample/bin/ico-app-vicsample rightoption -basescreen" nodisplay="false" multiple="false" type="capp" taskmanage="true"> + <icon>org.tizen.ico.app-vicsample.png</icon> + <label>ico-app-vicsample</label> + <label xml:lang="en-gb">ico-app-vicsample</label> + <label xml:lang="en-us">ico-app-vicsample</label> + </ui-application> +</manifest> diff --git a/ico-app-vicsample/src/Makefile.am b/ico-app-vicsample/src/Makefile.am index 1383e83..6590384 100644 --- a/ico-app-vicsample/src/Makefile.am +++ b/ico-app-vicsample/src/Makefile.am @@ -1,8 +1,8 @@ ##ico-app-vicsample -app_vicsample_bindir = /opt/apps/org.tizen.ico.app-vicsample/bin +app_vicsample_bindir = /usr/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 -lbundle -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_vicsample_LDADD = -L/usr/lib -lico-util -lico-uxf-weston-plugin -lcapi-appfw-application -laul -lwebsockets -lecore_evas -lecore -leina -levas -lrt -lecore_wayland -lelementary -lm -leet -lecore_file -ledje -lecore_imf -lecore_con -ldbus-1 -lpthread -lbundle +ico_app_vicsample_CFLAGS = -Wall -I. -I../../common/include -I/usr/include/aul -I/usr/include/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/eet-1 -I/usr/include/edje-1 -I/usr/include/e_dbus-1 -I/usr/include/efreet-1 -I/usr/include/ethumb-1 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/ico-util diff --git a/ico-app-vicsample/src/vicsample.c b/ico-app-vicsample/src/vicsample.c index 21bf680..6a0ea10 100644 --- a/ico-app-vicsample/src/vicsample.c +++ b/ico-app-vicsample/src/vicsample.c @@ -21,75 +21,63 @@ #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 <Elementary.h> +//#include <Ecore_X.h> +#include <app.h> +#include <dbus/dbus.h> +#include <string.h> +#include <stdbool.h> #include <bundle.h> -//#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 +//#include "ico_apf.h" +//#include "ico_apf_ecore.h" +//#include "ico_apf_log.h" +#include <aul.h> +#include "ico_log.h" /*============================================================================*/ /* Define fixed parameters */ /*============================================================================*/ -#define WIDTH (700) /* Background width */ -#define HEIGHT (934) /* Background height */ +#define STATUS_BAR_HEIGHT (64) +#define CTRL_BAR_HEIGHT (128) +#define WIDTH (1080) /* Base Background width */ +#define HEIGHT (1920 - STATUS_BAR_HEIGHT - CTRL_BAR_HEIGHT) /* Base Background height */ + +/* Base */ +#define SCRN_TYPE_W 800 +#define SCRN_TYPE_H 20 +#define CTG_BX_W 530 +#define CTG_BX_H 250 +//#define VIC_LI_W 1000 +#define VIC_LI_W 1060 +//#define VIC_LI_H 700 +#define VIC_LI_H 1050 +#define GET_BTN_W 800 +#define GET_BTN_H 160 + +#define SCRN_TYPE_X 20 +#define SCRN_TYPE_Y 20 +#define CTG_BX_X 10 +#define CTG_BX_Y 40 +//#define VIC_LI_X 900 +//#define VIC_LI_Y 40 +#define VIC_LI_X 10 +//#define VIC_LI_Y 800 +#define VIC_LI_Y 450 +//#define GET_BTN_X 1000 +//#define GET_BTN_Y 800 +#define GET_BTN_X 140 +#define GET_BTN_Y 1530 + +/* font */ +#define FONT_SIZE 48 +#define FONT_FAMILY (char *)"Sans" // Mono, Sans, Serif + +/* Text class name */ +#define TEXT_BUTTON (char *)"button" +#define TEXT_LIST_ITEM (char *)"list_item" +#define TEXT_LABEL (char *)"label" /* Count vehicle information */ static int property_num = 0; @@ -98,21 +86,37 @@ static int property_num = 0; #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 +#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 WHEELBRAKEPRESSURE 10 +#define LEFTTURN 11 +#define RIGHTTURN 12 +#define BRAKESIGNAL 13 +#define ACCELERATIONY 14 +#define ACCELERATIONZ 15 +#define EXTERIORBRIGHTNESS 16 + +/* maximum categories */ +#define PACKAG "ico-app-vicsample" +#define MAX_CATEGORY_NUM 8 + +/* vehicle information Parameter Category */ +#define DRIVINGSAFETY 0 +#define ELECTRICVEHICLE 1 +#define ENVIRONMENT 2 +#define MAINTENANCE 3 +#define PARKING 4 +#define PERSONALIZATION 5 +#define RUNNINGSTATUS 6 +#define VEHICLEINFO 7 /* Definition for use with D-Bus */ #define DBUS_SERVICE "org.automotive.message.broker" @@ -120,33 +124,8 @@ static int property_num = 0; #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 CONFIG_FILE "/usr/apps/org.tizen.ico.app-vicsample/res/vicsample_config.txt" +#define BG_IMAGE_FILE "/usr/apps/org.tizen.ico.app-vicsample/res/images/vicinfo_bg.png" /*============================================================================*/ /* Define data types */ /*============================================================================*/ @@ -165,6 +144,7 @@ union VicVal_t struct vic_data_t { int property; + int category; char name[32]; char path_name[64]; char interface_name[64]; @@ -174,19 +154,40 @@ struct vic_data_t struct vic_key_data_t { int id; + int category; + char name[32]; +}; + +struct vic_category_data_t +{ + int category; char name[32]; }; +struct appdata_t +{ + Evas_Object *win; //main window + Evas_Object *bg; + + Evas_Object *scrn_type; + Evas_Object *ctg_bx; + Evas_Object *ctg_bx2; + Evas_Object *ctg_btn[MAX_CATEGORY_NUM]; + Evas_Object *vic_ini_li; + Evas_Object *vic_li[MAX_CATEGORY_NUM]; + Evas_Object *vic_val_text[MAX_PARA_NUM]; + Evas_Object *vic_val_dmy_text[MAX_CATEGORY_NUM]; + Evas_Object *get_btn; +}; /*============================================================================*/ /* 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 double Width = 0; /* Background width */ +static double Height = 0; /* Background height */ static void drawVehicleInfo(void); -static void _on_mousedown(void *data, Evas *evas, Evas_Object *o, - void *einfo); +static void _on_mousedown(void *data, Evas_Object *obj, void *event_info); +static void _on_ctg_mousedown(void *data, Evas_Object *obj, + void *event_info); static int getVehicleInfo(int key, union VicVal_t *vic_val_p); static bool parse_elementary_value(union VicVal_t *vic_val_p, DBusMessageIter *iter); @@ -199,121 +200,55 @@ static bool parse_dict_entry(union VicVal_t *vic_val_p, 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); +static int get_config(void); +static void _winCreate(void); +static void elmListCreate(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"} +static DBusConnection *g_connection = NULL; +static struct appdata_t Ad; +static char SscrnType[32]; +static int ListDispSts = -1; + +const struct vic_category_data_t vic_category_data[MAX_CATEGORY_NUM] = { + {DRIVINGSAFETY, "Driving safety"}, + {ELECTRICVEHICLE, "Electric Vehicle"}, + {ENVIRONMENT, "Environment"}, + {MAINTENANCE, "Maintenance"}, + {PARKING, "Parking"}, + {PERSONALIZATION, "Personalization"}, + {RUNNINGSTATUS, "Running Status"}, + {VEHICLEINFO, "Vehicle Info"} }; -/* 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 +const struct vic_key_data_t vic_key_data[] = { + {VEHICLESPEED, RUNNINGSTATUS, "VehicleSpeed"}, + {ACCELERATIONX, RUNNINGSTATUS, "AccelerationX"}, + {SHIFTPOSITION, RUNNINGSTATUS, "ShiftPosition"}, + {ENGINESPEED, RUNNINGSTATUS, "EngineSpeed"}, + {LATITUDE, RUNNINGSTATUS, "Latitude"}, + {ALTITUDE, RUNNINGSTATUS, "Altitude"}, + {GEARPOSITION, RUNNINGSTATUS, "GearPosition"}, + {LONGITUDE, RUNNINGSTATUS, "Longitude"}, + {MODE, RUNNINGSTATUS, "Mode"}, + {DIRECTION, RUNNINGSTATUS, "Direction"}, + {WHEELBRAKEPRESSURE, RUNNINGSTATUS, "WheelBrakePressure"}, + {LEFTTURN, RUNNINGSTATUS, "LeftTurn"}, + {RIGHTTURN, RUNNINGSTATUS, "RightTurn"}, + {BRAKESIGNAL, RUNNINGSTATUS, "BrakeSignal"}, + {ACCELERATIONY, RUNNINGSTATUS, "AccelerationY"}, + {ACCELERATIONZ, RUNNINGSTATUS, "AccelerationZ"}, + {EXTERIORBRIGHTNESS, ENVIRONMENT, "ExteriorBrightness"}, + {-1, -1, "END"} }; -//#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; -} - +/*============================================================================*/ +/* Function */ +/*============================================================================*/ static void drawVehicleInfo() { union VicVal_t vic_val[32]; @@ -323,143 +258,124 @@ static void drawVehicleInfo() for (i = 0; i < property_num; i++) { result = getVehicleInfo(i, vic_val); + memset(vic_str, 0x00, sizeof(vic_str)); if (result != 0) { - uim_debug("Err getVehicleInfo : %s", vic_data[i].name); + ICO_DBG("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; - + ICO_DBG("%s(D-bus I/F Result) = %d", vic_data[i].name, + 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); -// } - + elm_object_text_set(Ad.vic_val_text[i], vic_str); 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; - + case ACCELERATIONZ: + ICO_DBG("%s(D-bus I/F Result) = %d", vic_data[i].name, + 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); -// } - + elm_object_text_set(Ad.vic_val_text[i], vic_str); 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; - + ICO_DBG("%s(D-bus I/F Result) = %d", vic_data[i].name, + 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); -// } - + elm_object_text_set(Ad.vic_val_text[i], vic_str); 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; + case WHEELBRAKEPRESSURE: + case ACCELERATIONY: + ICO_DBG("%s(D-bus I/F Result) = %d", vic_data[i].name, + 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); + elm_object_text_set(Ad.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; + ICO_DBG("%s(D-bus I/F Result) = %f", vic_data[i].name, + 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); + elm_object_text_set(Ad.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; + case EXTERIORBRIGHTNESS: + ICO_DBG("%s(D-bus I/F Result) = %d", vic_data[i].name, + 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); + elm_object_text_set(Ad.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; + ICO_DBG("%s(D-bus I/F Result) = %d", vic_data[i].name, + 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); + elm_object_text_set(Ad.vic_val_text[i], vic_str); break; default: - uim_debug("Err no property : %s\n", vic_data[i].name); + ICO_DBG("Err no property : %s\n", vic_data[i].name); break; } } return; } -static void _on_mousedown(void *data, Evas *evas, Evas_Object *o, - void *einfo) +static void _on_mousedown(void *data, Evas_Object *obj, void *event_info) { drawVehicleInfo(); return; } +static void _on_ctg_mousedown(void *data, Evas_Object *obj, void *event_info) +{ + int category = -1; + if (data != NULL) { + category = *((int *) data); + } + + if ((category != -1) && (category != ListDispSts)) { + if (ListDispSts != -1) { + evas_object_color_set(Ad.ctg_btn[ListDispSts], 255, 255, 255, + 255); + evas_object_hide(Ad.vic_li[ListDispSts]); + } + else { + evas_object_hide(Ad.vic_ini_li); + elm_list_clear(Ad.vic_ini_li); + } + evas_object_color_set(Ad.ctg_btn[category], 0, 255, 255, 255); + + elm_list_go(Ad.vic_li[category]); + evas_object_show(Ad.vic_li[category]); + + ListDispSts = category; + + } + return; +} + /* Get the vehicle information than AMB */ -DBusConnection *g_connection = NULL; static int getVehicleInfo(int key, union VicVal_t *vic_val_p) { /* local variable */ @@ -484,11 +400,11 @@ static int getVehicleInfo(int key, union VicVal_t *vic_val_p) g_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); if (g_connection == NULL) { - uim_debug("Err dbus_bus_get"); + ICO_DBG("Err dbus_bus_get"); - /* Release err parameter */ + /* Release err parameter */ dbus_error_free(&error); - return -1; + return -1; } } /* Constructs a new message */ @@ -496,7 +412,7 @@ static int getVehicleInfo(int key, union VicVal_t *vic_val_p) vic_data[key].path_name, DBUS_INTERFACE, DBUS_METHOD); if (message == NULL) { - uim_debug("Err dbus_message_new_method_call"); + ICO_DBG("Err dbus_message_new_method_call"); /* Release the connection */ dbus_connection_unref(g_connection); @@ -511,7 +427,7 @@ static int getVehicleInfo(int key, union VicVal_t *vic_val_p) DBUS_TYPE_STRING, &v_string[1], DBUS_TYPE_INVALID); if (!result) { - uim_debug("Err dbus_message_append_args"); + ICO_DBG("Err dbus_message_append_args"); /* Release the connection */ dbus_connection_unref(g_connection); @@ -524,7 +440,7 @@ static int getVehicleInfo(int key, union VicVal_t *vic_val_p) /* Gets the error name */ if ((dest) && (!dbus_message_set_destination(message, dest))) { - uim_debug("Err dbus_message_new_method_call"); + ICO_DBG("Err dbus_message_new_method_call"); /* Release the connection */ dbus_connection_unref(g_connection); @@ -541,7 +457,7 @@ static int getVehicleInfo(int key, union VicVal_t *vic_val_p) message, reply_timeout, &error); if (reply == NULL) { - uim_debug("Err dbus_connection_send_with_reply_and_block"); + ICO_DBG("Err dbus_connection_send_with_reply_and_block"); /* Release the connection */ dbus_connection_unref(g_connection); @@ -550,7 +466,7 @@ static int getVehicleInfo(int key, union VicVal_t *vic_val_p) /* Release the message */ dbus_message_unref(message); - /* Release err parameter */ + /* Release err parameter */ dbus_error_free(&error); return -1; @@ -566,7 +482,7 @@ static int getVehicleInfo(int key, union VicVal_t *vic_val_p) result = parse_value(tmp_vic_val_p, &iter_array); //TEST if (result != TRUE) { - uim_debug("Err parse_elementary_value"); + ICO_DBG("Err parse_elementary_value"); /* Release the connection */ dbus_connection_unref(g_connection); @@ -603,7 +519,7 @@ static bool parse_elementary_value(union VicVal_t *vic_val_p, char sig; if ((vic_val_p == NULL) || (iter == NULL)) { - uim_debug("Err Parameter NG "); + ICO_DBG("Err Parameter NG "); return FALSE; } @@ -649,7 +565,7 @@ static bool parse_elementary_value(union VicVal_t *vic_val_p, 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"); + ICO_DBG("Err malloc"); return FALSE; } strncpy(w_s_val, s_val, strlen(s_val)); @@ -658,7 +574,7 @@ static bool parse_elementary_value(union VicVal_t *vic_val_p, // vic_val_p->s_val = s_val; break; default: - uim_debug("Err parse_elementary_value: unknown type"); + ICO_DBG("Err parse_elementary_value: unknown type"); return FALSE; } @@ -670,7 +586,7 @@ 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 "); + ICO_DBG("Err Parameter NG "); return FALSE; } @@ -707,7 +623,7 @@ static bool parse_array(union VicVal_t *vic_val_p, DBusMessageIter *iter) int element_type; if ((vic_val_p == NULL) || (iter == NULL)) { - uim_debug("Err Parameter NG "); + ICO_DBG("Err Parameter NG "); return FALSE; } @@ -753,7 +669,7 @@ static bool parse_dict_entry(union VicVal_t *vic_val_p, DBusMessageIter new_iter; if ((vic_val_p == NULL) || (iter == NULL)) { - uim_debug("Err Parameter NG "); + ICO_DBG("Err Parameter NG "); return FALSE; } @@ -781,7 +697,7 @@ 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 "); + ICO_DBG("Err Parameter NG "); return FALSE; } @@ -808,6 +724,7 @@ static bool parse_struct(union VicVal_t *vic_val_p, DBusMessageIter *iter) /* Read configuration file */ static int get_config(void) { + ICO_DBG("ENTER get_config"); FILE *fp; int k = 0; @@ -818,7 +735,7 @@ static int get_config(void) fp = fopen(CONFIG_FILE, "r"); if (fp == NULL) { - uim_debug("File open error"); + ICO_DBG("File open error"); return -1; } @@ -830,46 +747,49 @@ static int get_config(void) 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; + vic_data[k].category = vic_key_data[j].category; 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); + ICO_DBG("vic_data[%d].property=%d", k, + vic_data[k].property); + ICO_DBG("vic_data[%d].name=%s", k, + vic_data[k].name); + ICO_DBG("vic_data[%d].path_name=%s", k, + vic_data[k].path_name); + ICO_DBG("vic_data[%d].interface_name=%s", k, + vic_data[k].interface_name); + ICO_DBG("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); + ICO_DBG + ("Err vicsample_config.txt Line:%d Unregistered" + " parameter name", m + 1); } } else { - uim_debug + ICO_DBG ("vicsample_config.txt Line:%d Comment out '#'Discovery", m + 1); } } else { - uim_debug("vicsample_config.txt Line:%d Comment out Null line", - m + 1); + ICO_DBG + ("vicsample_config.txt Line:%d Comment out Null line", + m + 1); } } else { - uim_debug("vicsample_config.txt The end of data reading"); + ICO_DBG("vicsample_config.txt The end of data reading"); break; } } @@ -877,20 +797,22 @@ static int get_config(void) property_num = k; if (property_num == 0) { - uim_debug("vicsample_config.txt No valid data"); + ICO_DBG("vicsample_config.txt No valid data"); return -1; } + + ICO_DBG("LEAVE get_config"); return 0; } - +#if 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); + ICO_DBG("##==> 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: @@ -900,20 +822,20 @@ static void res_callback(ico_apf_resource_notify_info_t *info, 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); + ICO_DBG("##==> 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); + ICO_DBG("##==> 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); + ICO_DBG("##==> callback reply screen(%s,%d,1) = %d", + info->device, info->id, ret); } break; default: @@ -921,59 +843,331 @@ static void res_callback(ico_apf_resource_notify_info_t *info, break; } } +#endif +/** + * @breif _winCreate + */ +static void _winCreate(void) +{ + ICO_DBG("ENTER _winCreate"); -int main(int argc, char *argv[]) + int i; + double w_mag; + double h_mag; + + if (NULL == Ad.win) { + ICO_DBG("Err Param NG"); + return; + } + + w_mag = Width / WIDTH; + h_mag = Height / HEIGHT; + ICO_DBG("Width =%f,Height=%f", Width, Height); + ICO_DBG("w_mag =%f,h_magh=%f", w_mag, h_mag); + + Ad.scrn_type = elm_label_add(Ad.win); + elm_object_text_set(Ad.scrn_type, SscrnType); + evas_object_resize(Ad.scrn_type, SCRN_TYPE_W * w_mag, + SCRN_TYPE_H * h_mag); + evas_object_move(Ad.scrn_type, SCRN_TYPE_X * w_mag, SCRN_TYPE_Y * h_mag); + evas_object_show(Ad.scrn_type); + + Ad.ctg_bx = elm_box_add(Ad.win); + evas_object_resize(Ad.ctg_bx, CTG_BX_W * w_mag, CTG_BX_H * h_mag); + evas_object_move(Ad.ctg_bx, CTG_BX_X * w_mag, CTG_BX_Y * h_mag); + evas_object_show(Ad.ctg_bx); + + Ad.ctg_bx2 = elm_box_add(Ad.win); + evas_object_resize(Ad.ctg_bx2, CTG_BX_W * w_mag , CTG_BX_H * h_mag); + evas_object_move(Ad.ctg_bx2, (CTG_BX_X + CTG_BX_W) * w_mag, CTG_BX_Y * h_mag); + evas_object_show(Ad.ctg_bx2); + + for (i = 0; i < MAX_CATEGORY_NUM; i++) { + /* category buttn create */ + Ad.ctg_btn[i] = elm_button_add(Ad.win); + elm_object_text_set(Ad.ctg_btn[i], vic_category_data[i].name); + if (i < (MAX_CATEGORY_NUM / 2)) { + elm_box_pack_end(Ad.ctg_bx, Ad.ctg_btn[i]); + } + else { + elm_box_pack_end(Ad.ctg_bx2, Ad.ctg_btn[i]); + } + + /* The present category to support "Running Status" "Eenvironment" */ + if ((vic_category_data[i].category == RUNNINGSTATUS) + || (vic_category_data[i].category == ENVIRONMENT)) { + evas_object_smart_callback_add(Ad.ctg_btn[i], "clicked", + _on_ctg_mousedown, + &(vic_category_data[i].category)); + } + else { + /* Unsupported Grayout */ + evas_object_color_set(Ad.ctg_btn[i], 128, 128, 128, 255); + } + + evas_object_size_hint_weight_set(Ad.ctg_btn[i], EVAS_HINT_EXPAND, 0); + evas_object_size_hint_align_set(Ad.ctg_btn[i], EVAS_HINT_FILL, 0); + evas_object_show(Ad.ctg_btn[i]); + + /* list create */ + Ad.vic_li[i] = elm_list_add(Ad.win); + elm_list_select_mode_set(Ad.vic_li[i], ELM_OBJECT_SELECT_MODE_NONE); + evas_object_resize(Ad.vic_li[i], VIC_LI_W * w_mag, VIC_LI_H * h_mag); + evas_object_move(Ad.vic_li[i], VIC_LI_X * w_mag, VIC_LI_Y * h_mag); + } + + /* Initial list display */ + Ad.vic_ini_li = elm_list_add(Ad.win); + elm_list_select_mode_set(Ad.vic_ini_li, ELM_OBJECT_SELECT_MODE_NONE); + evas_object_resize(Ad.vic_ini_li, VIC_LI_W * w_mag, VIC_LI_H * h_mag); + evas_object_move(Ad.vic_ini_li, VIC_LI_X * w_mag, VIC_LI_Y * h_mag); + elm_list_item_append(Ad.vic_ini_li, NULL, NULL, NULL, NULL, NULL); + elm_list_go(Ad.vic_ini_li); + evas_object_show(Ad.vic_ini_li); + + Ad.get_btn = elm_button_add(Ad.win); + elm_object_text_set(Ad.get_btn, "Get VehicleInfo"); + evas_object_smart_callback_add(Ad.get_btn, "clicked", _on_mousedown, + NULL); + evas_object_resize(Ad.get_btn, GET_BTN_W * w_mag, GET_BTN_H * h_mag); + evas_object_move(Ad.get_btn, GET_BTN_X * w_mag, GET_BTN_Y * h_mag); + evas_object_show(Ad.get_btn); + + ICO_DBG("LEAVE _winCreate"); + return; +} + +/** + * @brief elmListCreate + */ +static void elmListCreate(void) { + ICO_DBG("ENTER elmListCreate"); + int i; + + if (NULL == Ad.win) { + ICO_DBG("Err Param NG"); + return; + } + + for (i = 0; vic_key_data[i].id != -1 && i < MAX_PARA_NUM; i++) { + Ad.vic_val_text[i] = elm_label_add(Ad.win); + elm_list_item_append(Ad.vic_li[vic_data[i].category], + vic_data[i].name, NULL, Ad.vic_val_text[i], NULL, + NULL); + } + + /* dummy set */ + for (i = 0; i < MAX_CATEGORY_NUM; i++) { + Ad.vic_val_dmy_text[i] = elm_label_add(Ad.win); + elm_list_item_append(Ad.vic_li[i], NULL, NULL, NULL, NULL, NULL); + } + + ICO_DBG("LEAVE elmListCreate"); + return; +} + +/** + * @brief app_terminate + */ +static void app_terminate(void *data) +{ + ICO_DBG("ENTER app_terminate"); + // Release all resources + int i; + + if (Ad.win) { + evas_object_del(Ad.win); + Ad.win = NULL; + } + + if (Ad.bg) { + evas_object_del(Ad.bg); + Ad.bg = NULL; + } + + if (Ad.scrn_type) { + evas_object_del(Ad.scrn_type); + Ad.scrn_type = NULL; + } + + if (Ad.ctg_bx) { + evas_object_del(Ad.ctg_bx); + Ad.ctg_bx = NULL; + } + + if (Ad.ctg_bx2) { + evas_object_del(Ad.ctg_bx2); + Ad.ctg_bx2 = NULL; + } + + for (i = 0; i < MAX_CATEGORY_NUM; i++) { + if (Ad.ctg_btn[i]) { + evas_object_del(Ad.ctg_btn[i]); + Ad.ctg_btn[i] = NULL; + } + + if (Ad.vic_li[i]) { + evas_object_del(Ad.vic_li[i]); + Ad.vic_li[i] = NULL; + } + + if (Ad.vic_val_dmy_text[i]) { + evas_object_del(Ad.vic_val_dmy_text[i]); + Ad.vic_val_dmy_text[i] = NULL; + } + } + + if (Ad.vic_ini_li) { + evas_object_del(Ad.vic_ini_li); + Ad.vic_ini_li = NULL; + } + + for (i = 0; i < MAX_PARA_NUM; i++) { + if (Ad.vic_val_text[i]) { + evas_object_del(Ad.vic_val_text[i]); + Ad.vic_val_text[i] = NULL; + } + } + + if (Ad.get_btn) { + evas_object_del(Ad.get_btn); + Ad.get_btn = NULL; + } + ICO_DBG("LEAVE app_terminate"); + return; +} + +/** + * @brief _win_del + */ +static void _win_del(void *data, Evas_Object *obj, void *event_info) +{ + ICO_DBG("ENTER _win_del"); + + elm_exit(); + + ICO_DBG("LEAVE _win_del"); + return; +} + +/** + * @brief _create_win + */ +static Evas_Object *_create_win(const char *name) +{ + ICO_DBG("ENTER _create_win"); + + Evas_Object *eo; +// int w, h; + eo = elm_win_add(NULL, name, ELM_WIN_BASIC); + if (eo) { + elm_win_title_set(eo, name); + evas_object_smart_callback_add(eo, "delete,request", _win_del, NULL); +// ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, +// &h); +// ICO_DBG("window size w=%d,h=%d",w,h); +// evas_object_resize(eo, w, h - STATUS_BAR_HEIGHT); + } + ICO_DBG("LEAVE _create_win"); + + return eo; +} + +/** + * @brief app_create + */ +static bool app_create(void *data) +{ + ICO_DBG("ENTER app_create"); + +#if 0 //TEST.s + int w, h; + + /* get display size */ + ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); + ICO_DBG("window size w=%d,h=%d", w, h); + + /* set app screen size */ + Width = w; + Height = h - STATUS_BAR_HEIGHT; +#else + Width = WIDTH; + Height = HEIGHT; +#endif //TEST.e + + /* main widnow */ + Ad.win = _create_win(PACKAGE); + if (Ad.win == NULL) { + return FALSE; + } + evas_object_show(Ad.win); + + elm_win_indicator_mode_set(Ad.win, ELM_WIN_INDICATOR_SHOW); + elm_win_fullscreen_set(Ad.win, EINA_TRUE); + + Ad.bg = elm_bg_add(Ad.win); + elm_win_resize_object_add(Ad.win, Ad.bg); + evas_object_size_hint_weight_set(Ad.bg, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_bg_file_set(Ad.bg, BG_IMAGE_FILE, NULL); + evas_object_show(Ad.bg); + + evas_object_resize(Ad.win, Width, Height); + + /* set font size */ + (void)elm_config_font_overlay_set(TEXT_LIST_ITEM, FONT_FAMILY, FONT_SIZE); + (void)elm_config_font_overlay_set(TEXT_BUTTON, FONT_FAMILY, FONT_SIZE); + (void)elm_config_font_overlay_set(TEXT_LABEL, FONT_FAMILY, FONT_SIZE); + (void)elm_config_font_overlay_apply(); + + _winCreate(); + + elmListCreate(); + + ICO_DBG("LEAVE app_create"); + + return TRUE; /* EXIT_SUCCESS */ +} +#if 0 +/** + * @brief get_screen + */ +static int get_screen(int argc, char **argv) +{ + ICO_DBG("ENTER get_screen"); + int getscreen; - Evas *evas; - char appid[ICO_UXF_MAX_PROCESS_NAME + 1]; bundle *b; const char *val; - /* get argment */ b = bundle_import_from_argv(argc, argv); getscreen = 0; - sscrntype[0] = 0; - if(b != NULL){ + SscrnType[0] = 0; + if (b != NULL) { val = bundle_get_val(b, "rightoption"); - if (val != NULL) { + if (val != NULL) { if (strcasecmp(val, "-basescreen") == 0) { getscreen = 1; /* get base screen */ - strcpy(sscrntype, "BasicScreen"); - uim_debug("BasicScreen"); + strcpy(SscrnType, "BasicScreen"); + ICO_DBG("BasicScreen"); } else if (strcasecmp(val, "-intscreen") == 0) { getscreen = 2; /* get interrupt screen */ - strcpy(sscrntype, "IntScreen"); + strcpy(SscrnType, "IntScreen"); } else if (strcasecmp(val, "-onscreen") == 0) { getscreen = 3; /* get on screen */ - strcpy(sscrntype, "OnScreen"); + 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"); + ICO_DBG("ico_apf_ecore_init() Error"); ecore_evas_shutdown(); return -1; } @@ -992,150 +1186,76 @@ int main(int argc, char *argv[]) ico_apf_resource_get_int_screen_mode_disp(NULL, 0); } } + ICO_DBG("LEAVE get_screen"); + return 0; +} +#endif - /* 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; - } +int main(int argc, char *argv[]) +{ +// char appid[ICO_UXF_MAX_PROCESS_NAME + 1]; + char appid[256]; + int pid; + app_event_callback_s event_callback; + int result = 0; - 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]); + if (!ecore_evas_init()) { + return EXIT_FAILURE; } - /* draw order line */ - static Evas_Object *ufix_line[MAX_PARA_NUM - 1]; + /* Setting the log output */ +// if (ico_apf_get_app_id(0, appid) == ICO_APP_CTL_E_NONE) { +// ico_apf_log_open(appid); +// } - 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]); + /* Setting the log output */ + memset(appid, 0, sizeof(appid)); + pid = getpid(); + if (aul_app_get_appid_bypid(pid, appid, sizeof(appid)) == AUL_R_OK) { + ico_log_open(appid); } - - /* 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); + else { + ico_log_open("org.tizen.ico.app-vicsample"); } - /* entry of the function event callback Vehicle Information */ - evas_object_event_callback_add(sikaku, EVAS_CALLBACK_MOUSE_DOWN, - _on_mousedown, vic_val_text); + ICO_DBG("ENTER main"); - /* 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(); + /* Read configuration file */ + if (get_config() != 0) { + ICO_DBG("Err get_config"); + return EXIT_FAILURE; + } - ecore_evas_free(ee); + /* get argument */ +// if (get_screen(argc, argv) != 0) { +// ICO_DBG("Err get_argument"); +// return EXIT_FAILURE; +// } + + /* set callback fanc */ + event_callback.create = app_create; + event_callback.terminate = app_terminate; + event_callback.pause = NULL; + event_callback.resume = NULL; + event_callback.service = NULL; + event_callback.low_memory = NULL; + event_callback.low_battery = NULL; + event_callback.device_orientation = NULL; + event_callback.language_changed = NULL; + event_callback.region_format_changed = NULL; + + memset(&Ad, 0x0, sizeof(struct appdata_t)); + + result = app_efl_main(&argc, &argv, &event_callback, &Ad); + +// ico_apf_ecore_term(); ecore_evas_shutdown(); if (NULL != g_connection) { dbus_connection_unref(g_connection); g_connection = NULL; } - uim_debug("main EXIT"); - return 0; + ICO_DBG("EXIT main"); - 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; + return result; } diff --git a/ico-app-vicsample/vicinfo_bg.png b/ico-app-vicsample/vicinfo_bg.png Binary files differnew file mode 100755 index 0000000..2bcfec6 --- /dev/null +++ b/ico-app-vicsample/vicinfo_bg.png diff --git a/ico-app-vicsample/vicsample_config.txt b/ico-app-vicsample/vicsample_config.txt index 312e615..88e8fb5 100644 --- a/ico-app-vicsample/vicsample_config.txt +++ b/ico-app-vicsample/vicsample_config.txt @@ -1,15 +1,21 @@ # 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 +#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 + Altitude /org/automotive/runningstatus/Location org.automotive.Location Altitude + Direction /org/automotive/runningstatus/Location org.automotive.Location Direction + VehicleSpeed /org/automotive/runningstatus/VehicleSpeed org.automotive.VehicleSpeed VehicleSpeed + EngineSpeed /org/automotive/runningstatus/EngineSpeed org.automotive.EngineSpeed EngineSpeed + ShiftPosition /org/automotive/runningstatus/Transmission org.automotive.Transmission ShiftPosition + GearPosition /org/automotive/runningstatus/Transmission org.automotive.Transmission GearPosition + Mode /org/automotive/runningstatus/Transmission org.automotive.Transmission Mode + BrakeSignal /org/automotive/runningstatus/WheelBrake org.automotive.WheelBrake Engaged + AccelerationX /org/automotive/runningstatus/Acceleration org.automotive.Acceleration X + AccelerationY /org/automotive/custom/AccelerataionY org.automotive.AccelerataionY AccelerataionY + AccelerationZ /org/automotive/runningstatus/Acceleration org.automotive.Acceleration Z + LeftTurn /org/automotive/runningstatus/LightStatus org.automotive.LightStatus LeftTurn + RightTurn /org/automotive/runningstatus/LightStatus org.automotive.LightStatus RightTurn +# WheelBrakePressure /org/automotive/custom/WheelBrakePressure org.automotive.WheelBrakePressure WheelBrakePressure + ExteriorBrightness /org/automotive/environment/ExteriorBrightness org.automotive.ExteriorBrightness ExteriorBrightness + diff --git a/packaging/ico-uxf-HomeScreen-sample-app.spec b/packaging/ico-uxf-HomeScreen-sample-app.spec deleted file mode 100644 index 791bc7e..0000000 --- a/packaging/ico-uxf-HomeScreen-sample-app.spec +++ /dev/null @@ -1,211 +0,0 @@ -Name: ico-uxf-HomeScreen-sample-app -Summary: HomeScreen sample application -Version: 0.0.11 -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 >= 0.3.06 -Requires: weston >= 1.0 -Requires: ico-uxf-weston-plugin -Requires: ico-uxf-HomeScreen >= 0.3.06 -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 >= 0.3.06 -Requires: ico-uxf-weston-plugin -Requires: ico-uxf-HomeScreen >= 0.3.06 -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 >= 0.3.06 -BuildRequires: edje-tools -#BuildRequires: pkgconfig(opencv) -Requires: ico-uxf-weston-plugin -Requires: ico-uxf-HomeScreen >= 0.3.06 -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 - -#DemoMeterApp.wgt DemoAudioApp.wgt -Requires: pkgmgr - -%description -HomeScreen sample application - -%prep -%setup -q -n %{name}-%{version} - -%build -autoreconf --install - -%configure -make %{?_smp_mflags} -cd ico-app-samplenavi/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 ico-app-soundsample/soundsample_config.txt %{buildroot}%{sound_PREFIX}/res/ -install -m 0644 ico-app-soundsample/org.tizen.ico.app-soundsample.png %{buildroot}%{sound_PREFIX}/res/icons/default/small/ -install -m 0644 ico-app-soundsample/musicbox.wav %{buildroot}%{sound_PREFIX}/sounds/ -install -m 0644 ico-app-soundsample/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 ico-app-vicsample/vicsample_config.txt %{buildroot}%{vic_PREFIX}/res/ -install -m 0644 ico-app-vicsample/org.tizen.ico.app-vicsample.png %{buildroot}%{vic_PREFIX}/res/icons/default/small/ -install -m 0644 ico-app-vicsample/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 ico-app-samplenavi/data/*.edj %{buildroot}%{navi_PREFIX}/data/ -install -m 0644 ico-app-samplenavi/org.tizen.ico.app-samplenavi.desktop %{buildroot}/opt/share/applications/ -cp -r ico-app-samplenavi/res %{buildroot}%{navi_PREFIX}/. - -# configurations(DemoMeterApp.wgt DemoAudioApp.wgt) -mkdir -p %{buildroot}/tmp/ -install -m 0644 wgt/*.wgt %{buildroot}/tmp/ - -%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 - -%post -# install cmd(DemoMeterApp.wgt DemoAudioApp.wgt) -pkgcmd -i -t wgt -p /tmp/DemoMeterApp.wgt -q -pkgcmd -i -t wgt -p /tmp/DemoAudioApp.wgt -q - -# init db -rm -rf /opt/dbspace/.app_info* -/usr/bin/ail_initdb - -rm -f /tmp/DemoMeterApp.wgt -rm -f /tmp/DemoAudioApp.wgt - -%postun -# uninstall cmd(DemoMeterApp.wgt DemoAudioApp.wgt) -pkgcmd -u -t wgt -n AKsMREAjt9 -q -pkgcmd -u -t wgt -n d41dRLC2Qs -q - -# init db -rm -rf /opt/dbspace/.app_info* -/usr/bin/ail_initdb diff --git a/packaging/ico-uxf-HomeScreen-sample-app.changes b/packaging/ico-uxf-homescreen-sample-apps.changes index 158966d..ec2a870 100644 --- a/packaging/ico-uxf-HomeScreen-sample-app.changes +++ b/packaging/ico-uxf-homescreen-sample-apps.changes @@ -1,3 +1,18 @@ +* Wed Oct 02 2013 Shibata Makoto <shibata@mac.tec.toyota.co.jp> accepted/2.0alpha-wayland/20130612.174822@212f3fb +- 0.9.0 release. +-- leave application vicsample, soundsamples. remove other applications. +-- Corresponding to Tizen IVI 3.0 + changed the installation path. + changed to xml from the desktop file in the package information. + changed to a common library of the log file output + +- 0.0.12 release +-ico-app-vicsample +-- Elementary is used for a display. + +-ico-app-soundsample +-- Elementary is used for a display. + * Tue Jun 11 2013 Shibata Makoto <shibata@mac.tec.toyota.co.jp> accepted/2.0alpha-wayland/20130606.173127@1f825f5 - 0.0.11 release -ico-app-samplenavi @@ -11,10 +26,10 @@ -Package whole -Directory composition change of a package. - The following directory is created and a file is moved. - ico-app-samplenavi/ - ico-app-vicsample/ - ico-app-soundsample/ +The following directory is created and a file is moved. +ico-app-samplenavi/ +ico-app-vicsample/ +ico-app-soundsample/ * Fri May 24 2013 Shibata Makoto <shibata@mac.tec.toyota.co.jp> accepted/2.0alpha-wayland/20130520.103636@6271b38 - ico-app-samplenavi @@ -86,9 +101,7 @@ * Fri Apr 26 19:27:12 UTC 2013 - tracy.graydon@intel.com -- Setting up 2.0alpha-wayland branch (master not used in IVI) +- Setting up 2.0alpha-wayland branch (master not used in IVI) * Fri Apr 26 2013 Shibata Makoto <shibata@mac.tec.toyota.co.jp> c744832 - Import initial. - - diff --git a/packaging/ico-uxf-homescreen-sample-apps.spec b/packaging/ico-uxf-homescreen-sample-apps.spec new file mode 100644 index 0000000..e4bcb83 --- /dev/null +++ b/packaging/ico-uxf-homescreen-sample-apps.spec @@ -0,0 +1,143 @@ +Name: ico-uxf-homescreen-sample-apps +Summary: HomeScreen sample application +Version: 0.9.0 +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(dbus-1) +BuildRequires: pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(aul) +BuildRequires: pkgconfig(bundle) +BuildRequires: pkgconfig(ail) +BuildRequires: libpulse-devel +BuildRequires: ico-uxf-weston-plugin-devel +BuildRequires: ico-uxf-homescreen-system-controller-devel >= 0.9.01 +BuildRequires: ico-uxf-utilities-devel +BuildRequires: pkgconfig(capi-appfw-application) +Requires: weston >= 1.2 +Requires: ico-uxf-weston-plugin +Requires: ico-uxf-homescreen >= 0.9.01 +Requires: ecore +Requires: elementary +Requires: evas +Requires: glib2 +Requires: libpulse +Requires: capi-appfw-application +Requires: ico-uxf-utilities + +#ico-app-vicsample +BuildRequires: pkgconfig(evas) +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(ecore-wayland) +BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(aul) +BuildRequires: ico-uxf-weston-plugin-devel +BuildRequires: ico-uxf-homescreen-system-controller-devel >= 0.9.01 +BuildRequires: ico-uxf-utilities-devel +BuildRequires: pkgconfig(capi-appfw-application) +Requires: weston >= 1.2 +Requires: ico-uxf-weston-plugin +Requires: ico-uxf-homescreen >= 0.9.01 +Requires: ecore +Requires: elementary +Requires: evas +Requires: dbus +Requires: dbus-glib +Requires: automotive-message-broker +Requires: capi-appfw-application +Requires: ico-uxf-utilities + +%description +HomeScreen sample application + +%prep +%setup -q -n %{name}-%{version} + +%build +autoreconf --install + +%configure +make %{?_smp_mflags} + +%install +rm -rf %{buildroot} +%make_install + +# configurations(ico-app-soundsample) +%define sound_PREFIX /usr/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}%{sound_PREFIX}/res/images/ +mkdir -p %{buildroot}/usr/share/packages/ +install -m 0644 ico-app-soundsample/soundsample_config.txt %{buildroot}%{sound_PREFIX}/res/ +install -m 0644 ico-app-soundsample/sound_bg.png %{buildroot}%{sound_PREFIX}/res/images/ +install -m 0644 ico-app-soundsample/org.tizen.ico.app-soundsample.png %{buildroot}%{sound_PREFIX}/res/icons/default/small/ +install -m 0644 ico-app-soundsample/musicbox.wav %{buildroot}%{sound_PREFIX}/sounds/ +install -m 0644 ico-app-soundsample/org.tizen.ico.app-soundsample.xml %{buildroot}/usr/share/packages/ + +# configurations(ico-app-vicsample) +%define vic_PREFIX /usr/apps/org.tizen.ico.app-vicsample + +mkdir -p %{buildroot}%{vic_PREFIX}/bin/ +mkdir -p %{buildroot}%{vic_PREFIX}/res/icons/default/small/ +mkdir -p %{buildroot}%{vic_PREFIX}/res/images/ +mkdir -p %{buildroot}/usr/share/packages/ +install -m 0644 ico-app-vicsample/vicsample_config.txt %{buildroot}%{vic_PREFIX}/res/ +install -m 0644 ico-app-vicsample/vicinfo_bg.png %{buildroot}%{vic_PREFIX}/res/images/ +install -m 0644 ico-app-vicsample/org.tizen.ico.app-vicsample.png %{buildroot}%{vic_PREFIX}/res/icons/default/small/ +install -m 0644 ico-app-vicsample/org.tizen.ico.app-vicsample.xml %{buildroot}/usr/share/packages/ + +%files +%defattr(-,root,root,-) +# files(ico-app-soundsample) +%{sound_PREFIX}/bin/ico-app-soundsample +%{sound_PREFIX}/res/soundsample_config.txt +%{sound_PREFIX}/res/images/sound_bg.png +%{sound_PREFIX}/res/icons/default/small/org.tizen.ico.app-soundsample.png +%{sound_PREFIX}/sounds/musicbox.wav +/usr/share/packages/org.tizen.ico.app-soundsample.xml + +# files(ico-app-vicsample) +%{vic_PREFIX}/bin/ico-app-vicsample +%{vic_PREFIX}/res/vicsample_config.txt +%{vic_PREFIX}/res/images/vicinfo_bg.png +%{vic_PREFIX}/res/icons/default/small/org.tizen.ico.app-vicsample.png +/usr/share/packages/org.tizen.ico.app-vicsample.xml + +%post +/sbin/ldconfig + +# init db +cd /opt/dbspace/ +rm -f .app_info.db .app_info.db-journal .pkgmgr_parser.db .pkgmgr_parser.db-journal .rua.db .rua.db-journal +/usr/bin/pkg_initdb +/usr/bin/ail_initdb + +%postun +/sbin/ldconfig + +# init db +rm -f /usr/share/applications/org.tizen.ico.app-soundsample.desktop +rm -rf /usr/apps/org.tizen.ico.app-soundsample/ +rm -f /usr/share/applications/org.tizen.ico.app-vicsample.desktop +rm -rf /usr/apps/org.tizen.ico.app-vicsample/ + +cd /opt/dbspace/ +rm -f .app_info.db .app_info.db-journal .pkgmgr_parser.db .pkgmgr_parser.db-journal .rua.db .rua.db-journal +/usr/bin/pkg_initdb +/usr/bin/ail_initdb diff --git a/wgt/DemoAudioApp.wgt b/wgt/DemoAudioApp.wgt Binary files differdeleted file mode 100644 index 2e2fe00..0000000 --- a/wgt/DemoAudioApp.wgt +++ /dev/null diff --git a/wgt/DemoMeterApp.wgt b/wgt/DemoMeterApp.wgt Binary files differdeleted file mode 100644 index 2c60f84..0000000 --- a/wgt/DemoMeterApp.wgt +++ /dev/null |